On Wed, 2020-09-02 at 22:46 +0200, Julia Lawall wrote: > > On Wed, 2 Sep 2020, Joe Perches wrote: > > > On Sun, 2020-08-30 at 20:41 +0200, Julia Lawall wrote: > > > On Sun, 30 Aug 2020, Joe Perches wrote: > > > > On Sun, 2020-08-30 at 17:46 +0200, Julia Lawall wrote: > > > > > Unfortunately this does not work when the declaration > > > > is comma terminated and not semicolon terminated. > > [] > > > I will have to look into it. It should handle this sort of thing, but it > > > is somewhat complex, because the declarations have to be split and this > > > specific case may not be handled. > > > > Thanks. Hope you can get to look at that one day. > > > > > One thing that is possible is to change only the variable name. If there > > > are not many occurrences, one could fix them up afterwards by hand. > > > > And hi again Julia. > > > > I've tried a few variations on finding uses of a function > > argument that are not by specific named functions or with > > local assignment of that function argument to another > > variable without success. > > > > For example: > > > > ssize_t fn(struct device *dev, struct device_attribute *attr, char *buf) > > { > > * char *orig = buf; > > or > > int count; > > ... > > * count = local_static_func(some_struct *foo, buf); > > } > > > > where local_static_func is not sysfs_emit or sysfs_emit_at > > > > Any clue you can offer? > > I'm not completely sure what is wanted.
I want to identify places where the 3rd argument to any sysfs "show" function is used other than by the converted sysfs_emit and sysfs_emit_to calls. For instance, this assignment of p to buf drivers/isdn/mISDN/dsp_pipeline.c-static ssize_t drivers/isdn/mISDN/dsp_pipeline.c-attr_show_args(struct device *dev, struct device_attribute *attr, char *buf) drivers/isdn/mISDN/dsp_pipeline.c-{ drivers/isdn/mISDN/dsp_pipeline.c- struct mISDN_dsp_element *elem = dev_get_drvdata(dev); drivers/isdn/mISDN/dsp_pipeline.c- int i; drivers/isdn/mISDN/dsp_pipeline.c- char *p = buf; drivers/isdn/mISDN/dsp_pipeline.c- drivers/isdn/mISDN/dsp_pipeline.c: *buf = 0; drivers/isdn/mISDN/dsp_pipeline.c- for (i = 0; i < elem->num_args; i++) drivers/isdn/mISDN/dsp_pipeline.c- p += sprintf(p, "Name: %s\n%s%s%sDescription: %s\n\n", drivers/isdn/mISDN/dsp_pipeline.c- elem->args[i].name, drivers/isdn/mISDN/dsp_pipeline.c- elem->args[i].def ? "Default: " : "", drivers/isdn/mISDN/dsp_pipeline.c- elem->args[i].def ? elem->args[i].def : "", drivers/isdn/mISDN/dsp_pipeline.c- elem->args[i].def ? "\n" : "", drivers/isdn/mISDN/dsp_pipeline.c- elem->args[i].desc); drivers/isdn/mISDN/dsp_pipeline.c- drivers/isdn/mISDN/dsp_pipeline.c- return p - buf; drivers/isdn/mISDN/dsp_pipeline.c-} so that this could (likely manually) be converted to: static ssize_t attr_show_args(struct device *dev, struct device_attribute *attr, char *buf) { struct mISDN_dsp_element *elem = dev_get_drvdata(dev); int len = 0; for (i = 0; i < elem->num_args; i++) { len += sysfs_emit(buf, len, "Name: %s\n%s%s%sDescription: %s\n\n", elem->args[i].name, elem->args[i].def ? "Default: " : "", elem->args[i].def ? elem->args[i].def : "", elem->args[i].def ? "\n" : "", elem->args[i].desc); } return len; } And any use of buf passed to another function: drivers/macintosh/macio_sysfs.c-static ssize_t modalias_show (struct device *dev, drivers/macintosh/macio_sysfs.c- struct device_attribute *attr, drivers/macintosh/macio_sysfs.c- char *buf) drivers/macintosh/macio_sysfs.c-{ drivers/macintosh/macio_sysfs.c- return of_device_modalias(dev, buf, PAGE_SIZE); drivers/macintosh/macio_sysfs.c-} _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci