linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] BLKBSZSET ioctl: fixes possibly silent blocksize change failure
@ 2003-07-13  5:18 Lou Langholtz
  0 siblings, 0 replies; only message in thread
From: Lou Langholtz @ 2003-07-13  5:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andrew Morton

[-- Attachment #1: Type: text/plain, Size: 692 bytes --]

Here's a small patch that fixes a failure to return -EINVAL to user when 
calling the BLKBSZSET ioctl and the requested new blocksize passed in is 
smaller than bdev_hardsect_size(bdev). This patch applies against 2.5.75 
through 2.5.75-bk2 (I have not tried applying the patch against any 
other releases). A quick glance at the 2.4.20 code shows the same bug to 
exist their too (as I suspect is in later 2.4 release also). A side 
effect of this patch is that checking is re-ordered between checking if 
busy and whether the new blocksize is valid. Programs expecting this 
ioctl to validate the new size before checking if busy would need to be 
updated to handle the new checking order.

[-- Attachment #2: blocksize.diff --]
[-- Type: text/plain, Size: 668 bytes --]

diff -urN linux-2.5.75/drivers/block/ioctl.c linux-2.5.75-patched/drivers/block/ioctl.c
--- linux-2.5.75/drivers/block/ioctl.c	2003-07-10 14:04:46.000000000 -0600
+++ linux-2.5.75-patched/drivers/block/ioctl.c	2003-07-12 16:35:27.421331789 -0600
@@ -166,13 +166,11 @@
 			return -EINVAL;
 		if (get_user(n, (int *) arg))
 			return -EFAULT;
-		if (n > PAGE_SIZE || n < 512 || (n & (n - 1)))
-			return -EINVAL;
 		if (bd_claim(bdev, &holder) < 0)
 			return -EBUSY;
-		set_blocksize(bdev, n);
+		ret = set_blocksize(bdev, n);
 		bd_release(bdev);
-		return 0;
+		return ret;
 	case BLKPG:
 		return blkpg_ioctl(bdev, (struct blkpg_ioctl_arg *) arg);
 	case BLKRRPART:

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-07-13  5:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-13  5:18 [PATCH] BLKBSZSET ioctl: fixes possibly silent blocksize change failure Lou Langholtz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).