firewire: add minor number range check to fw_device_init()
fw_device_init() didn't check whether the allocated minor number isn't too large. Fail if it goes overflows MINORBITS. Signed-off-by: Tejun Heo <tj@kernel.org> Suggested-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
69ee266b4c
Коммит
3bec60d511
|
@ -1020,6 +1020,10 @@ static void fw_device_init(struct work_struct *work)
|
|||
ret = idr_pre_get(&fw_device_idr, GFP_KERNEL) ?
|
||||
idr_get_new(&fw_device_idr, device, &minor) :
|
||||
-ENOMEM;
|
||||
if (minor >= 1 << MINORBITS) {
|
||||
idr_remove(&fw_device_idr, minor);
|
||||
minor = -ENOSPC;
|
||||
}
|
||||
up_write(&fw_device_rwsem);
|
||||
|
||||
if (ret < 0)
|
||||
|
|
Загрузка…
Ссылка в новой задаче