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

staging: iio: convert idr to ida as pointer never provided

Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Jonathan Cameron and committed by
Greg Kroah-Hartman
b156cf70 30295c89

+35 -36
+4 -4
drivers/staging/iio/iio.h
··· 135 135 * physical interrupt lines 136 136 * @dev_info: the iio device for which the is an interrupt line 137 137 * @line_number: associated line number 138 - * @id: idr allocated unique id number 138 + * @id: ida allocated unique id number 139 139 * @irq: associate interrupt number 140 140 * @ev_list: event handler list for associated events 141 141 * @ev_list_lock: ensure only one access to list at a time ··· 302 302 | INDIO_RING_HARDWARE_BUFFER); 303 303 }; 304 304 305 - struct idr; 305 + struct ida; 306 306 307 - int iio_get_new_idr_val(struct idr *this_idr); 308 - void iio_free_idr_val(struct idr *this_idr, int id); 307 + int iio_get_new_ida_val(struct ida *this_ida); 308 + void iio_free_ida_val(struct ida *this_ida, int id); 309 309 #endif /* _INDUSTRIAL_IO_H_ */
+31 -32
drivers/staging/iio/industrialio-core.c
··· 29 29 #define IIO_ID_FORMAT IIO_ID_PREFIX "%d" 30 30 31 31 /* IDR to assign each registered device a unique id*/ 32 - static DEFINE_IDR(iio_idr); 32 + static DEFINE_IDA(iio_ida); 33 33 /* IDR to allocate character device minor numbers */ 34 - static DEFINE_IDR(iio_chrdev_idr); 34 + static DEFINE_IDA(iio_chrdev_ida); 35 35 /* Lock used to protect both of the above */ 36 - static DEFINE_SPINLOCK(iio_idr_lock); 36 + static DEFINE_SPINLOCK(iio_ida_lock); 37 37 38 38 dev_t iio_devt; 39 39 EXPORT_SYMBOL(iio_devt); ··· 367 367 { 368 368 int ret, val; 369 369 370 - idr_again: 371 - if (unlikely(idr_pre_get(&iio_chrdev_idr, GFP_KERNEL) == 0)) 370 + ida_again: 371 + if (unlikely(ida_pre_get(&iio_chrdev_ida, GFP_KERNEL) == 0)) 372 372 return -ENOMEM; 373 - spin_lock(&iio_idr_lock); 374 - ret = idr_get_new(&iio_chrdev_idr, NULL, &val); 375 - spin_unlock(&iio_idr_lock); 373 + spin_lock(&iio_ida_lock); 374 + ret = ida_get_new(&iio_chrdev_ida, &val); 375 + spin_unlock(&iio_ida_lock); 376 376 if (unlikely(ret == -EAGAIN)) 377 - goto idr_again; 377 + goto ida_again; 378 378 else if (unlikely(ret)) 379 379 return ret; 380 380 if (val > IIO_DEV_MAX) ··· 384 384 385 385 void iio_device_free_chrdev_minor(int val) 386 386 { 387 - spin_lock(&iio_idr_lock); 388 - idr_remove(&iio_chrdev_idr, val); 389 - spin_unlock(&iio_idr_lock); 387 + spin_lock(&iio_ida_lock); 388 + ida_remove(&iio_chrdev_ida, val); 389 + spin_unlock(&iio_ida_lock); 390 390 } 391 391 392 392 int iio_setup_ev_int(struct iio_event_interface *ev_int, ··· 517 517 } 518 518 519 519 /* Return a negative errno on failure */ 520 - int iio_get_new_idr_val(struct idr *this_idr) 520 + int iio_get_new_ida_val(struct ida *this_ida) 521 521 { 522 522 int ret; 523 523 int val; 524 524 525 - idr_again: 526 - if (unlikely(idr_pre_get(this_idr, GFP_KERNEL) == 0)) 525 + ida_again: 526 + if (unlikely(ida_pre_get(this_ida, GFP_KERNEL) == 0)) 527 527 return -ENOMEM; 528 528 529 - spin_lock(&iio_idr_lock); 530 - ret = idr_get_new(this_idr, NULL, &val); 531 - spin_unlock(&iio_idr_lock); 529 + spin_lock(&iio_ida_lock); 530 + ret = ida_get_new(this_ida, &val); 531 + spin_unlock(&iio_ida_lock); 532 532 if (unlikely(ret == -EAGAIN)) 533 - goto idr_again; 533 + goto ida_again; 534 534 else if (unlikely(ret)) 535 535 return ret; 536 536 537 537 return val; 538 538 } 539 - EXPORT_SYMBOL(iio_get_new_idr_val); 539 + EXPORT_SYMBOL(iio_get_new_ida_val); 540 540 541 - void iio_free_idr_val(struct idr *this_idr, int id) 541 + void iio_free_ida_val(struct ida *this_ida, int id) 542 542 { 543 - spin_lock(&iio_idr_lock); 544 - idr_remove(this_idr, id); 545 - spin_unlock(&iio_idr_lock); 543 + spin_lock(&iio_ida_lock); 544 + ida_remove(this_ida, id); 545 + spin_unlock(&iio_ida_lock); 546 546 } 547 - EXPORT_SYMBOL(iio_free_idr_val); 547 + EXPORT_SYMBOL(iio_free_ida_val); 548 548 549 549 static int iio_device_register_id(struct iio_dev *dev_info, 550 - struct idr *this_idr) 550 + struct ida *this_ida) 551 551 { 552 - 553 - dev_info->id = iio_get_new_idr_val(&iio_idr); 552 + dev_info->id = iio_get_new_ida_val(&iio_ida); 554 553 if (dev_info->id < 0) 555 554 return dev_info->id; 556 555 return 0; ··· 557 558 558 559 static void iio_device_unregister_id(struct iio_dev *dev_info) 559 560 { 560 - iio_free_idr_val(&iio_idr, dev_info->id); 561 + iio_free_ida_val(&iio_ida, dev_info->id); 561 562 } 562 563 563 564 static inline int __iio_add_event_config_attrs(struct iio_dev *dev_info, int i) ··· 756 757 { 757 758 int ret; 758 759 759 - ret = iio_device_register_id(dev_info, &iio_idr); 760 + ret = iio_device_register_id(dev_info, &iio_ida); 760 761 if (ret) { 761 762 dev_err(&dev_info->dev, "Failed to get id\n"); 762 763 goto error_ret; ··· 765 766 766 767 ret = device_add(&dev_info->dev); 767 768 if (ret) 768 - goto error_free_idr; 769 + goto error_free_ida; 769 770 ret = iio_device_register_sysfs(dev_info); 770 771 if (ret) { 771 772 dev_err(dev_info->dev.parent, ··· 787 788 iio_device_unregister_sysfs(dev_info); 788 789 error_del_device: 789 790 device_del(&dev_info->dev); 790 - error_free_idr: 791 + error_free_ida: 791 792 iio_device_unregister_id(dev_info); 792 793 error_ret: 793 794 return ret;