[10/15] ASoC: omap-mcbsp: use permission-specific DEVICE_ATTR variants
diff mbox

Message ID 1477769829-22230-11-git-send-email-Julia.Lawall@lip6.fr
State New
Headers show

Commit Message

Julia Lawall Oct. 29, 2016, 7:37 p.m. UTC
Use DEVICE_ATTR_RW for read-write attributes.  This simplifies the
source code, improves readbility, and reduces the chance of
inconsistencies.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@rw@
declarer name DEVICE_ATTR;
identifier x,x_show,x_store;
@@

DEVICE_ATTR(x, \(0644\|S_IRUGO|S_IWUSR\), x_show, x_store);

@script:ocaml@
x << rw.x;
x_show << rw.x_show;
x_store << rw.x_store;
@@

if not (x^"_show" = x_show && x^"_store" = x_store)
then Coccilib.include_match false

@@
declarer name DEVICE_ATTR_RW;
identifier rw.x,rw.x_show,rw.x_store;
@@

- DEVICE_ATTR(x, \(0644\|S_IRUGO|S_IWUSR\), x_show, x_store);
+ DEVICE_ATTR_RW(x);
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>

---
 sound/soc/omap/mcbsp.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jarkko Nikula Oct. 30, 2016, 10:58 a.m. UTC | #1
Hi

On Sat, 29 Oct 2016 21:37:04 +0200
Julia Lawall <Julia.Lawall@lip6.fr> wrote:

> Use DEVICE_ATTR_RW for read-write attributes.  This simplifies the
> source code, improves readbility, and reduces the chance of
> inconsistencies.
> 
...
> 
> - DEVICE_ATTR(x, \(0644\|S_IRUGO|S_IWUSR\), x_show, x_store);
> + DEVICE_ATTR_RW(x);

I'm not so sure does this improve readability. 644 is pretty obvious but for DEVICE_ATTR_RW() one has to dive into include/linux/device.h and include/linux/sysfs.h to see for what users it grants the write access.
Julia Lawall Oct. 30, 2016, 11:50 a.m. UTC | #2
On Sun, 30 Oct 2016, Jarkko Nikula wrote:

> Hi
>
> On Sat, 29 Oct 2016 21:37:04 +0200
> Julia Lawall <Julia.Lawall@lip6.fr> wrote:
>
> > Use DEVICE_ATTR_RW for read-write attributes.  This simplifies the
> > source code, improves readbility, and reduces the chance of
> > inconsistencies.
> >
> ...
> >
> > - DEVICE_ATTR(x, \(0644\|S_IRUGO|S_IWUSR\), x_show, x_store);
> > + DEVICE_ATTR_RW(x);
>
> I'm not so sure does this improve readability. 644 is pretty obvious but
> for DEVICE_ATTR_RW() one has to dive into include/linux/device.h and
> include/linux/sysfs.h to see for what users it grants the write access.

OK, as you like.  It does help ensure that the functions that are supposed
to be defined are available.  There were a couple of occurrences of 0644
with no show or no store function.  Among the three declarers, there are
currently in total over 800 uses in the kernel, so they are also not so
obscure.

julia

Patch
diff mbox

diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c
index 06fec56..0b363d1 100644
--- a/sound/soc/omap/mcbsp.c
+++ b/sound/soc/omap/mcbsp.c
@@ -858,7 +858,7 @@  static ssize_t dma_op_mode_store(struct device *dev,
 	return size;
 }
 
-static DEVICE_ATTR(dma_op_mode, 0644, dma_op_mode_show, dma_op_mode_store);
+static DEVICE_ATTR_RW(dma_op_mode);
 
 static const struct attribute *additional_attrs[] = {
 	&dev_attr_max_tx_thres.attr,
@@ -927,7 +927,7 @@  static ssize_t st_taps_store(struct device *dev,
 	return size;
 }
 
-static DEVICE_ATTR(st_taps, 0644, st_taps_show, st_taps_store);
+static DEVICE_ATTR_RW(st_taps);
 
 static const struct attribute *sidetone_attrs[] = {
 	&dev_attr_st_taps.attr,