UPSTREAM: Switch lock directory from /var/run to /run/lock
This allows for proper locking between executions of fwupdtool in
Chromium OS minijail environment. It is needed after commit
9cf5f8f7ff7b93473eabf21e8482bb8feace039a was introduced.
(cherry picked from commit a4fbe2a6f4d1e0ed60970b755dad5f033927b900)
BUG=b:187233828
TEST=start fwupdtool-getdevices
Change-Id: I593b32b78758562454aca89080e6005ac38c98a7
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/fwupd/+/2874630
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Benson Leung <bleung@google.com>
Commit-Queue: Daniel Campello <campello@chromium.org>
Commit-Queue: Benson Leung <bleung@google.com>
Tested-by: Daniel Campello <campello@chromium.org>
Auto-Submit: Daniel Campello <campello@chromium.org>
diff --git a/libfwupdplugin/fu-common.c b/libfwupdplugin/fu-common.c
index 2dcabb4..643192f 100644
--- a/libfwupdplugin/fu-common.c
+++ b/libfwupdplugin/fu-common.c
@@ -1253,6 +1253,9 @@
return g_build_filename (tmp, NULL);
basedir = fu_common_get_path (FU_PATH_KIND_LOCALSTATEDIR);
return g_build_filename (basedir, "cache", PACKAGE_NAME, NULL);
+ /* /run/lock */
+ case FU_PATH_KIND_LOCKDIR:
+ return g_strdup ("/run/lock");
case FU_PATH_KIND_OFFLINE_TRIGGER:
tmp = g_getenv ("FWUPD_OFFLINE_TRIGGER");
if (tmp != NULL)
diff --git a/libfwupdplugin/fu-common.h b/libfwupdplugin/fu-common.h
index f84ae51..2f95f0b 100644
--- a/libfwupdplugin/fu-common.h
+++ b/libfwupdplugin/fu-common.h
@@ -61,6 +61,7 @@
* @FU_PATH_KIND_OFFLINE_TRIGGER: The file for the offline trigger (IE /system-update)
* @FU_PATH_KIND_SYSFSDIR_SECURITY: The sysfs security location (IE /sys/kernel/security)
* @FU_PATH_KIND_ACPI_TABLES: The location of the ACPI tables
+ * @FU_PATH_KIND_LOCKDIR: The lock directory (IE /run/lock)
*
* Path types to use when dynamically determining a path at runtime
**/
@@ -81,6 +82,7 @@
FU_PATH_KIND_OFFLINE_TRIGGER,
FU_PATH_KIND_SYSFSDIR_SECURITY,
FU_PATH_KIND_ACPI_TABLES,
+ FU_PATH_KIND_LOCKDIR,
/*< private >*/
FU_PATH_KIND_LAST
} FuPathKind;
diff --git a/src/fu-tool.c b/src/fu-tool.c
index e16ecd4..d652e0a 100644
--- a/src/fu-tool.c
+++ b/src/fu-tool.c
@@ -2840,12 +2840,12 @@
.l_type = F_WRLCK,
.l_whence = SEEK_SET,
};
- g_autofree gchar *localstatedir = NULL;
+ g_autofree gchar *lockdir = NULL;
g_autofree gchar *lockfn = NULL;
/* open file */
- localstatedir = fu_common_get_path (FU_PATH_KIND_LOCALSTATEDIR);
- lockfn = g_build_filename (localstatedir, "run", "fwupdtool", NULL);
+ lockdir = fu_common_get_path (FU_PATH_KIND_LOCKDIR);
+ lockfn = g_build_filename (lockdir, "fwupdtool", NULL);
if (!fu_common_mkdir_parent (lockfn, error))
return FALSE;
priv->lock_fd = g_open (lockfn, O_RDWR | O_CREAT, S_IRWXU);