Patch "perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation" has been added to the 6.1-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     perf-x86-intel-pt-fix-pt_topa_entry_for_page-address.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 510b1d869a5f59ef89e7df108adfd7aa47e45cb5
Author: Adrian Hunter <adrian.hunter@xxxxxxxxx>
Date:   Mon Jun 24 23:10:57 2024 +0300

    perf/x86/intel/pt: Fix pt_topa_entry_for_page() address calculation
    
    [ Upstream commit 3520b251dcae2b4a27b95cd6f745c54fd658bda5 ]
    
    Currently, perf allocates an array of page pointers which is limited in
    size by MAX_PAGE_ORDER. That in turn limits the maximum Intel PT buffer
    size to 2GiB. Should that limitation be lifted, the Intel PT driver can
    support larger sizes, except for one calculation in
    pt_topa_entry_for_page(), which is limited to 32-bits.
    
    Fix pt_topa_entry_for_page() address calculation by adding a cast.
    
    Fixes: 39152ee51b77 ("perf/x86/intel/pt: Get rid of reverse lookup table for ToPA")
    Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240624201101.60186-4-adrian.hunter@xxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
index 42a55794004a7..e347e56030fd9 100644
--- a/arch/x86/events/intel/pt.c
+++ b/arch/x86/events/intel/pt.c
@@ -989,7 +989,7 @@ pt_topa_entry_for_page(struct pt_buffer *buf, unsigned int pg)
 	 * order allocations, there shouldn't be many of these.
 	 */
 	list_for_each_entry(topa, &buf->tables, list) {
-		if (topa->offset + topa->size > pg << PAGE_SHIFT)
+		if (topa->offset + topa->size > (unsigned long)pg << PAGE_SHIFT)
 			goto found;
 	}
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux