static struct crypt_device *_context = NULL;
/* Compatibility for old device-mapper without udev support */
-#ifndef HAVE_DM_TASK_SET_COOKIE
-#define CRYPT_TEMP_UDEV_FLAGS 0
-static int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags) { return 0; }
-static int dm_udev_wait(uint32_t cookie) { return 0; };
-#else
+#if HAVE_DECL_DM_UDEV_DISABLE_DISK_RULES_FLAG
#define CRYPT_TEMP_UDEV_FLAGS DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG | \
DM_UDEV_DISABLE_DISK_RULES_FLAG | \
DM_UDEV_DISABLE_OTHER_RULES_FLAG
+#define _dm_task_set_cookie dm_task_set_cookie
+#define _dm_udev_wait dm_udev_wait
+#else
+#define CRYPT_TEMP_UDEV_FLAGS 0
+static int _dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags) { return 0; }
+static int _dm_udev_wait(uint32_t cookie) { return 0; };
#endif
static int _dm_use_udev()
{
uint32_t major, minor;
dev_t dev;
- char *result, buf[PATH_MAX + 1];
+ char *result = NULL, buf[PATH_MAX + 1];
if (sscanf(dev_id, "%" PRIu32 ":%" PRIu32, &major, &minor) != 2)
return NULL;
strncpy(buf, DEVICE_DIR, PATH_MAX);
result = __lookup_dev(buf, dev, 0, 4);
- /* If not found, return major:minor */
- return result ?: strdup(dev_id);
+ /* If not found, return NULL */
+ return result;
}
static int _dev_read_ahead(const char *dev, uint32_t *read_ahead)
if (name && !dm_task_set_name(dmt, name))
goto out;
- if (udev_wait && !dm_task_set_cookie(dmt, &cookie, 0))
+ if (udev_wait && !_dm_task_set_cookie(dmt, &cookie, 0))
goto out;
r = dm_task_run(dmt);
if (udev_wait)
- (void)dm_udev_wait(cookie);
+ (void)_dm_udev_wait(cookie);
out:
dm_task_destroy(dmt);
if (!dm_task_set_uuid(dmt, dev_uuid))
goto out_no_removal;
- if (_dm_use_udev() && !dm_task_set_cookie(dmt, &cookie, udev_flags))
+ if (_dm_use_udev() && !_dm_task_set_cookie(dmt, &cookie, udev_flags))
goto out_no_removal;
}
goto out;
if (uuid && !dm_task_set_uuid(dmt, dev_uuid))
goto out;
- if (_dm_use_udev() && !dm_task_set_cookie(dmt, &cookie, udev_flags))
+ if (_dm_use_udev() && !_dm_task_set_cookie(dmt, &cookie, udev_flags))
goto out;
if (!dm_task_run(dmt))
goto out;
r = 0;
out:
if (_dm_use_udev()) {
- (void)dm_udev_wait(cookie);
+ (void)_dm_udev_wait(cookie);
cookie = 0;
}
out_no_removal:
if (cookie && _dm_use_udev())
- (void)dm_udev_wait(cookie);
+ (void)_dm_udev_wait(cookie);
if (params)
safe_free(params);