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
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci