From 54cffa44aa2074b62a1403c956308c2050114ffa Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Mon, 18 Feb 2019 14:08:36 -0500 Subject: [PATCH] mei: Convert mei_idr to IDA Signed-off-by: Matthew Wilcox --- drivers/misc/mei/main.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c index f894d1f8a53e..88d7b45085c4 100644 --- a/drivers/misc/mei/main.c +++ b/drivers/misc/mei/main.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -31,8 +32,7 @@ static struct class *mei_class; static dev_t mei_devt; #define MEI_MAX_DEVS MINORMASK -static DEFINE_MUTEX(mei_minor_lock); -static DEFINE_IDR(mei_idr); +static DEFINE_IDA(mei_ids); /** * mei_open - the open function @@ -926,16 +926,13 @@ static const struct file_operations mei_fops = { */ static int mei_minor_get(struct mei_device *dev) { - int ret; - - mutex_lock(&mei_minor_lock); - ret = idr_alloc(&mei_idr, dev, 0, MEI_MAX_DEVS, GFP_KERNEL); - if (ret >= 0) + int ret = ida_alloc_max(&mei_ids, MEI_MAX_DEVS - 1, GFP_KERNEL); + if (ret >= 0) { dev->minor = ret; - else if (ret == -ENOSPC) + return 0; + } + if (ret == -EBUSY) dev_err(dev->dev, "too many mei devices\n"); - - mutex_unlock(&mei_minor_lock); return ret; } @@ -946,9 +943,7 @@ static int mei_minor_get(struct mei_device *dev) */ static void mei_minor_free(struct mei_device *dev) { - mutex_lock(&mei_minor_lock); - idr_remove(&mei_idr, dev->minor); - mutex_unlock(&mei_minor_lock); + ida_free(&mei_ids, dev->minor); } int mei_register(struct mei_device *dev, struct device *parent) -- 2.50.1