Message ID | ccc08a262304f7f8c2e435349f0f714ebf9acfcd.1730563031.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | platform/x86/intel/vsec: Remove a useless mutex | expand |
Hi, On 2-Nov-24 4:59 PM, Christophe JAILLET wrote: > ida_alloc()/ida_free() don't need any mutex, so remove this one. > > It was introduced by commit 9a90ea7d3784 ("platform/x86/intel/vsec: Use > mutex for ida_alloc() and ida_free()"). > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > See: > https://elixir.bootlin.com/linux/v6.11.2/source/lib/idr.c#L375 > https://elixir.bootlin.com/linux/v6.11.2/source/lib/idr.c#L484 > > Review with care. This patch is clearly the opposite of the one in Fixes > which states that locking IS needed. > IIUC, idr_ functions need locking, but not ida_. > > If I'm wrong, could you elaborate why? (because many other places will > need to be fixed and the doc certainly needs updating) This is my bad, looking at the ida docs they clearly state no locking is necessary. Back then I was working on / reviewing some other stuff using idr which does need locking and I likely simply confused the 2 and suggested for the locking to be added. Anyways dropping the locking looks good to me: Reviewed-by: Hans de Goede <hdegoede@redhat.com> Regards, Hans > --- > drivers/platform/x86/intel/vsec.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c > index 7b5cc9993974..9e0f8e38178c 100644 > --- a/drivers/platform/x86/intel/vsec.c > +++ b/drivers/platform/x86/intel/vsec.c > @@ -79,17 +79,13 @@ static void intel_vsec_remove_aux(void *data) > auxiliary_device_uninit(data); > } > > -static DEFINE_MUTEX(vsec_ida_lock); > - > static void intel_vsec_dev_release(struct device *dev) > { > struct intel_vsec_device *intel_vsec_dev = dev_to_ivdev(dev); > > xa_erase(&auxdev_array, intel_vsec_dev->id); > > - mutex_lock(&vsec_ida_lock); > ida_free(intel_vsec_dev->ida, intel_vsec_dev->auxdev.id); > - mutex_unlock(&vsec_ida_lock); > > kfree(intel_vsec_dev->resource); > kfree(intel_vsec_dev); > @@ -113,9 +109,7 @@ int intel_vsec_add_aux(struct pci_dev *pdev, struct device *parent, > return ret; > } > > - mutex_lock(&vsec_ida_lock); > id = ida_alloc(intel_vsec_dev->ida, GFP_KERNEL); > - mutex_unlock(&vsec_ida_lock); > if (id < 0) { > xa_erase(&auxdev_array, intel_vsec_dev->id); > kfree(intel_vsec_dev->resource);
On Sat, 02 Nov 2024 16:59:41 +0100, Christophe JAILLET wrote: > ida_alloc()/ida_free() don't need any mutex, so remove this one. > > It was introduced by commit 9a90ea7d3784 ("platform/x86/intel/vsec: Use > mutex for ida_alloc() and ida_free()"). > > Thank you for your contribution, it has been applied to my local review-ilpo branch. Note it will show up in the public platform-drivers-x86/review-ilpo branch only once I've pushed my local branch there, which might take a while. The list of commits applied: [1/1] platform/x86/intel/vsec: Remove a useless mutex commit: ab49d7bf991a524a976c9fbbeb53b050ebe4323f -- i.
diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c index 7b5cc9993974..9e0f8e38178c 100644 --- a/drivers/platform/x86/intel/vsec.c +++ b/drivers/platform/x86/intel/vsec.c @@ -79,17 +79,13 @@ static void intel_vsec_remove_aux(void *data) auxiliary_device_uninit(data); } -static DEFINE_MUTEX(vsec_ida_lock); - static void intel_vsec_dev_release(struct device *dev) { struct intel_vsec_device *intel_vsec_dev = dev_to_ivdev(dev); xa_erase(&auxdev_array, intel_vsec_dev->id); - mutex_lock(&vsec_ida_lock); ida_free(intel_vsec_dev->ida, intel_vsec_dev->auxdev.id); - mutex_unlock(&vsec_ida_lock); kfree(intel_vsec_dev->resource); kfree(intel_vsec_dev); @@ -113,9 +109,7 @@ int intel_vsec_add_aux(struct pci_dev *pdev, struct device *parent, return ret; } - mutex_lock(&vsec_ida_lock); id = ida_alloc(intel_vsec_dev->ida, GFP_KERNEL); - mutex_unlock(&vsec_ida_lock); if (id < 0) { xa_erase(&auxdev_array, intel_vsec_dev->id); kfree(intel_vsec_dev->resource);
ida_alloc()/ida_free() don't need any mutex, so remove this one. It was introduced by commit 9a90ea7d3784 ("platform/x86/intel/vsec: Use mutex for ida_alloc() and ida_free()"). Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- See: https://elixir.bootlin.com/linux/v6.11.2/source/lib/idr.c#L375 https://elixir.bootlin.com/linux/v6.11.2/source/lib/idr.c#L484 Review with care. This patch is clearly the opposite of the one in Fixes which states that locking IS needed. IIUC, idr_ functions need locking, but not ida_. If I'm wrong, could you elaborate why? (because many other places will need to be fixed and the doc certainly needs updating) --- drivers/platform/x86/intel/vsec.c | 6 ------ 1 file changed, 6 deletions(-)