Messages in this thread Patch in this message | | | Date | Sun, 27 Mar 2011 15:22:08 +0800 | From | zhdxzx@sina ... | Subject | [PATCH] uio: fix allocating minor id for uio device |
| |
The number of uio devices that could be used should be less than UIO_MAX_DEVICES by design, and this work guards any cases in which id more than UIO_MAX_DEVICES is utilized.
Signed-off-by: Hillf Danton <dhillf@gmail.com> ---
--- a/drivers/uio/uio.c 2011-01-05 08:50:20.000000000 +0800 +++ b/drivers/uio/uio.c 2011-03-27 15:05:26.000000000 +0800 @@ -381,7 +381,13 @@ static int uio_get_minor(struct uio_devi retval = -ENOMEM; goto exit; } - idev->minor = id & MAX_ID_MASK; + if (id < UIO_MAX_DEVICES) + idev->minor = id; + else { + printk(KERN_ERR "uio: too many uio devices\n"); + retval = -EINVAL; + idr_remove(&uio_idr, id); + } exit: mutex_unlock(&minor_lock); return retval; | |