In i2o_block_ioctl, the parameter arg is declared an unsigned long, but then compared < 0, which is meaningless.
This redefines arg as a long, so that comparison is meaningful.
Thanks to LinuxICC (http://linuxicc.sf.net)
Signed-off-by: Gabriel A. Devenyi <[email protected]>
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index f283b5b..6bd8083 100644
--- a/drivers/message/i2o/i2o_block.c
+++ b/drivers/message/i2o/i2o_block.c
@@ -670,7 +670,7 @@ static int i2o_block_release(struct inod
* Return 0 on success or negative error on failure.
*/
static int i2o_block_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, unsigned long arg)
+ unsigned int cmd, long arg)
{
struct gendisk *disk = inode->i_bdev->bd_disk;
struct i2o_block_device *dev = disk->private_data;
--
Gabriel A. Devenyi
[email protected]
On Sat, Nov 12, 2005 at 04:29:54PM -0500, Gabriel A. Devenyi wrote:
> --- a/drivers/message/i2o/i2o_block.c
> +++ b/drivers/message/i2o/i2o_block.c
> static int i2o_block_ioctl(struct inode *inode, struct file *file,
> - unsigned int cmd, unsigned long arg)
> + unsigned int cmd, long arg)
> {
Don't you see this?
CC drivers/message/i2o/i2o_block.o
drivers/message/i2o/i2o_block.c:961: warning: initialization from incompatible pointer type
->ioctl method takes "unsigned long arg".
On November 12, 2005 17:19, Alexey Dobriyan wrote:
> Don't you see this?
*turns red* I just checked for a compile error, sorry.
> CC drivers/message/i2o/i2o_block.o
> drivers/message/i2o/i2o_block.c:961: warning: initialization from incompatible pointer type
>
> ->ioctl method takes "unsigned long arg".
So should this comparasion arg < 0 simply be removed? Its meaningless if arg is unsigned.
--
Gabriel A. Devenyi
[email protected]