Re: [PATCH 06/14] md/bcache: Use %pS printk format for direct addresses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07.09.2017 06:50, Coly Li wrote:
> On 2017/9/7 上午4:27, Helge Deller wrote:
>> Use the %pS instead of the %pF printk format specifier for printing symbols
>> from direct addresses. This is needed for the ia64, ppc64 and parisc64
>> architectures.
>>
>> Signed-off-by: Helge Deller <deller@xxxxxx>
>> Cc: linux-bcache@xxxxxxxxxxxxxxx
>> Cc: linux-raid@xxxxxxxxxxxxxxx
>> ---
>>  drivers/md/bcache/closure.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/md/bcache/closure.c b/drivers/md/bcache/closure.c
>> index 864e673..0b0c9bc 100644
>> --- a/drivers/md/bcache/closure.c
>> +++ b/drivers/md/bcache/closure.c
>> @@ -175,7 +175,7 @@ static int debug_seq_show(struct seq_file *f, void *data)
>>  	list_for_each_entry(cl, &closure_list, all) {
>>  		int r = atomic_read(&cl->remaining);
>>  
>> -		seq_printf(f, "%p: %pF -> %pf p %p r %i ",
>> +		seq_printf(f, "%p: %pS -> %pf p %p r %i ",
>>  			   cl, (void *) cl->ip, cl->fn, cl->parent,
>>  			   r & CLOSURE_REMAINING_MASK);
>>  
>> @@ -187,7 +187,7 @@ static int debug_seq_show(struct seq_file *f, void *data)
>>  			   r & CLOSURE_SLEEPING	? "Sl" : "");
>>  
>>  		if (r & CLOSURE_WAITING)
>> -			seq_printf(f, " W %pF\n",
>> +			seq_printf(f, " W %pS\n",
>>  				   (void *) cl->waiting_on);
>>  
>>  		seq_printf(f, "\n");
>>
> 
> It is unclear to me, that if %pF is used, on ia64/ppc64/parisc64 a
> function descriptor conversion happens, what negative effect exactly
> takes place ?

On ia64/ppc64/parisc64 the kernel will crash here in the worst case, because
vsprintf() will try to read a pointer from that address and resolve it. 
But you hand over a return address (_RET_IP_) which should be 
resolved directly to a symbol. For that you need to use the %pS specifier,
which is what my patch does.

The patch has no negative effect on any platform. Output will still be the
same on x86/mips/arm/... as it has been before with %pF. The only positive
effect of the patch is that the seq_printf will now show correct output on 
ia64/ppc64/parisc64 too.

Helge
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux