Convert to the much saner new idr interface. Only compile tested.
Signed-off-by: Tejun Heo <t...@kernel.org> Cc: Stefan Richter <stef...@s5r6.in-berlin.de> Cc: linux1394-de...@lists.sourceforge.net --- This patch depends on an earlier idr changes and I think it would be best to route these together through -mm. Please holler if there's any objection. Thanks. drivers/firewire/core-cdev.c | 16 +++++++--------- drivers/firewire/core-device.c | 5 ++--- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c index 68c3138..46a1f88 100644 --- a/drivers/firewire/core-cdev.c +++ b/drivers/firewire/core-cdev.c @@ -490,24 +490,22 @@ static int add_client_resource(struct client *client, unsigned long flags; int ret; - retry: - if (idr_pre_get(&client->resource_idr, gfp_mask) == 0) - return -ENOMEM; - + idr_preload(gfp_mask); spin_lock_irqsave(&client->lock, flags); + if (client->in_shutdown) ret = -ECANCELED; else - ret = idr_get_new(&client->resource_idr, resource, - &resource->handle); + ret = idr_alloc(&client->resource_idr, resource, 0, 0, + GFP_NOWAIT); if (ret >= 0) { + resource->handle = ret; client_get(client); schedule_if_iso_resource(resource); } - spin_unlock_irqrestore(&client->lock, flags); - if (ret == -EAGAIN) - goto retry; + spin_unlock_irqrestore(&client->lock, flags); + idr_preload_end(); return ret < 0 ? ret : 0; } diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c index 3873d53..c137de6 100644 --- a/drivers/firewire/core-device.c +++ b/drivers/firewire/core-device.c @@ -1017,13 +1017,12 @@ static void fw_device_init(struct work_struct *work) fw_device_get(device); down_write(&fw_device_rwsem); - ret = idr_pre_get(&fw_device_idr, GFP_KERNEL) ? - idr_get_new(&fw_device_idr, device, &minor) : - -ENOMEM; + ret = idr_alloc(&fw_device_idr, device, 0, 0, GFP_KERNEL); up_write(&fw_device_rwsem); if (ret < 0) goto error; + minor = ret; device->device.bus = &fw_bus_type; device->device.type = &fw_device_type; -- 1.8.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/