lkml.org 
[lkml]   [2005]   [May]   [17]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateTue, 17 May 2005 09:03:05 +0200
FromWilly Tarreau <>
SubjectRe: [PATCH] Fix root hole in raw device
On Tue, May 17, 2005 at 05:57:48AM +0100, Al Viro wrote:
> On Mon, May 16, 2005 at 09:37:48PM -0700, Greg KH wrote:
> > @@ -122,7 +122,7 @@
> >  {
> >  	struct block_device *bdev = filp->private_data;
> > 
> > -	return ioctl_by_bdev(bdev, command, arg);
> > +	return blkdev_ioctl(bdev->bd_inode, filp, command, arg);
> >  }
> 
> That is not quite correct.  You are passing very odd filp to ->ioctl()...
> Old variant gave NULL, which is also not too nice, though.

2.4 already does it in a cleaner manner :

        err = -EINVAL;
        if (b && b->bd_inode && b->bd_op && b->bd_op->ioctl) {
                err = b->bd_op->ioctl(b->bd_inode, NULL, command, arg);
        }
        return err;
So may be something like this would be better (hand-written) :

@@ -122,7 +122,9 @@
 {
 	struct block_device *bdev = filp->private_data;
 	int err = -EINVAL;
-	return ioctl_by_bdev(bdev, command, arg);
+	if (bdev && bdev->bd_inode)
+		err = blkdev_ioctl(bdev->bd_inode, filp, command, arg);
+	return err;
 }
Willy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-05-17 09:23    [from the cache]
©2003-2008