Merge pull request #8662 from poettering/rfkill-enxio
handle ENODEV and ENXIO gracefully in rfkill
This commit is contained in:
commit
1b836bed2c
|
@ -49,12 +49,12 @@ typedef struct write_queue_item {
|
|||
int state;
|
||||
} write_queue_item;
|
||||
|
||||
static void write_queue_item_free(struct write_queue_item *item)
|
||||
{
|
||||
assert(item);
|
||||
static struct write_queue_item* write_queue_item_free(struct write_queue_item *item) {
|
||||
if (!item)
|
||||
return NULL;
|
||||
|
||||
free(item->file);
|
||||
free(item);
|
||||
return mfree(item);
|
||||
}
|
||||
|
||||
static const char* const rfkill_type_table[NUM_RFKILL_TYPES] = {
|
||||
|
@ -89,8 +89,8 @@ static int find_device(
|
|||
|
||||
device = udev_device_new_from_subsystem_sysname(udev, "rfkill", sysname);
|
||||
if (!device)
|
||||
return log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_ERR, errno,
|
||||
"Failed to open device %s: %m", sysname);
|
||||
return log_full_errno(IN_SET(errno, ENOENT, ENXIO, ENODEV) ? LOG_DEBUG : LOG_ERR, errno,
|
||||
"Failed to open device '%s': %m", sysname);
|
||||
|
||||
name = udev_device_get_sysattr_value(device, "name");
|
||||
if (!name) {
|
||||
|
@ -148,8 +148,8 @@ static int wait_for_initialized(
|
|||
/* Check again, maybe things changed */
|
||||
d = udev_device_new_from_subsystem_sysname(udev, "rfkill", sysname);
|
||||
if (!d)
|
||||
return log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_ERR, errno,
|
||||
"Failed to open device %s: %m", sysname);
|
||||
return log_full_errno(IN_SET(errno, ENOENT, ENXIO, ENODEV) ? LOG_DEBUG : LOG_ERR, errno,
|
||||
"Failed to open device '%s': %m", sysname);
|
||||
|
||||
if (udev_device_get_is_initialized(d) != 0) {
|
||||
*ret = d;
|
||||
|
@ -313,6 +313,7 @@ static int save_state_queue(
|
|||
r = determine_state_file(udev, event, &state_file);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
save_state_queue_remove(write_queue, event->idx, state_file);
|
||||
|
||||
item = new0(struct write_queue_item, 1);
|
||||
|
|
Loading…
Reference in a new issue