diff --git a/plugins/thunderbolt-power/fu-plugin-thunderbolt-power.c b/plugins/thunderbolt-power/fu-plugin-thunderbolt-power.c index 75f6757c7..63b038cc0 100644 --- a/plugins/thunderbolt-power/fu-plugin-thunderbolt-power.c +++ b/plugins/thunderbolt-power/fu-plugin-thunderbolt-power.c @@ -187,7 +187,7 @@ fu_plugin_thunderbolt_power_kernel_force_power (FuPlugin *plugin, gboolean enabl return FALSE; } g_debug ("Setting force power to %d using kernel", enable); - fd = g_open (data->force_path, O_WRONLY); + fd = g_open (data->force_path, O_WRONLY, 0); if (fd == -1) { g_set_error (error, FWUPD_ERROR, diff --git a/src/fu-udev-device.c b/src/fu-udev-device.c index b04445237..618f1b607 100644 --- a/src/fu-udev-device.c +++ b/src/fu-udev-device.c @@ -714,15 +714,28 @@ fu_udev_device_open (FuDevice *device, GError **error) /* open device */ if (priv->device_file != NULL) { - priv->fd = g_open (priv->device_file, priv->readonly ? O_RDONLY : O_RDWR); - if (priv->fd < 0) { - g_set_error (error, - G_IO_ERROR, - G_IO_ERROR_FAILED, - "failed to open %s: %s", - priv->device_file, - strerror (errno)); - return FALSE; + if (priv->readonly) { + priv->fd = g_open (priv->device_file, O_RDONLY, 0); + if (priv->fd < 0) { + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "failed to open %s for reading: %s", + priv->device_file, + strerror (errno)); + return FALSE; + } + } else { + priv->fd = g_open (priv->device_file, O_RDWR, 0); + if (priv->fd < 0) { + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "failed to open %s: %s", + priv->device_file, + strerror (errno)); + return FALSE; + } } }