On 15/02/2023 11:11, Amit Daniel Kachhap wrote:
On 2/10/23 14:46, Kevin Brodsky wrote:
send_sig_perf() and variants take a user pointer as first argument, matching the type of si_addr. However si_addr just represents an
May be the commit log can be like for better clarity, "However si_addr is just assigned an address here, not ..."
I really mean that si_addr represents an address. Its type is user pointer, but it never is a full pointer, we only ever set its address. See also the "Type of si_addr" note in the PCuABI spec [1].
Kevin
[1] https://git.morello-project.org/morello/kernel/linux/-/wikis/Morello-pure-ca...
Amit
address, not a valid user pointer. It is therefore appropriate to pass the address as an (invalid) user pointer, using as_user_ptr().
Signed-off-by: Kevin Brodsky kevin.brodsky@arm.com
kernel/events/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c index 37e013afb718..c362d35cdf40 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -6480,7 +6480,7 @@ static void perf_sigtrap(struct perf_event *event) if (current->flags & PF_EXITING) return; - send_sig_perf((void __user *)event->pending_addr, + send_sig_perf(as_user_ptr(event->pending_addr), event->attr.type, event->attr.sig_data); }