kernel/power/hibernate.c: use unsigned variables instead of signed variables in swsusp_show_speed()
Subsystems (2)
PATCH v3 1/1 kernel/power/hibernate.c: use unsigned variables instead of signed variables in swsusp_show_speed()
do_div() needs 'u64' type, or it reports warning. And negative number is meaningless for "speed", so change all signed to unsigned within swsusp_show_speed().
The related warning (with allmodconfig for unicore32):
CC kernel/power/hibernate.o
kernel/power/hibernate.c: In function ‘swsusp_show_speed’:
kernel/power/hibernate.c:237: warning: comparison of distinct pointer types lacks a cast
Signed-off-by Chen Gang <[email protected]>
--- kernel/power/hibernate.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
kernel/power/hibernate.c +9 -5
@@ -228,19 +228,23 @@ static void platform_recover(int platform_mode)void swsusp_show_speed (struct timeval *start,struct timeval *stop,unsigned nr_pages,char *msg) { -s64 elapsed_centisecs64; -int centisecs; -int k; -int kps; +u64 elapsed_centisecs64; +unsigned int centisecs; +unsigned int k; +unsigned int kps; elapsed_centisecs64 =timeval_to_ns (stop) -timeval_to_ns (start); +/* +* If "(s64)elapsed_centisecs64 < 0", it will print long elapsed time, +* it is obvious enough for what went wrong. +*/ do_div (elapsed_centisecs64,NSEC_PER_SEC /100 ); centisecs = elapsed_centisecs64;if (centisecs ==0 ) centisecs =1 ;/* avoid div-by-zero */ k = nr_pages * (PAGE_SIZE /1024 ); kps = (k *100 ) / centisecs; -printk (KERN_INFO "PM: %s %d kbytes in %d.%02d seconds (%d.%02d MB/s)\n" , +printk (KERN_INFO "PM: %s %u kbytes in %u.%02u seconds (%u.%02u MB/s)\n" , msg, k, centisecs /100 , centisecs %100 , kps /1000 , (kps %1000 ) /10 );
Signature · 1 line
1.9.2.459.g68773ac