Messages in this thread Patch in this message | | | From | Hans-Jürgen Koch <> | Subject | Re: Flaws with "UIO: Add the User IO core code" (with patch) | Date | Sat, 28 Apr 2007 23:03:06 +0200 |
| |
Am Samstag 28 April 2007 22:24 schrieb Alan Cox: > > > AFAIK we don't currently have any platform that runs binaries with > > > different sizes of "int" but this is a) an unsigned value anyway, and b) > > > should be a fixed type (eg u32) > > > > I reviewed the code once more and find it OK. There is only one legal > > value for the parameter "count" of uio_read(), and that's sizeof(int). > > If you are a box with multiple supported binary types how big is an > "int". We use explicit sizes to ensure that uio_read() will work when/if > we get platforms which support binaries with differing ideas of the size > of "int". Thus it should use s32 or s64 or similar.
Here's a fix to that effect:
Index: linux-2.6.22-rc/drivers/uio/uio.c =================================================================== --- linux-2.6.22-rc.orig/drivers/uio/uio.c 2007-04-28 22:46:34.000000000 +0200 +++ linux-2.6.22-rc/drivers/uio/uio.c 2007-04-28 22:59:40.000000000 +0200 @@ -264,7 +264,7 @@ struct uio_listener { struct uio_device *dev; - int event_count; + s32 event_count; }; static int uio_open(struct inode *inode, struct file *filep) @@ -345,12 +345,12 @@ struct uio_device *idev = listener->dev; DECLARE_WAITQUEUE(wait, current); ssize_t retval; - int event_count; + s32 event_count; if (idev->info->irq == UIO_IRQ_NONE) return -EIO; - if (count != sizeof(int)) + if (count != sizeof(s32)) return -EINVAL; add_wait_queue(&idev->wait, &wait);
Thanks, Hans - 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/
| |