Re: [PATCH 4.14] perf/core: Avoid put_page() when GUP fails

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

 



On Mon, Nov 22, 2021 at 09:18:25AM -0800, Greg Thelen wrote:
> commit 4716023a8f6a0f4a28047f14dd7ebdc319606b84 upstream.
> 
> PEBS PERF_SAMPLE_PHYS_ADDR events use perf_virt_to_phys() to convert PMU
> sampled virtual addresses to physical using get_user_page_fast_only()
> and page_to_phys().
> 
> Some get_user_page_fast_only() error cases return false, indicating no
> page reference, but still initialize the output page pointer with an
> unreferenced page. In these error cases perf_virt_to_phys() calls
> put_page(). This causes page reference count underflow, which can lead
> to unintentional page sharing.
> 
> Fix perf_virt_to_phys() to only put_page() if get_user_page_fast_only()
> returns a referenced page.
> 
> Fixes: fc7ce9c74c3ad ("perf/core, x86: Add PERF_SAMPLE_PHYS_ADDR")
> Signed-off-by: Greg Thelen <gthelen@xxxxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> Link: https://lkml.kernel.org/r/20211111021814.757086-1-gthelen@xxxxxxxxxx
> [gthelen: manual backport to 4.14]
> ---
>  kernel/events/core.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)

All now queued up,t hanks.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux