kernel/ksysfs: use snprintf for sysfs show
PATCH 1/1 kernel/ksysfs: use snprintf for sysfs show
Use snprintf(buf, PAGE_SIZE, ...) instead of sprintf for sysfs show methods. This is suggested in Documentation/filesystems/sysfs.txt
--- kernel/ksysfs.c | 20 +++++++++++--------- 1 files changed, 11 insertions(+), 9 deletions(-)
kernel/ksysfs.c +11 -9
@@ -29,7 +29,9 @@ static struct kobj_attribute _name##_attr = \static ssize_t uevent_seqnum_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%llu\n" , (unsigned long long )uevent_seqnum); +return snprintf (buf,PAGE_SIZE ,"%llu\n" , + (unsigned long long )uevent_seqnum); + }KERNEL_ATTR_RO (uevent_seqnum);
@@ -37,7 +39,7 @@ KERNEL_ATTR_RO(uevent_seqnum);static ssize_t uevent_helper_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%s\n" , uevent_helper); +return snprintf (buf,PAGE_SIZE ,"%s\n" , uevent_helper); } static ssize_t uevent_helper_store(struct kobject *kobj, struct kobj_attribute *attr,
@@ -58,7 +60,7 @@ KERNEL_ATTR_RW(uevent_helper);static ssize_t profiling_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%d\n" , prof_on); +return snprintf (buf,PAGE_SIZE ,"%d\n" , prof_on); } static ssize_t profiling_store(struct kobject *kobj, struct kobj_attribute *attr,
@@ -89,21 +91,21 @@ KERNEL_ATTR_RW(profiling);static ssize_t kexec_loaded_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%d\n" , !!kexec_image); +return snprintf (buf,PAGE_SIZE ,"%d\n" , !!kexec_image); }KERNEL_ATTR_RO (kexec_loaded);static ssize_t kexec_crash_loaded_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%d\n" , !!kexec_crash_image); +return snprintf (buf,PAGE_SIZE ,"%d\n" , !!kexec_crash_image); }KERNEL_ATTR_RO (kexec_crash_loaded);static ssize_t kexec_crash_size_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%zu\n" ,crash_get_memory_size ()); +return snprintf (buf,PAGE_SIZE ,"%zu\n" ,crash_get_memory_size ()); } static ssize_t kexec_crash_size_store(struct kobject *kobj, struct kobj_attribute *attr,
@@ -123,9 +125,9 @@ KERNEL_ATTR_RW(kexec_crash_size);static ssize_t vmcoreinfo_show (struct kobject *kobj,struct kobj_attribute *attr,char *buf) { -return sprintf (buf,"%lx %x\n" , -paddr_vmcoreinfo_note (), - (unsigned int )vmcoreinfo_max_size); +return snprintf (buf,PAGE_SIZE ,"%lx %x\n" , +paddr_vmcoreinfo_note (), + (unsigned int )vmcoreinfo_max_size); }KERNEL_ATTR_RO (vmcoreinfo);
Signature · 1 line
1.7.0.4
Quoted 2 lines · Davidlohr Bueso
Use
snprintf(buf, PAGE_SIZE, ...)instead of sprintf for sysfs show methods. This is suggested inDocumentation/filesystems/sysfs.txt
... therefore it must be done, the common sense be damned.
kernel/ksysfs.c static struct kobj_attribute _name##_attr = \ · line 33
Quoted 9 lines
Signed-off-by Davidlohr Bueso <[email protected]>---
static
ssize_tuevent_seqnum_show(struct kobject *kobj,kernel/ksysfs.c +2
-1struct kobj_attribute *attr, char *buf) { - return sprintf(buf, "%llu\n", (unsigned long long)uevent_seqnum); + return snprintf(buf, PAGE_SIZE, "%llu\n", + (unsigned long long )uevent_seqnum);
A-yup - that's an improvement, all right, on them evil boxen that got long long so huge that its decimal representation won't fit into a page.
NAK. Cargo-cult programming is bad.
Quoted 2 lines · Davidlohr Bueso
Use
snprintf(buf, PAGE_SIZE, ...)instead of sprintf for sysfs show methods. This is suggested inDocumentation/filesystems/sysfs.txt
As Al pointed out, none of these will ever overflow so it makes no sense to change them.
thanks,
greg k-h