Re: [PATCH RESEND] scsi: ultrastor: Use correct format identifier for kernel pointer
From: William Breathitt Gray
Date: Sun May 01 2016 - 19:18:53 EST
On Sun, May 01, 2016 at 04:08:25PM -0700, James Bottomley wrote:
>On Sun, 2016-05-01 at 17:57 -0400, William Breathitt Gray wrote:
>> The 'bios_segment' member of a struct ultrastor_config is passed to the
>> sprintf function with a respective %05X format identifier. The
>> 'bio_segment' member is a kernel pointer, but the %X format identifier
>> expects an int data type. A cast to int is correctly used to satisfy the
>> format identifier, but this assumes that the int data type is the same
>> size as the kernel pointer, which is not the case on several
>> architectures such as X86_64. This patch removes the int cast and
>> replaces the %05X format identifier with %pK in order to print the
>> 'bio_segment' member regardless of architecture.
>
>But this statement is wrong: ultrastor only has seven possible hard
>coded bios segment values, all under 20 bits, as it happens, that's why
>the printk is %05X. Unless you're proposing to alter values in the
>static table, there's no point in changing the print, is there? Are
>you proposing to alter the static table values?
>
>James
I'm sorry, I didn't realize bios_segment values were all under 20 bits;
in which case they should all fit within the original 5 digit
hexadecimal print. Please ignore this patch then as it was a
misunderstanding on my part.
Thanks,
William Breathitt Gray