2021-09-23 04:01:16

by Guo Zhi

[permalink] [raw]
Subject: [PATCH] staging: vchip_arm: Fix misuse of %x

Pointers should be printed with %p or %px rather than
cast to (unsigned long) and printed with %lx.
Change %lx to %pK to print the pointers.

Signed-off-by: Guo Zhi <[email protected]>
---
.../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index b5aac862a29..408e5fe710b 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -591,11 +591,11 @@ service_callback(enum vchiq_reason reason, struct vchiq_header *header,
return VCHIQ_SUCCESS;

vchiq_log_trace(vchiq_arm_log_level,
- "%s - service %lx(%d,%p), reason %d, header %lx, instance %lx, bulk_userdata %lx",
- __func__, (unsigned long)user_service,
+ "%s - service %pK(%d,%p), reason %d, header %pK, instance %pK, bulk_userdata %pK",
+ __func__, user_service,
service->localport, user_service->userdata,
- reason, (unsigned long)header,
- (unsigned long)instance, (unsigned long)bulk_userdata);
+ reason, header,
+ instance, bulk_userdata);

if (header && user_service->is_vchi) {
spin_lock(&msg_queue_spinlock);
--
2.33.0


2021-09-23 05:21:44

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

On Thu, Sep 23, 2021 at 11:55:54AM +0800, Guo Zhi wrote:
> Pointers should be printed with %p or %px rather than
> cast to (unsigned long) and printed with %lx.
> Change %lx to %pK to print the pointers.
>
> Signed-off-by: Guo Zhi <[email protected]>
> ---
> .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index b5aac862a29..408e5fe710b 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -591,11 +591,11 @@ service_callback(enum vchiq_reason reason, struct vchiq_header *header,
> return VCHIQ_SUCCESS;
>
> vchiq_log_trace(vchiq_arm_log_level,
> - "%s - service %lx(%d,%p), reason %d, header %lx, instance %lx, bulk_userdata %lx",
> - __func__, (unsigned long)user_service,
> + "%s - service %pK(%d,%p), reason %d, header %pK, instance %pK, bulk_userdata %pK",
> + __func__, user_service,
> service->localport, user_service->userdata,
> - reason, (unsigned long)header,
> - (unsigned long)instance, (unsigned long)bulk_userdata);
> + reason, header,
> + instance, bulk_userdata);

Why print this out at all? What uses this? Can it just be deleted?

thanks,

greg k-h

2021-09-23 10:22:48

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

Add Phil

Am 23.09.21 um 07:19 schrieb Greg KH:
> On Thu, Sep 23, 2021 at 11:55:54AM +0800, Guo Zhi wrote:
>> Pointers should be printed with %p or %px rather than
>> cast to (unsigned long) and printed with %lx.
>> Change %lx to %pK to print the pointers.
>>
>> Signed-off-by: Guo Zhi <[email protected]>
>> ---
>> .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> index b5aac862a29..408e5fe710b 100644
>> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> @@ -591,11 +591,11 @@ service_callback(enum vchiq_reason reason, struct vchiq_header *header,
>> return VCHIQ_SUCCESS;
>>
>> vchiq_log_trace(vchiq_arm_log_level,
>> - "%s - service %lx(%d,%p), reason %d, header %lx, instance %lx, bulk_userdata %lx",
>> - __func__, (unsigned long)user_service,
>> + "%s - service %pK(%d,%p), reason %d, header %pK, instance %pK, bulk_userdata %pK",
>> + __func__, user_service,
>> service->localport, user_service->userdata,
>> - reason, (unsigned long)header,
>> - (unsigned long)instance, (unsigned long)bulk_userdata);
>> + reason, header,
>> + instance, bulk_userdata);
> Why print this out at all? What uses this? Can it just be deleted?
>
> thanks,
>
> greg k-h
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2021-09-23 13:02:27

by Guo Zhi

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

We should restrict kernel pointer leakage issue by using kptr_restrict.
Therefore kernel pointers should be specified by %pK rather than %lx.

Thanks.

Guo

----- Original Message -----
From: "Greg KH" <[email protected]>
To: "Guo Zhi" <[email protected]>
Cc: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], "kan liang" <[email protected]>, [email protected], [email protected], [email protected], [email protected], [email protected], "linux-kernel" <[email protected]>
Sent: Thursday, September 23, 2021 1:19:34 PM
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

