@@ -139,11 +139,11 @@ EXPORT_SYMBOL_GPL(cpu_subsys);
139139#ifdef CONFIG_KEXEC
140140#include <linux/kexec.h>
141141
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 ,
143144 char * buf )
144145{
145146 struct cpu * cpu = container_of (dev , struct cpu , dev );
146- ssize_t rc ;
147147 unsigned long long addr ;
148148 int cpunum ;
149149
@@ -156,21 +156,18 @@ static ssize_t show_crash_notes(struct device *dev, struct device_attribute *att
156156 * operation should be safe. No locking required.
157157 */
158158 addr = per_cpu_ptr_to_phys (per_cpu_ptr (crash_notes , cpunum ));
159- rc = sysfs_emit ( buf , "%Lx\n" , addr );
160- return rc ;
159+
160+ return sysfs_emit ( buf , "%llx\n" , addr ) ;
161161}
162- static DEVICE_ATTR (crash_notes , 0400 , show_crash_notes , NULL );
162+ static DEVICE_ATTR_ADMIN_RO (crash_notes );
163163
164- static ssize_t show_crash_notes_size (struct device * dev ,
164+ static ssize_t crash_notes_size_show (struct device * dev ,
165165 struct device_attribute * attr ,
166166 char * buf )
167167{
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 ));
172169}
173- static DEVICE_ATTR (crash_notes_size , 0400 , show_crash_notes_size , NULL );
170+ static DEVICE_ATTR_ADMIN_RO (crash_notes_size );
174171
175172static struct attribute * crash_note_cpu_attrs [] = {
176173 & dev_attr_crash_notes .attr ,
@@ -241,55 +238,55 @@ unsigned int total_cpus;
241238static ssize_t print_cpus_offline (struct device * dev ,
242239 struct device_attribute * attr , char * buf )
243240{
244- int n = 0 , len = PAGE_SIZE - 2 ;
241+ int len = 0 ;
245242 cpumask_var_t offline ;
246243
247244 /* display offline cpus < nr_cpu_ids */
248245 if (!alloc_cpumask_var (& offline , GFP_KERNEL ))
249246 return - ENOMEM ;
250247 cpumask_andnot (offline , cpu_possible_mask , cpu_online_mask );
251- n = scnprintf (buf , len , "%*pbl" , cpumask_pr_args (offline ));
248+ len += sysfs_emit_at (buf , len , "%*pbl" , cpumask_pr_args (offline ));
252249 free_cpumask_var (offline );
253250
254251 /* display offline cpus >= nr_cpu_ids */
255252 if (total_cpus && nr_cpu_ids < total_cpus ) {
256- if (n && n < len )
257- buf [n ++ ] = ',' ;
253+ len += sysfs_emit_at (buf , len , "," );
258254
259255 if (nr_cpu_ids == total_cpus - 1 )
260- n += scnprintf ( & buf [ n ] , len - n , "%u" , nr_cpu_ids );
256+ len += sysfs_emit_at ( buf , len , "%u" , nr_cpu_ids );
261257 else
262- n += scnprintf ( & buf [ n ] , len - n , "%u-%d" ,
263- nr_cpu_ids , total_cpus - 1 );
258+ len += sysfs_emit_at ( buf , len , "%u-%d" ,
259+ nr_cpu_ids , total_cpus - 1 );
264260 }
265261
266- n += scnprintf (& buf [n ], len - n , "\n" );
267- return n ;
262+ len += sysfs_emit_at (buf , len , "\n" );
263+
264+ return len ;
268265}
269266static DEVICE_ATTR (offline , 0444 , print_cpus_offline , NULL) ;
270267
271268static ssize_t print_cpus_isolated (struct device * dev ,
272269 struct device_attribute * attr , char * buf )
273270{
274- int n ;
271+ int len ;
275272 cpumask_var_t isolated ;
276273
277274 if (!alloc_cpumask_var (& isolated , GFP_KERNEL ))
278275 return - ENOMEM ;
279276
280277 cpumask_andnot (isolated , cpu_possible_mask ,
281278 housekeeping_cpumask (HK_FLAG_DOMAIN ));
282- n = sysfs_emit (buf , "%*pbl\n" , cpumask_pr_args (isolated ));
279+ len = sysfs_emit (buf , "%*pbl\n" , cpumask_pr_args (isolated ));
283280
284281 free_cpumask_var (isolated );
285282
286- return n ;
283+ return len ;
287284}
288285static DEVICE_ATTR (isolated , 0444 , print_cpus_isolated , NULL) ;
289286
290287#ifdef CONFIG_NO_HZ_FULL
291288static ssize_t print_cpus_nohz_full (struct device * dev ,
292- struct device_attribute * attr , char * buf )
289+ struct device_attribute * attr , char * buf )
293290{
294291 return sysfs_emit (buf , "%*pbl\n" , cpumask_pr_args (tick_nohz_full_mask ));
295292}
@@ -320,22 +317,23 @@ static ssize_t print_cpu_modalias(struct device *dev,
320317 struct device_attribute * attr ,
321318 char * buf )
322319{
323- ssize_t n ;
320+ int len = 0 ;
324321 u32 i ;
325322
326- n = sysfs_emit (buf , "cpu:type:" CPU_FEATURE_TYPEFMT ":feature:" ,
327- CPU_FEATURE_TYPEVAL );
323+ len += sysfs_emit_at (buf , len ,
324+ "cpu:type:" CPU_FEATURE_TYPEFMT ":feature:" ,
325+ CPU_FEATURE_TYPEVAL );
328326
329327 for (i = 0 ; i < MAX_CPU_FEATURES ; i ++ )
330328 if (cpu_have_feature (i )) {
331- if (PAGE_SIZE < n + sizeof (",XXXX\n" )) {
329+ if (len + sizeof (",XXXX\n" ) >= PAGE_SIZE ) {
332330 WARN (1 , "CPU features overflow page\n" );
333331 break ;
334332 }
335- n += sprintf ( & buf [ n ] , ",%04X" , i );
333+ len += sysfs_emit_at ( buf , len , ",%04X" , i );
336334 }
337- buf [ n ++ ] = '\n' ;
338- return n ;
335+ len += sysfs_emit_at ( buf , len , "\n" ) ;
336+ return len ;
339337}
340338
341339static int cpu_uevent (struct device * dev , struct kobj_uevent_env * env )
@@ -557,7 +555,7 @@ ssize_t __weak cpu_show_tsx_async_abort(struct device *dev,
557555}
558556
559557ssize_t __weak cpu_show_itlb_multihit (struct device * dev ,
560- struct device_attribute * attr , char * buf )
558+ struct device_attribute * attr , char * buf )
561559{
562560 return sysfs_emit (buf , "Not affected\n" );
563561}
0 commit comments