[PATCH] check the return value of __copy_to_user in drivers/pcmcia/ds.c::ds_ioctl and return -EFAULT if it fails

Jesper Juhl juhl-lkml at dif.dk
Wed Oct 6 16:25:36 EDT 2004


On Wed, 6 Oct 2004, Christoph Hellwig wrote:

> On Wed, Oct 06, 2004 at 12:21:58AM +0200, Jesper Juhl wrote:
> > 
> >   CC      drivers/pcmcia/ds.o
> > include/asm/uaccess.h: In function `ds_ioctl':
> > drivers/pcmcia/ds.c:1049: warning: ignoring return value of `__copy_to_user', declared with attribute warn_unused_result
> > 
> > Patch adds a check of the return value and returns -EFAULT if 
> > __copy_to_user fails.
> 
> I think this function should use the non-__ prefix version 

Sounds resonable to me.


>and remove access_ok
> again
> 
Actually I see no access_ok there, there's not one single call to that 
function in this file (2.6.9-rc3-bk5).

How about the following patch instead? 

Signed-off-by: Jesper Juhl <juhl-lkml at dif.dk>

diff -up linux-2.6.9-rc3-bk5-orig/drivers/pcmcia/ds.c linux-2.6.9-rc3-bk5/drivers/pcmcia/ds.c
--- linux-2.6.9-rc3-bk5-orig/drivers/pcmcia/ds.c	2004-10-05 22:07:27.000000000 +0200
+++ linux-2.6.9-rc3-bk5/drivers/pcmcia/ds.c	2004-10-06 22:20:27.000000000 +0200
@@ -1046,7 +1046,11 @@ static int ds_ioctl(struct inode * inode
 	}
     }
 
-    if (cmd & IOC_OUT) __copy_to_user(uarg, (char *)&buf, size);
+    if (cmd & IOC_OUT) {
+        if (copy_to_user(uarg, (char *)&buf, size))
+            err = -EFAULT;
+    }
+
 
     return err;
 } /* ds_ioctl */





More information about the linux-pcmcia mailing list