Patch "octeontx2-af: Add validation before accessing cgx and lmac" 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

    octeontx2-af: Add validation before accessing cgx and lmac

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:
     octeontx2-af-add-validation-before-accessing-cgx-and.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 abfdc229d42676f45f9fd0b7246b4309d51b7ed2
Author: Hariprasad Kelam <hkelam@xxxxxxxxxxx>
Date:   Fri Jun 30 11:58:44 2023 +0530

    octeontx2-af: Add validation before accessing cgx and lmac
    
    [ Upstream commit 79ebb53772c95d3a6ae51b3c65f9985fdd430df6 ]
    
    with the addition of new MAC blocks like CN10K RPM and CN10KB
    RPM_USX, LMACs are noncontiguous and CGX blocks are also
    noncontiguous. But during RVU driver initialization, the driver
    is assuming they are contiguous and trying to access
    cgx or lmac with their id which is resulting in kernel panic.
    
    This patch fixes the issue by adding proper checks.
    
    [   23.219150] pc : cgx_lmac_read+0x38/0x70
    [   23.219154] lr : rvu_program_channels+0x3f0/0x498
    [   23.223852] sp : ffff000100d6fc80
    [   23.227158] x29: ffff000100d6fc80 x28: ffff00010009f880 x27:
    000000000000005a
    [   23.234288] x26: ffff000102586768 x25: 0000000000002500 x24:
    fffffffffff0f000
    
    Fixes: 91c6945ea1f9 ("octeontx2-af: cn10k: Add RPM MAC support")
    Signed-off-by: Hariprasad Kelam <hkelam@xxxxxxxxxxx>
    Signed-off-by: Sunil Goutham <sgoutham@xxxxxxxxxxx>
    Reviewed-by: Simon Horman <simon.horman@xxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/marvell/octeontx2/af/cgx.c b/drivers/net/ethernet/marvell/octeontx2/af/cgx.c
index afdddfced7e69..65c0373d34d12 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/cgx.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/cgx.c
@@ -167,6 +167,9 @@ void cgx_lmac_write(int cgx_id, int lmac_id, u64 offset, u64 val)
 {
 	struct cgx *cgx_dev = cgx_get_pdata(cgx_id);
 
+	/* Software must not access disabled LMAC registers */
+	if (!is_lmac_valid(cgx_dev, lmac_id))
+		return;
 	cgx_write(cgx_dev, lmac_id, offset, val);
 }
 
@@ -174,6 +177,10 @@ u64 cgx_lmac_read(int cgx_id, int lmac_id, u64 offset)
 {
 	struct cgx *cgx_dev = cgx_get_pdata(cgx_id);
 
+	/* Software must not access disabled LMAC registers */
+	if (!is_lmac_valid(cgx_dev, lmac_id))
+		return 0;
+
 	return cgx_read(cgx_dev, lmac_id, offset);
 }
 



[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