On Thu, Sep 23, 2021 at 11:55:54AM +0800, Guo Zhi wrote:
> Pointers should be printed with %p or %px rather than
> cast to (unsigned long) and printed with %lx.
> Change %lx to %pK to print the pointers.
>
> Signed-off-by: Guo Zhi <[email protected]>
> ---
> .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index b5aac862a29..408e5fe710b 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -591,11 +591,11 @@ service_callback(enum vchiq_reason reason, struct vchiq_header *header,
> return VCHIQ_SUCCESS;
>
> vchiq_log_trace(vchiq_arm_log_level,
> - "%s - service %lx(%d,%p), reason %d, header %lx, instance %lx, bulk_userdata %lx",
> - __func__, (unsigned long)user_service,
> + "%s - service %pK(%d,%p), reason %d, header %pK, instance %pK, bulk_userdata %pK",
> + __func__, user_service,
> service->localport, user_service->userdata,
> - reason, (unsigned long)header,
> - (unsigned long)instance, (unsigned long)bulk_userdata);
> + reason, header,
> + instance, bulk_userdata);

Why print this out at all? What uses this? Can it just be deleted?

thanks,

greg k-h

2021-09-23 13:18:15

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

A: http://en.wikipedia.org/wiki/Top_post
Q: Were do I find info about this thing called top-posting?
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?

A: No.
Q: Should I include quotations after my reply?


http://daringfireball.net/2007/07/on_top

On Thu, Sep 23, 2021 at 08:57:40PM +0800, Guo Zhi wrote:
> We should restrict kernel pointer leakage issue by using kptr_restrict.
> Therefore kernel pointers should be specified by %pK rather than %lx.

I totally agree.

What I am asking about is why is this message needed at all? Why not
just remove the whole thing? Who uses it?

thanks,

greg k-h

2021-09-24 02:59:06

by Guo Zhi

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

On 2021/9/23 13:19, Greg KH wrote:
> On Thu, Sep 23, 2021 at 11:55:54AM +0800, Guo Zhi wrote:
>> Pointers should be printed with %p or %px rather than
>> cast to (unsigned long) and printed with %lx.
>> Change %lx to %pK to print the pointers.
>>
>> Signed-off-by: Guo Zhi <[email protected]>
>> ---
>> .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> index b5aac862a29..408e5fe710b 100644
>> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
>> @@ -591,11 +591,11 @@ service_callback(enum vchiq_reason reason, struct vchiq_header *header,
>> return VCHIQ_SUCCESS;
>>
>> vchiq_log_trace(vchiq_arm_log_level,
>> - "%s - service %lx(%d,%p), reason %d, header %lx, instance %lx, bulk_userdata %lx",
>> - __func__, (unsigned long)user_service,
>> + "%s - service %pK(%d,%p), reason %d, header %pK, instance %pK, bulk_userdata %pK",
>> + __func__, user_service,
>> service->localport, user_service->userdata,
>> - reason, (unsigned long)header,
>> - (unsigned long)instance, (unsigned long)bulk_userdata);
>> + reason, header,
>> + instance, bulk_userdata);
> Why print this out at all? What uses this? Can it just be deleted?
>
> thanks,
>
> greg k-h

This information is printed for debugging usage.

But malicious user process can also print it through debugfs at
/sys/kernel/debug.

As it can be used for debugging, it's a little radical to just delete.

Therefore, I suggest replacing %lx with %pK to avoid kernel address leakage.

thanks,

Guo


2021-09-27 15:37:09

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] staging: vchip_arm: Fix misuse of %x

On Thu, Sep 23, 2021 at 11:55:54AM +0800, Guo Zhi wrote:
> Pointers should be printed with %p or %px rather than
> cast to (unsigned long) and printed with %lx.
> Change %lx to %pK to print the pointers.
>
> Signed-off-by: Guo Zhi <[email protected]>
> ---
> .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)

Does not apply to my tree :(

Please rebase and resend.

thanks,

greg k-h