Message ID | 20230712115753.20688-1-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | [RESEND,v2] ACPI: NFIT: limit string attribute write | expand |
On 12/07/2023 12:57, Ben Dooks wrote: > If we're writing what could be an arbitrary sized string into an attribute > we should probably use sysfs_emit() just to be safe. Most of the other > attriubtes are some sort of integer so unlikely to be an issue so not > altered at this time. > > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > v2: > - use sysfs_emit() instead of snprintf. > --- > drivers/acpi/nfit/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 9213b426b125..59c354137627 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -1579,7 +1579,7 @@ static ssize_t id_show(struct device *dev, > { > struct nfit_mem *nfit_mem = to_nfit_mem(dev); > > - return sprintf(buf, "%s\n", nfit_mem->id); > + return sysfs_emit(buf, "%s\n", nfit_mem->id); > } > static DEVICE_ATTR_RO(id); Should we go through and change all the attribute code to use sysfs_emit() ?
On 7/12/23 05:11, Ben Dooks wrote: > On 12/07/2023 12:57, Ben Dooks wrote: >> If we're writing what could be an arbitrary sized string into an >> attribute >> we should probably use sysfs_emit() just to be safe. Most of the other >> attriubtes are some sort of integer so unlikely to be an issue so not >> altered at this time. >> >> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> >> --- >> v2: >> - use sysfs_emit() instead of snprintf. >> --- >> drivers/acpi/nfit/core.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c >> index 9213b426b125..59c354137627 100644 >> --- a/drivers/acpi/nfit/core.c >> +++ b/drivers/acpi/nfit/core.c >> @@ -1579,7 +1579,7 @@ static ssize_t id_show(struct device *dev, >> { >> struct nfit_mem *nfit_mem = to_nfit_mem(dev); >> - return sprintf(buf, "%s\n", nfit_mem->id); >> + return sysfs_emit(buf, "%s\n", nfit_mem->id); >> } >> static DEVICE_ATTR_RO(id); > > Should we go through and change all the attribute code to use > sysfs_emit() ? Probably not a bad idea given they all have the same issue. >
On 7/12/23 04:57, Ben Dooks wrote: > If we're writing what could be an arbitrary sized string into an attribute > we should probably use sysfs_emit() just to be safe. Most of the other > attriubtes are some sort of integer so unlikely to be an issue so not > altered at this time. > > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> Reviewed-by: Dave Jiang <dave.jiang@intel.com> > --- > v2: > - use sysfs_emit() instead of snprintf. > --- > drivers/acpi/nfit/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 9213b426b125..59c354137627 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -1579,7 +1579,7 @@ static ssize_t id_show(struct device *dev, > { > struct nfit_mem *nfit_mem = to_nfit_mem(dev); > > - return sprintf(buf, "%s\n", nfit_mem->id); > + return sysfs_emit(buf, "%s\n", nfit_mem->id); > } > static DEVICE_ATTR_RO(id); >
On Wed, Jul 12, 2023 at 12:57:53PM +0100, Ben Dooks wrote: > If we're writing what could be an arbitrary sized string into an attribute > we should probably use sysfs_emit() just to be safe. Most of the other > attriubtes are some sort of integer so unlikely to be an issue so not > altered at this time. Hi Ben, Documentation/process/submitting-patches.rst says: "Don't add "RESEND" when you are submitting a modified version of your patch or patch series - "RESEND" only applies to resubmission of a patch or patch series which have not been modified in any way from the previous submission." I see maybe you are going to go back and use sysfs_emit in all the _show functions. I'd suggest either justify it as either a) or b), Both are more explicit than 'just to be safe' a) following the recommendations of Documentation/filesystems/sysfs.rst which says to only use sysfs_emit in show() functions. b) explain that you are doing it because sprintf does not know the PAGE_SIZE maximum of the temporary buffer used for outputting sysfs content requests and it's possible to overrun the buffer length. I vote for doing 'em all! Alison > > Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> > --- > v2: > - use sysfs_emit() instead of snprintf. > --- > drivers/acpi/nfit/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c > index 9213b426b125..59c354137627 100644 > --- a/drivers/acpi/nfit/core.c > +++ b/drivers/acpi/nfit/core.c > @@ -1579,7 +1579,7 @@ static ssize_t id_show(struct device *dev, > { > struct nfit_mem *nfit_mem = to_nfit_mem(dev); > > - return sprintf(buf, "%s\n", nfit_mem->id); > + return sysfs_emit(buf, "%s\n", nfit_mem->id); > } > static DEVICE_ATTR_RO(id); > > -- > 2.40.1 > >
diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c index 9213b426b125..59c354137627 100644 --- a/drivers/acpi/nfit/core.c +++ b/drivers/acpi/nfit/core.c @@ -1579,7 +1579,7 @@ static ssize_t id_show(struct device *dev, { struct nfit_mem *nfit_mem = to_nfit_mem(dev); - return sprintf(buf, "%s\n", nfit_mem->id); + return sysfs_emit(buf, "%s\n", nfit_mem->id); } static DEVICE_ATTR_RO(id);
If we're writing what could be an arbitrary sized string into an attribute we should probably use sysfs_emit() just to be safe. Most of the other attriubtes are some sort of integer so unlikely to be an issue so not altered at this time. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> --- v2: - use sysfs_emit() instead of snprintf. --- drivers/acpi/nfit/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)