firewire: add minor number range check to fw_device_init()
[~shefty/rdma-dev.git] / drivers / firewire / core-device.c
index 3873d535b28d5a5a930566333cbd587c2196d7f1..af3e8aa5eedc90b90bf572a222536100987c77cc 100644 (file)
@@ -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)