[PATCH] staging: vme_user: vme_bridge.h: Document mutex in vme_dma_resource structure
Riyan Dhiman
riyandhiman14 at gmail.com
Wed Aug 14 03:41:22 UTC 2024
On Sat, Aug 3, 2024 at 9:54 AM Dan Carpenter <dan.carpenter at linaro.org>
wrote:
> On Sat, Aug 03, 2024 at 05:48:14AM +0530, Riyan Dhiman wrote:
> > Adhere to Linux kernel coding style
> >
> > Reported by checkpatch:
> >
> > CHECK: mutex definition without comment
> >
> > Proof for comment:
> >
> > 1. The mutex is used to protect access to the 'running' list
> > (line 1798 tsi148_dma_list_exec function)
> > mutex_lock(&ctrlrl->mtx);
> > if (!list_empty(&ctrlr->running)) {
> > mutex_unlock(&ctrlr->mtx);
> > return -EBUSY;
> > }
>
> Why did you chop out the "channel = ctrlr->number;" line? That code
> looks like this:
>
I included only the mutex lock and unlock part of the code in the message.
I thought adding the entire code snippet would make the commit message too
lengthy.
> drivers/staging/vme_user/vme_tsi148.c
> 1798 mutex_lock(&ctrlr->mtx);
> 1799
> 1800 channel = ctrlr->number;
> 1801
> 1802 if (!list_empty(&ctrlr->running)) {
> 1803 /*
> 1804 * XXX We have an active DMA transfer and
> currently haven't
> 1805 * sorted out the mechanism for "pending" DMA
> transfers.
> 1806 * Return busy.
> 1807 */
> 1808 /* Need to add to pending here */
> 1809 mutex_unlock(&ctrlr->mtx);
> 1810 return -EBUSY;
> 1811 }
> 1812
> 1813 list_add(&list->list, &ctrlr->running);
>
>
> The first line after we take a lock and the last line before we drop
> the lock are hopefully chosen because they need to be protected by the
> lock.
>
Yes, I included only that part of the code in the commit message to avoid a
lengthy commit message
> 2. It's also used when removing DMA list from running list:
> > (line 1862 tsi148_dma_list_exec function)
> > mutex_lock(&ctrlr->mtx);
> > list_del(&list->list);
> > mutex_unlock(&ctrlr->mtx);
> > Ensuring thread-safe modification of the controller's state.
> >
> > Without this mutex, concurrent access to the DMA controller's state could
> > lead to data corruption or inconsistant state.
> >
>
> It's also used in drivers/staging/vme_user/vme.c
> What you should do is rename the mutex from mtx to XXX_mtx and then
> rename all the places where it is used. Keep renaming until the driver
> builds.
>
> XXX_mtx is obviously not the correct name. But "mtx" is vague and
> useless. There are 3 other locks in this header file which have the
> same name so not only is it useless as a descriptive name, it's also
> useless for searching.
>
Yes, I agree 'mt' is a vague name and doesn't convey much information.
In this patch, I have added only comments to address the checkpatch error.
Given your suggestion to change the variable name, I'd like to confirm,
Should I create a new patch that includes both the comment and the 'mtx'
variable name change?
Or should I leave this current patch with comments only and
create a separate patch for the variable name changes?
> Since you say that it is "protect access to the 'running' list", then
> that means you need to check all the places where the running list is
> accessed and ensure that the lock is held. Or if it's not, what makes
> that thread safe?
>
Yes, I have checked the lock usage in all the places where the 'running'
list is accessed.
> > diff --git a/drivers/staging/vme_user/vme_bridge.h
> b/drivers/staging/vme_user/vme_bridge.h
> > index 9bdc41bb6602..bb3750b40eb1 100644
> > --- a/drivers/staging/vme_user/vme_bridge.h
> > +++ b/drivers/staging/vme_user/vme_bridge.h
> > @@ -61,6 +61,7 @@ struct vme_dma_list {
> > struct vme_dma_resource {
> > struct list_head list;
> > struct vme_bridge *parent;
> > + /* Mutex to protect DMA controller resources and ensure
> thread-safe operations */
>
> "resources" is too vague. "ensure thread-safe operations" is obvious
> and doesn't need to be said.
>
Should I mention the exact resources this mutex protects?
Regards,
Riyan Dhiman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20240814/fd8173d4/attachment-0001.htm>
More information about the dri-devel
mailing list