Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers core: Miscellaneous changes for sysfs_emit

Change additional instances that could use sysfs_emit and sysfs_emit_at
that the coccinelle script could not convert.

o macros creating show functions with ## concatenation
o unbound sprintf uses with buf+len for start of output to sysfs_emit_at
o returns with ?: tests and sprintf to sysfs_emit
o sysfs output with struct class * not struct device * arguments

Miscellanea:

o remove unnecessary initializations around these changes
o consistently use int len for return length of show functions
o use octal permissions and not S_<FOO>
o rename a few show function names so DEVICE_ATTR_<FOO> can be used
o use DEVICE_ATTR_ADMIN_RO where appropriate
o consistently use const char *output for strings
o checkpatch/style neatening

Signed-off-by: Joe Perches <joe@perches.com>
Link: https://lore.kernel.org/r/8bc24444fe2049a9b2de6127389b57edfdfe324d.1600285923.git.joe@perches.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Joe Perches and committed by
Greg Kroah-Hartman
948b3edb 27275d30

+308 -267
+1 -1
drivers/base/bus.c
··· 229 229 230 230 static ssize_t drivers_autoprobe_show(struct bus_type *bus, char *buf) 231 231 { 232 - return sprintf(buf, "%d\n", bus->p->drivers_autoprobe); 232 + return sysfs_emit(buf, "%d\n", bus->p->drivers_autoprobe); 233 233 } 234 234 235 235 static ssize_t drivers_autoprobe_store(struct bus_type *bus,
+1 -1
drivers/base/cacheinfo.c
··· 362 362 struct device_attribute *attr, char *buf) \ 363 363 { \ 364 364 struct cacheinfo *this_leaf = dev_get_drvdata(dev); \ 365 - return sprintf(buf, "%u\n", this_leaf->object); \ 365 + return sysfs_emit(buf, "%u\n", this_leaf->object); \ 366 366 } 367 367 368 368 show_one(id, id);
+1 -1
drivers/base/class.c
··· 478 478 struct class_attribute_string *cs; 479 479 480 480 cs = container_of(attr, struct class_attribute_string, attr); 481 - return snprintf(buf, PAGE_SIZE, "%s\n", cs->str); 481 + return sysfs_emit(buf, "%s\n", cs->str); 482 482 } 483 483 484 484 EXPORT_SYMBOL_GPL(show_class_attr_string);
+21 -13
drivers/base/core.c
··· 240 240 #define to_devlink(dev) container_of((dev), struct device_link, link_dev) 241 241 242 242 static ssize_t status_show(struct device *dev, 243 - struct device_attribute *attr, char *buf) 243 + struct device_attribute *attr, char *buf) 244 244 { 245 - char *status; 245 + const char *output; 246 246 247 247 switch (to_devlink(dev)->status) { 248 248 case DL_STATE_NONE: 249 - status = "not tracked"; break; 249 + output = "not tracked"; 250 + break; 250 251 case DL_STATE_DORMANT: 251 - status = "dormant"; break; 252 + output = "dormant"; 253 + break; 252 254 case DL_STATE_AVAILABLE: 253 - status = "available"; break; 255 + output = "available"; 256 + break; 254 257 case DL_STATE_CONSUMER_PROBE: 255 - status = "consumer probing"; break; 258 + output = "consumer probing"; 259 + break; 256 260 case DL_STATE_ACTIVE: 257 - status = "active"; break; 261 + output = "active"; 262 + break; 258 263 case DL_STATE_SUPPLIER_UNBIND: 259 - status = "supplier unbinding"; break; 264 + output = "supplier unbinding"; 265 + break; 260 266 default: 261 - status = "unknown"; break; 267 + output = "unknown"; 268 + break; 262 269 } 263 - return sysfs_emit(buf, "%s\n", status); 270 + 271 + return sysfs_emit(buf, "%s\n", output); 264 272 } 265 273 static DEVICE_ATTR_RO(status); 266 274 ··· 1942 1934 struct kset *kset; 1943 1935 struct kobj_uevent_env *env = NULL; 1944 1936 int i; 1945 - size_t count = 0; 1937 + int len = 0; 1946 1938 int retval; 1947 1939 1948 1940 /* search the kset, the device belongs to */ ··· 1972 1964 1973 1965 /* copy keys to file */ 1974 1966 for (i = 0; i < env->envp_idx; i++) 1975 - count += sprintf(&buf[count], "%s\n", env->envp[i]); 1967 + len += sysfs_emit_at(buf, len, "%s\n", env->envp[i]); 1976 1968 out: 1977 1969 kfree(env); 1978 - return count; 1970 + return len; 1979 1971 } 1980 1972 1981 1973 static ssize_t uevent_store(struct device *dev, struct device_attribute *attr,
+31 -33
drivers/base/cpu.c
··· 139 139 #ifdef CONFIG_KEXEC 140 140 #include <linux/kexec.h> 141 141 142 - static ssize_t show_crash_notes(struct device *dev, struct device_attribute *attr, 142 + static ssize_t crash_notes_show(struct device *dev, 143 + struct device_attribute *attr, 143 144 char *buf) 144 145 { 145 146 struct cpu *cpu = container_of(dev, struct cpu, dev); 146 - ssize_t rc; 147 147 unsigned long long addr; 148 148 int cpunum; 149 149 ··· 156 156 * operation should be safe. No locking required. 157 157 */ 158 158 addr = per_cpu_ptr_to_phys(per_cpu_ptr(crash_notes, cpunum)); 159 - rc = sysfs_emit(buf, "%Lx\n", addr); 160 - return rc; 161 - } 162 - static DEVICE_ATTR(crash_notes, 0400, show_crash_notes, NULL); 163 159 164 - static ssize_t show_crash_notes_size(struct device *dev, 160 + return sysfs_emit(buf, "%llx\n", addr); 161 + } 162 + static DEVICE_ATTR_ADMIN_RO(crash_notes); 163 + 164 + static ssize_t crash_notes_size_show(struct device *dev, 165 165 struct device_attribute *attr, 166 166 char *buf) 167 167 { 168 - ssize_t rc; 169 - 170 - rc = sysfs_emit(buf, "%zu\n", sizeof(note_buf_t)); 171 - return rc; 168 + return sysfs_emit(buf, "%zu\n", sizeof(note_buf_t)); 172 169 } 173 - static DEVICE_ATTR(crash_notes_size, 0400, show_crash_notes_size, NULL); 170 + static DEVICE_ATTR_ADMIN_RO(crash_notes_size); 174 171 175 172 static struct attribute *crash_note_cpu_attrs[] = { 176 173 &dev_attr_crash_notes.attr, ··· 238 241 static ssize_t print_cpus_offline(struct device *dev, 239 242 struct device_attribute *attr, char *buf) 240 243 { 241 - int n = 0, len = PAGE_SIZE-2; 244 + int len = 0; 242 245 cpumask_var_t offline; 243 246 244 247 /* display offline cpus < nr_cpu_ids */ 245 248 if (!alloc_cpumask_var(&offline, GFP_KERNEL)) 246 249 return -ENOMEM; 247 250 cpumask_andnot(offline, cpu_possible_mask, cpu_online_mask); 248 - n = scnprintf(buf, len, "%*pbl", cpumask_pr_args(offline)); 251 + len += sysfs_emit_at(buf, len, "%*pbl", cpumask_pr_args(offline)); 249 252 free_cpumask_var(offline); 250 253 251 254 /* display offline cpus >= nr_cpu_ids */ 252 255 if (total_cpus && nr_cpu_ids < total_cpus) { 253 - if (n && n < len) 254 - buf[n++] = ','; 256 + len += sysfs_emit_at(buf, len, ","); 255 257 256 258 if (nr_cpu_ids == total_cpus-1) 257 - n += scnprintf(&buf[n], len - n, "%u", nr_cpu_ids); 259 + len += sysfs_emit_at(buf, len, "%u", nr_cpu_ids); 258 260 else 259 - n += scnprintf(&buf[n], len - n, "%u-%d", 260 - nr_cpu_ids, total_cpus-1); 261 + len += sysfs_emit_at(buf, len, "%u-%d", 262 + nr_cpu_ids, total_cpus - 1); 261 263 } 262 264 263 - n += scnprintf(&buf[n], len - n, "\n"); 264 - return n; 265 + len += sysfs_emit_at(buf, len, "\n"); 266 + 267 + return len; 265 268 } 266 269 static DEVICE_ATTR(offline, 0444, print_cpus_offline, NULL); 267 270 268 271 static ssize_t print_cpus_isolated(struct device *dev, 269 272 struct device_attribute *attr, char *buf) 270 273 { 271 - int n; 274 + int len; 272 275 cpumask_var_t isolated; 273 276 274 277 if (!alloc_cpumask_var(&isolated, GFP_KERNEL)) ··· 276 279 277 280 cpumask_andnot(isolated, cpu_possible_mask, 278 281 housekeeping_cpumask(HK_FLAG_DOMAIN)); 279 - n = sysfs_emit(buf, "%*pbl\n", cpumask_pr_args(isolated)); 282 + len = sysfs_emit(buf, "%*pbl\n", cpumask_pr_args(isolated)); 280 283 281 284 free_cpumask_var(isolated); 282 285 283 - return n; 286 + return len; 284 287 } 285 288 static DEVICE_ATTR(isolated, 0444, print_cpus_isolated, NULL); 286 289 287 290 #ifdef CONFIG_NO_HZ_FULL 288 291 static ssize_t print_cpus_nohz_full(struct device *dev, 289 - struct device_attribute *attr, char *buf) 292 + struct device_attribute *attr, char *buf) 290 293 { 291 294 return sysfs_emit(buf, "%*pbl\n", cpumask_pr_args(tick_nohz_full_mask)); 292 295 } ··· 317 320 struct device_attribute *attr, 318 321 char *buf) 319 322 { 320 - ssize_t n; 323 + int len = 0; 321 324 u32 i; 322 325 323 - n = sysfs_emit(buf, "cpu:type:" CPU_FEATURE_TYPEFMT ":feature:", 324 - CPU_FEATURE_TYPEVAL); 326 + len += sysfs_emit_at(buf, len, 327 + "cpu:type:" CPU_FEATURE_TYPEFMT ":feature:", 328 + CPU_FEATURE_TYPEVAL); 325 329 326 330 for (i = 0; i < MAX_CPU_FEATURES; i++) 327 331 if (cpu_have_feature(i)) { 328 - if (PAGE_SIZE < n + sizeof(",XXXX\n")) { 332 + if (len + sizeof(",XXXX\n") >= PAGE_SIZE) { 329 333 WARN(1, "CPU features overflow page\n"); 330 334 break; 331 335 } 332 - n += sprintf(&buf[n], ",%04X", i); 336 + len += sysfs_emit_at(buf, len, ",%04X", i); 333 337 } 334 - buf[n++] = '\n'; 335 - return n; 338 + len += sysfs_emit_at(buf, len, "\n"); 339 + return len; 336 340 } 337 341 338 342 static int cpu_uevent(struct device *dev, struct kobj_uevent_env *env) ··· 555 557 } 556 558 557 559 ssize_t __weak cpu_show_itlb_multihit(struct device *dev, 558 - struct device_attribute *attr, char *buf) 560 + struct device_attribute *attr, char *buf) 559 561 { 560 562 return sysfs_emit(buf, "Not affected\n"); 561 563 }
+1
drivers/base/dd.c
··· 486 486 device_lock(dev); 487 487 val = dev->state_synced; 488 488 device_unlock(dev); 489 + 489 490 return sysfs_emit(buf, "%u\n", val); 490 491 } 491 492 static DEVICE_ATTR_RO(state_synced);
+1 -1
drivers/base/devcoredump.c
··· 123 123 static ssize_t disabled_show(struct class *class, struct class_attribute *attr, 124 124 char *buf) 125 125 { 126 - return sprintf(buf, "%d\n", devcd_disabled); 126 + return sysfs_emit(buf, "%d\n", devcd_disabled); 127 127 } 128 128 129 129 static ssize_t disabled_store(struct class *class, struct class_attribute *attr,
+1 -1
drivers/base/firmware_loader/fallback.c
··· 124 124 static ssize_t timeout_show(struct class *class, struct class_attribute *attr, 125 125 char *buf) 126 126 { 127 - return sprintf(buf, "%d\n", __firmware_loading_timeout()); 127 + return sysfs_emit(buf, "%d\n", __firmware_loading_timeout()); 128 128 } 129 129 130 130 /**
+4 -1
drivers/base/memory.c
··· 119 119 unsigned long phys_index; 120 120 121 121 phys_index = mem->start_section_nr / sections_per_block; 122 + 122 123 return sysfs_emit(buf, "%08lx\n", phys_index); 123 124 } 124 125 ··· 302 301 struct device_attribute *attr, char *buf) 303 302 { 304 303 struct memory_block *mem = to_memory_block(dev); 304 + 305 305 return sysfs_emit(buf, "%d\n", mem->phys_device); 306 306 } 307 307 ··· 316 314 zone = zone_for_pfn_range(online_type, nid, start_pfn, nr_pages); 317 315 if (zone == default_zone) 318 316 return 0; 317 + 319 318 return sysfs_emit_at(buf, len, " %s", zone->name); 320 319 } 321 320 ··· 357 354 len += print_allowed_zone(buf, len, nid, start_pfn, nr_pages, 358 355 MMOP_ONLINE_MOVABLE, default_zone); 359 356 out: 360 - len += sysfs_emit_at(buf, len, "%s", "\n"); 357 + len += sysfs_emit_at(buf, len, "\n"); 361 358 return len; 362 359 } 363 360 static DEVICE_ATTR_RO(valid_zones);
+135 -133
drivers/base/node.c
··· 46 46 return n; 47 47 } 48 48 49 - static inline ssize_t node_read_cpumask(struct device *dev, 50 - struct device_attribute *attr, char *buf) 49 + static inline ssize_t cpumap_show(struct device *dev, 50 + struct device_attribute *attr, 51 + char *buf) 51 52 { 52 53 return node_read_cpumap(dev, false, buf); 53 54 } 54 - static inline ssize_t node_read_cpulist(struct device *dev, 55 - struct device_attribute *attr, char *buf) 55 + 56 + static DEVICE_ATTR_RO(cpumap); 57 + 58 + static inline ssize_t cpulist_show(struct device *dev, 59 + struct device_attribute *attr, 60 + char *buf) 56 61 { 57 62 return node_read_cpumap(dev, true, buf); 58 63 } 59 64 60 - static DEVICE_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL); 61 - static DEVICE_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL); 65 + static DEVICE_ATTR_RO(cpulist); 62 66 63 67 /** 64 68 * struct node_access_nodes - Access class device to hold user visible ··· 157 153 } 158 154 159 155 #ifdef CONFIG_HMEM_REPORTING 160 - #define ACCESS_ATTR(name) \ 161 - static ssize_t name##_show(struct device *dev, \ 162 - struct device_attribute *attr, \ 163 - char *buf) \ 164 - { \ 165 - return sprintf(buf, "%u\n", to_access_nodes(dev)->hmem_attrs.name); \ 166 - } \ 156 + #define ACCESS_ATTR(name) \ 157 + static ssize_t name##_show(struct device *dev, \ 158 + struct device_attribute *attr, \ 159 + char *buf) \ 160 + { \ 161 + return sysfs_emit(buf, "%u\n", \ 162 + to_access_nodes(dev)->hmem_attrs.name); \ 163 + } \ 167 164 static DEVICE_ATTR_RO(name); 168 165 169 166 ACCESS_ATTR(read_bandwidth) ··· 230 225 struct device_attribute *attr, \ 231 226 char *buf) \ 232 227 { \ 233 - return sprintf(buf, fmt "\n", to_cache_info(dev)->cache_attrs.name);\ 228 + return sysfs_emit(buf, fmt "\n", \ 229 + to_cache_info(dev)->cache_attrs.name); \ 234 230 } \ 235 231 DEVICE_ATTR_RO(name); 236 232 ··· 367 361 static ssize_t node_read_meminfo(struct device *dev, 368 362 struct device_attribute *attr, char *buf) 369 363 { 370 - int n; 364 + int len = 0; 371 365 int nid = dev->id; 372 366 struct pglist_data *pgdat = NODE_DATA(nid); 373 367 struct sysinfo i; ··· 376 370 si_meminfo_node(&i, nid); 377 371 sreclaimable = node_page_state_pages(pgdat, NR_SLAB_RECLAIMABLE_B); 378 372 sunreclaimable = node_page_state_pages(pgdat, NR_SLAB_UNRECLAIMABLE_B); 379 - n = sysfs_emit(buf, 380 - "Node %d MemTotal: %8lu kB\n" 381 - "Node %d MemFree: %8lu kB\n" 382 - "Node %d MemUsed: %8lu kB\n" 383 - "Node %d Active: %8lu kB\n" 384 - "Node %d Inactive: %8lu kB\n" 385 - "Node %d Active(anon): %8lu kB\n" 386 - "Node %d Inactive(anon): %8lu kB\n" 387 - "Node %d Active(file): %8lu kB\n" 388 - "Node %d Inactive(file): %8lu kB\n" 389 - "Node %d Unevictable: %8lu kB\n" 390 - "Node %d Mlocked: %8lu kB\n", 391 - nid, K(i.totalram), 392 - nid, K(i.freeram), 393 - nid, K(i.totalram - i.freeram), 394 - nid, K(node_page_state(pgdat, NR_ACTIVE_ANON) + 395 - node_page_state(pgdat, NR_ACTIVE_FILE)), 396 - nid, K(node_page_state(pgdat, NR_INACTIVE_ANON) + 397 - node_page_state(pgdat, NR_INACTIVE_FILE)), 398 - nid, K(node_page_state(pgdat, NR_ACTIVE_ANON)), 399 - nid, K(node_page_state(pgdat, NR_INACTIVE_ANON)), 400 - nid, K(node_page_state(pgdat, NR_ACTIVE_FILE)), 401 - nid, K(node_page_state(pgdat, NR_INACTIVE_FILE)), 402 - nid, K(node_page_state(pgdat, NR_UNEVICTABLE)), 403 - nid, K(sum_zone_node_page_state(nid, NR_MLOCK))); 373 + len = sysfs_emit_at(buf, len, 374 + "Node %d MemTotal: %8lu kB\n" 375 + "Node %d MemFree: %8lu kB\n" 376 + "Node %d MemUsed: %8lu kB\n" 377 + "Node %d Active: %8lu kB\n" 378 + "Node %d Inactive: %8lu kB\n" 379 + "Node %d Active(anon): %8lu kB\n" 380 + "Node %d Inactive(anon): %8lu kB\n" 381 + "Node %d Active(file): %8lu kB\n" 382 + "Node %d Inactive(file): %8lu kB\n" 383 + "Node %d Unevictable: %8lu kB\n" 384 + "Node %d Mlocked: %8lu kB\n", 385 + nid, K(i.totalram), 386 + nid, K(i.freeram), 387 + nid, K(i.totalram - i.freeram), 388 + nid, K(node_page_state(pgdat, NR_ACTIVE_ANON) + 389 + node_page_state(pgdat, NR_ACTIVE_FILE)), 390 + nid, K(node_page_state(pgdat, NR_INACTIVE_ANON) + 391 + node_page_state(pgdat, NR_INACTIVE_FILE)), 392 + nid, K(node_page_state(pgdat, NR_ACTIVE_ANON)), 393 + nid, K(node_page_state(pgdat, NR_INACTIVE_ANON)), 394 + nid, K(node_page_state(pgdat, NR_ACTIVE_FILE)), 395 + nid, K(node_page_state(pgdat, NR_INACTIVE_FILE)), 396 + nid, K(node_page_state(pgdat, NR_UNEVICTABLE)), 397 + nid, K(sum_zone_node_page_state(nid, NR_MLOCK))); 404 398 405 399 #ifdef CONFIG_HIGHMEM 406 - n += sprintf(buf + n, 407 - "Node %d HighTotal: %8lu kB\n" 408 - "Node %d HighFree: %8lu kB\n" 409 - "Node %d LowTotal: %8lu kB\n" 410 - "Node %d LowFree: %8lu kB\n", 411 - nid, K(i.totalhigh), 412 - nid, K(i.freehigh), 413 - nid, K(i.totalram - i.totalhigh), 414 - nid, K(i.freeram - i.freehigh)); 400 + len += sysfs_emit_at(buf, len, 401 + "Node %d HighTotal: %8lu kB\n" 402 + "Node %d HighFree: %8lu kB\n" 403 + "Node %d LowTotal: %8lu kB\n" 404 + "Node %d LowFree: %8lu kB\n", 405 + nid, K(i.totalhigh), 406 + nid, K(i.freehigh), 407 + nid, K(i.totalram - i.totalhigh), 408 + nid, K(i.freeram - i.freehigh)); 415 409 #endif 416 - n += sprintf(buf + n, 417 - "Node %d Dirty: %8lu kB\n" 418 - "Node %d Writeback: %8lu kB\n" 419 - "Node %d FilePages: %8lu kB\n" 420 - "Node %d Mapped: %8lu kB\n" 421 - "Node %d AnonPages: %8lu kB\n" 422 - "Node %d Shmem: %8lu kB\n" 423 - "Node %d KernelStack: %8lu kB\n" 410 + len += sysfs_emit_at(buf, len, 411 + "Node %d Dirty: %8lu kB\n" 412 + "Node %d Writeback: %8lu kB\n" 413 + "Node %d FilePages: %8lu kB\n" 414 + "Node %d Mapped: %8lu kB\n" 415 + "Node %d AnonPages: %8lu kB\n" 416 + "Node %d Shmem: %8lu kB\n" 417 + "Node %d KernelStack: %8lu kB\n" 424 418 #ifdef CONFIG_SHADOW_CALL_STACK 425 - "Node %d ShadowCallStack:%8lu kB\n" 419 + "Node %d ShadowCallStack:%8lu kB\n" 426 420 #endif 427 - "Node %d PageTables: %8lu kB\n" 428 - "Node %d NFS_Unstable: %8lu kB\n" 429 - "Node %d Bounce: %8lu kB\n" 430 - "Node %d WritebackTmp: %8lu kB\n" 431 - "Node %d KReclaimable: %8lu kB\n" 432 - "Node %d Slab: %8lu kB\n" 433 - "Node %d SReclaimable: %8lu kB\n" 434 - "Node %d SUnreclaim: %8lu kB\n" 421 + "Node %d PageTables: %8lu kB\n" 422 + "Node %d NFS_Unstable: %8lu kB\n" 423 + "Node %d Bounce: %8lu kB\n" 424 + "Node %d WritebackTmp: %8lu kB\n" 425 + "Node %d KReclaimable: %8lu kB\n" 426 + "Node %d Slab: %8lu kB\n" 427 + "Node %d SReclaimable: %8lu kB\n" 428 + "Node %d SUnreclaim: %8lu kB\n" 435 429 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 436 - "Node %d AnonHugePages: %8lu kB\n" 437 - "Node %d ShmemHugePages: %8lu kB\n" 438 - "Node %d ShmemPmdMapped: %8lu kB\n" 439 - "Node %d FileHugePages: %8lu kB\n" 440 - "Node %d FilePmdMapped: %8lu kB\n" 430 + "Node %d AnonHugePages: %8lu kB\n" 431 + "Node %d ShmemHugePages: %8lu kB\n" 432 + "Node %d ShmemPmdMapped: %8lu kB\n" 433 + "Node %d FileHugePages: %8lu kB\n" 434 + "Node %d FilePmdMapped: %8lu kB\n" 441 435 #endif 442 - , 443 - nid, K(node_page_state(pgdat, NR_FILE_DIRTY)), 444 - nid, K(node_page_state(pgdat, NR_WRITEBACK)), 445 - nid, K(node_page_state(pgdat, NR_FILE_PAGES)), 446 - nid, K(node_page_state(pgdat, NR_FILE_MAPPED)), 447 - nid, K(node_page_state(pgdat, NR_ANON_MAPPED)), 448 - nid, K(i.sharedram), 449 - nid, node_page_state(pgdat, NR_KERNEL_STACK_KB), 436 + , 437 + nid, K(node_page_state(pgdat, NR_FILE_DIRTY)), 438 + nid, K(node_page_state(pgdat, NR_WRITEBACK)), 439 + nid, K(node_page_state(pgdat, NR_FILE_PAGES)), 440 + nid, K(node_page_state(pgdat, NR_FILE_MAPPED)), 441 + nid, K(node_page_state(pgdat, NR_ANON_MAPPED)), 442 + nid, K(i.sharedram), 443 + nid, node_page_state(pgdat, NR_KERNEL_STACK_KB), 450 444 #ifdef CONFIG_SHADOW_CALL_STACK 451 - nid, node_page_state(pgdat, NR_KERNEL_SCS_KB), 445 + nid, node_page_state(pgdat, NR_KERNEL_SCS_KB), 452 446 #endif 453 - nid, K(sum_zone_node_page_state(nid, NR_PAGETABLE)), 454 - nid, 0UL, 455 - nid, K(sum_zone_node_page_state(nid, NR_BOUNCE)), 456 - nid, K(node_page_state(pgdat, NR_WRITEBACK_TEMP)), 457 - nid, K(sreclaimable + 458 - node_page_state(pgdat, NR_KERNEL_MISC_RECLAIMABLE)), 459 - nid, K(sreclaimable + sunreclaimable), 460 - nid, K(sreclaimable), 461 - nid, K(sunreclaimable) 447 + nid, K(sum_zone_node_page_state(nid, NR_PAGETABLE)), 448 + nid, 0UL, 449 + nid, K(sum_zone_node_page_state(nid, NR_BOUNCE)), 450 + nid, K(node_page_state(pgdat, NR_WRITEBACK_TEMP)), 451 + nid, K(sreclaimable + 452 + node_page_state(pgdat, NR_KERNEL_MISC_RECLAIMABLE)), 453 + nid, K(sreclaimable + sunreclaimable), 454 + nid, K(sreclaimable), 455 + nid, K(sunreclaimable) 462 456 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 463 - , 464 - nid, K(node_page_state(pgdat, NR_ANON_THPS) * 465 - HPAGE_PMD_NR), 466 - nid, K(node_page_state(pgdat, NR_SHMEM_THPS) * 467 - HPAGE_PMD_NR), 468 - nid, K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED) * 469 - HPAGE_PMD_NR), 470 - nid, K(node_page_state(pgdat, NR_FILE_THPS) * 471 - HPAGE_PMD_NR), 472 - nid, K(node_page_state(pgdat, NR_FILE_PMDMAPPED) * 473 - HPAGE_PMD_NR) 457 + , 458 + nid, K(node_page_state(pgdat, NR_ANON_THPS) * 459 + HPAGE_PMD_NR), 460 + nid, K(node_page_state(pgdat, NR_SHMEM_THPS) * 461 + HPAGE_PMD_NR), 462 + nid, K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED) * 463 + HPAGE_PMD_NR), 464 + nid, K(node_page_state(pgdat, NR_FILE_THPS) * 465 + HPAGE_PMD_NR), 466 + nid, K(node_page_state(pgdat, NR_FILE_PMDMAPPED) * 467 + HPAGE_PMD_NR) 474 468 #endif 475 - ); 476 - n += hugetlb_report_node_meminfo(nid, buf + n); 477 - return n; 469 + ); 470 + len += hugetlb_report_node_meminfo(nid, buf + len); 471 + return len; 478 472 } 479 473 480 474 #undef K 481 - static DEVICE_ATTR(meminfo, S_IRUGO, node_read_meminfo, NULL); 475 + static DEVICE_ATTR(meminfo, 0444, node_read_meminfo, NULL); 482 476 483 477 static ssize_t node_read_numastat(struct device *dev, 484 - struct device_attribute *attr, char *buf) 478 + struct device_attribute *attr, char *buf) 485 479 { 486 480 return sysfs_emit(buf, 487 481 "numa_hit %lu\n" ··· 497 491 sum_zone_numa_state(dev->id, NUMA_LOCAL), 498 492 sum_zone_numa_state(dev->id, NUMA_OTHER)); 499 493 } 500 - static DEVICE_ATTR(numastat, S_IRUGO, node_read_numastat, NULL); 494 + static DEVICE_ATTR(numastat, 0444, node_read_numastat, NULL); 501 495 502 496 static ssize_t node_read_vmstat(struct device *dev, 503 497 struct device_attribute *attr, char *buf) ··· 505 499 int nid = dev->id; 506 500 struct pglist_data *pgdat = NODE_DATA(nid); 507 501 int i; 508 - int n = 0; 502 + int len = 0; 509 503 510 504 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) 511 - n += sprintf(buf+n, "%s %lu\n", zone_stat_name(i), 512 - sum_zone_node_page_state(nid, i)); 505 + len += sysfs_emit_at(buf, len, "%s %lu\n", 506 + zone_stat_name(i), 507 + sum_zone_node_page_state(nid, i)); 513 508 514 509 #ifdef CONFIG_NUMA 515 510 for (i = 0; i < NR_VM_NUMA_STAT_ITEMS; i++) 516 - n += sprintf(buf+n, "%s %lu\n", numa_stat_name(i), 517 - sum_zone_numa_state(nid, i)); 511 + len += sysfs_emit_at(buf, len, "%s %lu\n", 512 + numa_stat_name(i), 513 + sum_zone_numa_state(nid, i)); 514 + 518 515 #endif 519 - 520 516 for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) 521 - n += sprintf(buf+n, "%s %lu\n", node_stat_name(i), 522 - node_page_state_pages(pgdat, i)); 517 + len += sysfs_emit_at(buf, len, "%s %lu\n", 518 + node_stat_name(i), 519 + node_page_state_pages(pgdat, i)); 523 520 524 - return n; 521 + return len; 525 522 } 526 - static DEVICE_ATTR(vmstat, S_IRUGO, node_read_vmstat, NULL); 523 + static DEVICE_ATTR(vmstat, 0444, node_read_vmstat, NULL); 527 524 528 525 static ssize_t node_read_distance(struct device *dev, 529 - struct device_attribute *attr, char *buf) 526 + struct device_attribute *attr, char *buf) 530 527 { 531 528 int nid = dev->id; 532 529 int len = 0; ··· 541 532 */ 542 533 BUILD_BUG_ON(MAX_NUMNODES * 4 > PAGE_SIZE); 543 534 544 - for_each_online_node(i) 545 - len += sprintf(buf + len, "%s%d", i ? " " : "", node_distance(nid, i)); 535 + for_each_online_node(i) { 536 + len += sysfs_emit_at(buf, len, "%s%d", 537 + i ? " " : "", node_distance(nid, i)); 538 + } 546 539 547 - len += sprintf(buf + len, "\n"); 540 + len += sysfs_emit_at(buf, len, "\n"); 548 541 return len; 549 542 } 550 - static DEVICE_ATTR(distance, S_IRUGO, node_read_distance, NULL); 543 + static DEVICE_ATTR(distance, 0444, node_read_distance, NULL); 551 544 552 545 static struct attribute *node_dev_attrs[] = { 553 546 &dev_attr_cpumap.attr, ··· 956 945 * node states attributes 957 946 */ 958 947 959 - static ssize_t print_nodes_state(enum node_states state, char *buf) 960 - { 961 - int n; 962 - 963 - n = scnprintf(buf, PAGE_SIZE - 1, "%*pbl", 964 - nodemask_pr_args(&node_states[state])); 965 - buf[n++] = '\n'; 966 - buf[n] = '\0'; 967 - return n; 968 - } 969 - 970 948 struct node_attr { 971 949 struct device_attribute attr; 972 950 enum node_states state; ··· 965 965 struct device_attribute *attr, char *buf) 966 966 { 967 967 struct node_attr *na = container_of(attr, struct node_attr, attr); 968 - return print_nodes_state(na->state, buf); 968 + 969 + return sysfs_emit(buf, "%*pbl\n", 970 + nodemask_pr_args(&node_states[na->state])); 969 971 } 970 972 971 973 #define _NODE_ATTR(name, state) \
+6 -7
drivers/base/platform.c
··· 1023 1023 * (b) sysfs attribute lets new-style coldplug recover from hotplug events 1024 1024 * mishandled before system is fully running: "modprobe $(cat modalias)" 1025 1025 */ 1026 - static ssize_t modalias_show(struct device *dev, struct device_attribute *a, 1027 - char *buf) 1026 + static ssize_t modalias_show(struct device *dev, 1027 + struct device_attribute *attr, char *buf) 1028 1028 { 1029 - struct platform_device *pdev = to_platform_device(dev); 1029 + struct platform_device *pdev = to_platform_device(dev); 1030 1030 int len; 1031 1031 1032 1032 len = of_device_modalias(dev, buf, PAGE_SIZE); ··· 1037 1037 if (len != -ENODEV) 1038 1038 return len; 1039 1039 1040 - len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name); 1041 - 1042 - return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; 1040 + return sysfs_emit(buf, "platform:%s\n", pdev->name); 1043 1041 } 1044 1042 static DEVICE_ATTR_RO(modalias); 1045 1043 ··· 1084 1086 device_lock(dev); 1085 1087 len = sysfs_emit(buf, "%s\n", pdev->driver_override); 1086 1088 device_unlock(dev); 1089 + 1087 1090 return len; 1088 1091 } 1089 1092 static DEVICE_ATTR_RW(driver_override); 1090 1093 1091 1094 static ssize_t numa_node_show(struct device *dev, 1092 - struct device_attribute *attr, char *buf) 1095 + struct device_attribute *attr, char *buf) 1093 1096 { 1094 1097 return sysfs_emit(buf, "%d\n", dev_to_node(dev)); 1095 1098 }
+67 -36
drivers/base/power/sysfs.c
··· 122 122 static DEVICE_ATTR_RW(control); 123 123 124 124 static ssize_t runtime_active_time_show(struct device *dev, 125 - struct device_attribute *attr, char *buf) 125 + struct device_attribute *attr, 126 + char *buf) 126 127 { 127 - int ret; 128 128 u64 tmp = pm_runtime_active_time(dev); 129 + 129 130 do_div(tmp, NSEC_PER_MSEC); 130 - ret = sysfs_emit(buf, "%llu\n", tmp); 131 - return ret; 131 + 132 + return sysfs_emit(buf, "%llu\n", tmp); 132 133 } 133 134 134 135 static DEVICE_ATTR_RO(runtime_active_time); 135 136 136 137 static ssize_t runtime_suspended_time_show(struct device *dev, 137 - struct device_attribute *attr, char *buf) 138 + struct device_attribute *attr, 139 + char *buf) 138 140 { 139 - int ret; 140 141 u64 tmp = pm_runtime_suspended_time(dev); 142 + 141 143 do_div(tmp, NSEC_PER_MSEC); 142 - ret = sysfs_emit(buf, "%llu\n", tmp); 143 - return ret; 144 + 145 + return sysfs_emit(buf, "%llu\n", tmp); 144 146 } 145 147 146 148 static DEVICE_ATTR_RO(runtime_suspended_time); 147 149 148 150 static ssize_t runtime_status_show(struct device *dev, 149 - struct device_attribute *attr, char *buf) 151 + struct device_attribute *attr, char *buf) 150 152 { 151 - const char *p; 153 + const char *output; 152 154 153 155 if (dev->power.runtime_error) { 154 - p = "error\n"; 156 + output = "error"; 155 157 } else if (dev->power.disable_depth) { 156 - p = "unsupported\n"; 158 + output = "unsupported"; 157 159 } else { 158 160 switch (dev->power.runtime_status) { 159 161 case RPM_SUSPENDED: 160 - p = "suspended\n"; 162 + output = "suspended"; 161 163 break; 162 164 case RPM_SUSPENDING: 163 - p = "suspending\n"; 165 + output = "suspending"; 164 166 break; 165 167 case RPM_RESUMING: 166 - p = "resuming\n"; 168 + output = "resuming"; 167 169 break; 168 170 case RPM_ACTIVE: 169 - p = "active\n"; 171 + output = "active"; 170 172 break; 171 173 default: 172 174 return -EIO; 173 175 } 174 176 } 175 - return sysfs_emit(buf, p); 177 + return sysfs_emit(buf, "%s\n", output); 176 178 } 177 179 178 180 static DEVICE_ATTR_RO(runtime_status); 179 181 180 182 static ssize_t autosuspend_delay_ms_show(struct device *dev, 181 - struct device_attribute *attr, char *buf) 183 + struct device_attribute *attr, 184 + char *buf) 182 185 { 183 186 if (!dev->power.use_autosuspend) 184 187 return -EIO; 188 + 185 189 return sysfs_emit(buf, "%d\n", dev->power.autosuspend_delay); 186 190 } 187 191 ··· 349 345 static ssize_t wakeup_count_show(struct device *dev, 350 346 struct device_attribute *attr, char *buf) 351 347 { 352 - unsigned long count = 0; 348 + unsigned long count; 353 349 bool enabled = false; 354 350 355 351 spin_lock_irq(&dev->power.lock); ··· 358 354 enabled = true; 359 355 } 360 356 spin_unlock_irq(&dev->power.lock); 361 - return enabled ? sprintf(buf, "%lu\n", count) : sprintf(buf, "\n"); 357 + 358 + if (!enabled) 359 + return sysfs_emit(buf, "\n"); 360 + return sysfs_emit(buf, "%lu\n", count); 362 361 } 363 362 364 363 static DEVICE_ATTR_RO(wakeup_count); ··· 370 363 struct device_attribute *attr, 371 364 char *buf) 372 365 { 373 - unsigned long count = 0; 366 + unsigned long count; 374 367 bool enabled = false; 375 368 376 369 spin_lock_irq(&dev->power.lock); ··· 379 372 enabled = true; 380 373 } 381 374 spin_unlock_irq(&dev->power.lock); 382 - return enabled ? sprintf(buf, "%lu\n", count) : sprintf(buf, "\n"); 375 + 376 + if (!enabled) 377 + return sysfs_emit(buf, "\n"); 378 + return sysfs_emit(buf, "%lu\n", count); 383 379 } 384 380 385 381 static DEVICE_ATTR_RO(wakeup_active_count); ··· 391 381 struct device_attribute *attr, 392 382 char *buf) 393 383 { 394 - unsigned long count = 0; 384 + unsigned long count; 395 385 bool enabled = false; 396 386 397 387 spin_lock_irq(&dev->power.lock); ··· 400 390 enabled = true; 401 391 } 402 392 spin_unlock_irq(&dev->power.lock); 403 - return enabled ? sprintf(buf, "%lu\n", count) : sprintf(buf, "\n"); 393 + 394 + if (!enabled) 395 + return sysfs_emit(buf, "\n"); 396 + return sysfs_emit(buf, "%lu\n", count); 404 397 } 405 398 406 399 static DEVICE_ATTR_RO(wakeup_abort_count); ··· 412 399 struct device_attribute *attr, 413 400 char *buf) 414 401 { 415 - unsigned long count = 0; 402 + unsigned long count; 416 403 bool enabled = false; 417 404 418 405 spin_lock_irq(&dev->power.lock); ··· 421 408 enabled = true; 422 409 } 423 410 spin_unlock_irq(&dev->power.lock); 424 - return enabled ? sprintf(buf, "%lu\n", count) : sprintf(buf, "\n"); 411 + 412 + if (!enabled) 413 + return sysfs_emit(buf, "\n"); 414 + return sysfs_emit(buf, "%lu\n", count); 425 415 } 426 416 427 417 static DEVICE_ATTR_RO(wakeup_expire_count); ··· 432 416 static ssize_t wakeup_active_show(struct device *dev, 433 417 struct device_attribute *attr, char *buf) 434 418 { 435 - unsigned int active = 0; 419 + unsigned int active; 436 420 bool enabled = false; 437 421 438 422 spin_lock_irq(&dev->power.lock); ··· 441 425 enabled = true; 442 426 } 443 427 spin_unlock_irq(&dev->power.lock); 444 - return enabled ? sprintf(buf, "%u\n", active) : sprintf(buf, "\n"); 428 + 429 + if (!enabled) 430 + return sysfs_emit(buf, "\n"); 431 + return sysfs_emit(buf, "%u\n", active); 445 432 } 446 433 447 434 static DEVICE_ATTR_RO(wakeup_active); ··· 453 434 struct device_attribute *attr, 454 435 char *buf) 455 436 { 456 - s64 msec = 0; 437 + s64 msec; 457 438 bool enabled = false; 458 439 459 440 spin_lock_irq(&dev->power.lock); ··· 462 443 enabled = true; 463 444 } 464 445 spin_unlock_irq(&dev->power.lock); 465 - return enabled ? sprintf(buf, "%lld\n", msec) : sprintf(buf, "\n"); 446 + 447 + if (!enabled) 448 + return sysfs_emit(buf, "\n"); 449 + return sysfs_emit(buf, "%lld\n", msec); 466 450 } 467 451 468 452 static DEVICE_ATTR_RO(wakeup_total_time_ms); ··· 473 451 static ssize_t wakeup_max_time_ms_show(struct device *dev, 474 452 struct device_attribute *attr, char *buf) 475 453 { 476 - s64 msec = 0; 454 + s64 msec; 477 455 bool enabled = false; 478 456 479 457 spin_lock_irq(&dev->power.lock); ··· 482 460 enabled = true; 483 461 } 484 462 spin_unlock_irq(&dev->power.lock); 485 - return enabled ? sprintf(buf, "%lld\n", msec) : sprintf(buf, "\n"); 463 + 464 + if (!enabled) 465 + return sysfs_emit(buf, "\n"); 466 + return sysfs_emit(buf, "%lld\n", msec); 486 467 } 487 468 488 469 static DEVICE_ATTR_RO(wakeup_max_time_ms); ··· 494 469 struct device_attribute *attr, 495 470 char *buf) 496 471 { 497 - s64 msec = 0; 472 + s64 msec; 498 473 bool enabled = false; 499 474 500 475 spin_lock_irq(&dev->power.lock); ··· 503 478 enabled = true; 504 479 } 505 480 spin_unlock_irq(&dev->power.lock); 506 - return enabled ? sprintf(buf, "%lld\n", msec) : sprintf(buf, "\n"); 481 + 482 + if (!enabled) 483 + return sysfs_emit(buf, "\n"); 484 + return sysfs_emit(buf, "%lld\n", msec); 507 485 } 508 486 509 487 static inline int dpm_sysfs_wakeup_change_owner(struct device *dev, kuid_t kuid, ··· 524 496 struct device_attribute *attr, 525 497 char *buf) 526 498 { 527 - s64 msec = 0; 499 + s64 msec; 528 500 bool enabled = false; 529 501 530 502 spin_lock_irq(&dev->power.lock); ··· 533 505 enabled = true; 534 506 } 535 507 spin_unlock_irq(&dev->power.lock); 536 - return enabled ? sprintf(buf, "%lld\n", msec) : sprintf(buf, "\n"); 508 + 509 + if (!enabled) 510 + return sysfs_emit(buf, "\n"); 511 + return sysfs_emit(buf, "%lld\n", msec); 537 512 } 538 513 539 514 static DEVICE_ATTR_RO(wakeup_prevent_sleep_time_ms);
+4 -1
drivers/base/power/wakeup_stats.c
··· 26 26 { \ 27 27 struct wakeup_source *ws = dev_get_drvdata(dev); \ 28 28 \ 29 - return sprintf(buf, "%lu\n", ws->_name); \ 29 + return sysfs_emit(buf, "%lu\n", ws->_name); \ 30 30 } \ 31 31 static DEVICE_ATTR_RO(_name) 32 32 ··· 57 57 active_time = ktime_sub(ktime_get(), ws->last_time); 58 58 total_time = ktime_add(total_time, active_time); 59 59 } 60 + 60 61 return sysfs_emit(buf, "%lld\n", ktime_to_ms(total_time)); 61 62 } 62 63 static DEVICE_ATTR_RO(total_time_ms); ··· 74 73 if (active_time > max_time) 75 74 max_time = active_time; 76 75 } 76 + 77 77 return sysfs_emit(buf, "%lld\n", ktime_to_ms(max_time)); 78 78 } 79 79 static DEVICE_ATTR_RO(max_time_ms); ··· 108 106 prevent_sleep_time = ktime_add(prevent_sleep_time, 109 107 ktime_sub(ktime_get(), ws->start_prevent_time)); 110 108 } 109 + 111 110 return sysfs_emit(buf, "%lld\n", ktime_to_ms(prevent_sleep_time)); 112 111 } 113 112 static DEVICE_ATTR_RO(prevent_suspend_time_ms);
+29 -33
drivers/base/soc.c
··· 17 17 18 18 static DEFINE_IDA(soc_ida); 19 19 20 - static ssize_t soc_info_get(struct device *dev, 21 - struct device_attribute *attr, 22 - char *buf); 20 + /* Prototype to allow declarations of DEVICE_ATTR(<foo>) before soc_info_show */ 21 + static ssize_t soc_info_show(struct device *dev, struct device_attribute *attr, 22 + char *buf); 23 23 24 24 struct soc_device { 25 25 struct device dev; ··· 31 31 .name = "soc", 32 32 }; 33 33 34 - static DEVICE_ATTR(machine, S_IRUGO, soc_info_get, NULL); 35 - static DEVICE_ATTR(family, S_IRUGO, soc_info_get, NULL); 36 - static DEVICE_ATTR(serial_number, S_IRUGO, soc_info_get, NULL); 37 - static DEVICE_ATTR(soc_id, S_IRUGO, soc_info_get, NULL); 38 - static DEVICE_ATTR(revision, S_IRUGO, soc_info_get, NULL); 34 + static DEVICE_ATTR(machine, 0444, soc_info_show, NULL); 35 + static DEVICE_ATTR(family, 0444, soc_info_show, NULL); 36 + static DEVICE_ATTR(serial_number, 0444, soc_info_show, NULL); 37 + static DEVICE_ATTR(soc_id, 0444, soc_info_show, NULL); 38 + static DEVICE_ATTR(revision, 0444, soc_info_show, NULL); 39 39 40 40 struct device *soc_device_to_device(struct soc_device *soc_dev) 41 41 { ··· 49 49 struct device *dev = kobj_to_dev(kobj); 50 50 struct soc_device *soc_dev = container_of(dev, struct soc_device, dev); 51 51 52 - if ((attr == &dev_attr_machine.attr) 53 - && (soc_dev->attr->machine != NULL)) 52 + if ((attr == &dev_attr_machine.attr) && soc_dev->attr->machine) 54 53 return attr->mode; 55 - if ((attr == &dev_attr_family.attr) 56 - && (soc_dev->attr->family != NULL)) 54 + if ((attr == &dev_attr_family.attr) && soc_dev->attr->family) 57 55 return attr->mode; 58 - if ((attr == &dev_attr_revision.attr) 59 - && (soc_dev->attr->revision != NULL)) 56 + if ((attr == &dev_attr_revision.attr) && soc_dev->attr->revision) 60 57 return attr->mode; 61 - if ((attr == &dev_attr_serial_number.attr) 62 - && (soc_dev->attr->serial_number != NULL)) 58 + if ((attr == &dev_attr_serial_number.attr) && soc_dev->attr->serial_number) 63 59 return attr->mode; 64 - if ((attr == &dev_attr_soc_id.attr) 65 - && (soc_dev->attr->soc_id != NULL)) 60 + if ((attr == &dev_attr_soc_id.attr) && soc_dev->attr->soc_id) 66 61 return attr->mode; 67 62 68 - /* Unknown or unfilled attribute. */ 63 + /* Unknown or unfilled attribute */ 69 64 return 0; 70 65 } 71 66 72 - static ssize_t soc_info_get(struct device *dev, 73 - struct device_attribute *attr, 74 - char *buf) 67 + static ssize_t soc_info_show(struct device *dev, struct device_attribute *attr, 68 + char *buf) 75 69 { 76 70 struct soc_device *soc_dev = container_of(dev, struct soc_device, dev); 71 + const char *output; 77 72 78 73 if (attr == &dev_attr_machine) 79 - return sysfs_emit(buf, "%s\n", soc_dev->attr->machine); 80 - if (attr == &dev_attr_family) 81 - return sysfs_emit(buf, "%s\n", soc_dev->attr->family); 82 - if (attr == &dev_attr_revision) 83 - return sysfs_emit(buf, "%s\n", soc_dev->attr->revision); 84 - if (attr == &dev_attr_serial_number) 85 - return sysfs_emit(buf, "%s\n", soc_dev->attr->serial_number); 86 - if (attr == &dev_attr_soc_id) 87 - return sysfs_emit(buf, "%s\n", soc_dev->attr->soc_id); 74 + output = soc_dev->attr->machine; 75 + else if (attr == &dev_attr_family) 76 + output = soc_dev->attr->family; 77 + else if (attr == &dev_attr_revision) 78 + output = soc_dev->attr->revision; 79 + else if (attr == &dev_attr_serial_number) 80 + output = soc_dev->attr->serial_number; 81 + else if (attr == &dev_attr_soc_id) 82 + output = soc_dev->attr->soc_id; 83 + else 84 + return -EINVAL; 88 85 89 - return -EINVAL; 90 - 86 + return sysfs_emit(buf, "%s\n", output); 91 87 } 92 88 93 89 static struct attribute *soc_attr[] = {
+5 -5
drivers/base/topology.c
··· 14 14 #include <linux/hardirq.h> 15 15 #include <linux/topology.h> 16 16 17 - #define define_id_show_func(name) \ 18 - static ssize_t name##_show(struct device *dev, \ 19 - struct device_attribute *attr, char *buf) \ 20 - { \ 21 - return sprintf(buf, "%d\n", topology_##name(dev->id)); \ 17 + #define define_id_show_func(name) \ 18 + static ssize_t name##_show(struct device *dev, \ 19 + struct device_attribute *attr, char *buf) \ 20 + { \ 21 + return sysfs_emit(buf, "%d\n", topology_##name(dev->id)); \ 22 22 } 23 23 24 24 #define define_siblings_show_map(name, mask) \