Commit 7b51f478 authored by Tejun Heo's avatar Tejun Heo Committed by Linus Torvalds
Browse files

memstick: convert to idr_alloc()



Convert to the much saner new idr interface.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Cc: Alex Dubov <oakad@yahoo.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c9d76be6
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -512,18 +512,17 @@ int memstick_add_host(struct memstick_host *host)
{
	int rc;

	while (1) {
		if (!idr_pre_get(&memstick_host_idr, GFP_KERNEL))
			return -ENOMEM;

	idr_preload(GFP_KERNEL);
	spin_lock(&memstick_host_lock);
		rc = idr_get_new(&memstick_host_idr, host, &host->id);

	rc = idr_alloc(&memstick_host_idr, host, 0, 0, GFP_NOWAIT);
	if (rc >= 0)
		host->id = rc;

	spin_unlock(&memstick_host_lock);
		if (!rc)
			break;
		else if (rc != -EAGAIN)
	idr_preload_end();
	if (rc < 0)
		return rc;
	}

	dev_set_name(&host->dev, "memstick%u", host->id);

+3 −14
Original line number Diff line number Diff line
@@ -1213,21 +1213,10 @@ static int mspro_block_init_disk(struct memstick_dev *card)
	msb->page_size = be16_to_cpu(sys_info->unit_size);

	mutex_lock(&mspro_block_disk_lock);
	if (!idr_pre_get(&mspro_block_disk_idr, GFP_KERNEL)) {
	disk_id = idr_alloc(&mspro_block_disk_idr, card, 0, 256, GFP_KERNEL);
	mutex_unlock(&mspro_block_disk_lock);
		return -ENOMEM;
	}

	rc = idr_get_new(&mspro_block_disk_idr, card, &disk_id);
	mutex_unlock(&mspro_block_disk_lock);

	if (rc)
		return rc;

	if ((disk_id << MSPRO_BLOCK_PART_SHIFT) > 255) {
		rc = -ENOSPC;
		goto out_release_id;
	}
	if (disk_id < 0)
		return disk_id;

	msb->disk = alloc_disk(1 << MSPRO_BLOCK_PART_SHIFT);
	if (!msb->disk) {