From: Sami Kerola Date: Sat, 31 Oct 2015 18:34:36 +0000 (+0000) Subject: fdformat: fix block device open race X-Git-Tag: v2.28-rc1~248^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5320b483c0a25be1481df221665f4d18add4a1a;p=thirdparty%2Futil-linux.git fdformat: fix block device open race This fix makes fdformat also to detect if block device is busy, and warn if the device is misaligned. Signed-off-by: Sami Kerola --- diff --git a/disk-utils/fdformat.c b/disk-utils/fdformat.c index e7d43da8f6..66e1bb90d6 100644 --- a/disk-utils/fdformat.c +++ b/disk-utils/fdformat.c @@ -12,6 +12,7 @@ #include #include "c.h" +#include "blkdev.h" #include "strutils.h" #include "closestream.h" #include "nls.h" @@ -221,10 +222,7 @@ int main(int argc, char **argv) if (!S_ISBLK(st.st_mode)) /* do not test major - perhaps this was an USB floppy */ errx(EXIT_FAILURE, _("%s: not a block device"), argv[0]); - if (access(argv[0], W_OK) < 0) - err(EXIT_FAILURE, _("cannot access file %s"), argv[0]); - - ctrl = open(argv[0], O_RDWR); + ctrl = open_blkdev_or_file(&st, argv[0], O_RDWR); if (ctrl < 0) err(EXIT_FAILURE, _("cannot open %s"), argv[0]); if (ioctl(ctrl, FDGETPRM, (long) ¶m) < 0)