From a680beb2fe912aadcddd3855d130e10a36e574d7 Mon Sep 17 00:00:00 2001 From: Alexey Bogdanenko Date: Tue, 11 Dec 2018 16:55:34 +0300 Subject: [PATCH 1/2] udev-test: add message to show why test-udev failed Before: Assertion 'mknod(devname, mode, devnum) == 0' failed at ../src/test/test-udev.c:116, function run(). Aborting. Assertion 'unlink(devname) == 0' failed at ../src/test/test-udev.c:118, function run(). Aborting. After: mknod() failed for '/dev/sda': Operation not permitted unlink('/dev/sda') failed: No such file or directory --- src/test/test-udev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/test-udev.c b/src/test/test-udev.c index b5d3eb7bc4..281dbb51f2 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -113,9 +113,11 @@ static int run(int argc, char *argv[]) { (void) mkdir_parents_label(devname, 0755); (void) sd_device_get_devnum(dev, &devnum); - assert_se(mknod(devname, mode, devnum) == 0); + if (mknod(devname, mode, devnum) < 0) + return log_error_errno(errno, "mknod() failed for '%s': %m", devname); } else { - assert_se(unlink(devname) == 0); + if (unlink(devname) < 0) + return log_error_errno(errno, "unlink('%s') failed: %m", devname); (void) rmdir_parents(devname, "/"); } } From dbfbc6c4e34366033cb340e8b0c3cbca683ff6f5 Mon Sep 17 00:00:00 2001 From: Alexey Bogdanenko Date: Tue, 11 Dec 2018 16:55:34 +0300 Subject: [PATCH 2/2] udev-test: check if permitted to create block device nodes --- test/udev-test.pl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/udev-test.pl b/test/udev-test.pl index eb76ebd72e..957cda541c 100755 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -1554,6 +1554,14 @@ sub udev_setup { return 0; } + # check if we are permitted to create block device nodes + my $block_device_filename = $udev_dev . "/sda"; + if (system("mknod", $block_device_filename, "b", "8", "0")) { + warn "unable to create $block_device_filename"; + return 0; + } + unlink $block_device_filename; + system("cp", "-r", "test/sys/", $udev_sys) && die "unable to copy test/sys"; system("rm", "-rf", "$udev_run");