Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dca: convert to idr_alloc()

Convert to the much saner new idr interface.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
Cc: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Tejun Heo and committed by
Linus Torvalds
615f2e5c 56de2102

+10 -13
+10 -13
drivers/dca/dca-sysfs.c
··· 53 53 int dca_sysfs_add_provider(struct dca_provider *dca, struct device *dev) 54 54 { 55 55 struct device *cd; 56 - int err = 0; 56 + int ret; 57 57 58 - idr_try_again: 59 - if (!idr_pre_get(&dca_idr, GFP_KERNEL)) 60 - return -ENOMEM; 58 + idr_preload(GFP_KERNEL); 61 59 spin_lock(&dca_idr_lock); 62 - err = idr_get_new(&dca_idr, dca, &dca->id); 60 + 61 + ret = idr_alloc(&dca_idr, dca, 0, 0, GFP_NOWAIT); 62 + if (ret >= 0) 63 + dca->id = ret; 64 + 63 65 spin_unlock(&dca_idr_lock); 64 - switch (err) { 65 - case 0: 66 - break; 67 - case -EAGAIN: 68 - goto idr_try_again; 69 - default: 70 - return err; 71 - } 66 + idr_preload_end(); 67 + if (ret < 0) 68 + return ret; 72 69 73 70 cd = device_create(dca_class, dev, MKDEV(0, 0), NULL, "dca%d", dca->id); 74 71 if (IS_ERR(cd)) {