Patch "net: mvneta: Fix an out of bounds check" has been added to the 4.9-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

    net: mvneta: Fix an out of bounds check

to the 4.9-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:
     net-mvneta-fix-an-out-of-bounds-check.patch
and it can be found in the queue-4.9 subdirectory.

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



commit 1259e2a5297fa60af6d29c0449195c7109fc5c83
Author: Dan Carpenter <error27@xxxxxxxxx>
Date:   Wed Dec 7 10:06:31 2022 +0300

    net: mvneta: Fix an out of bounds check
    
    [ Upstream commit cdd97383e19d4afe29adc3376025a15ae3bab3a3 ]
    
    In an earlier commit, I added a bounds check to prevent an out of bounds
    read and a WARN().  On further discussion and consideration that check
    was probably too aggressive.  Instead of returning -EINVAL, a better fix
    would be to just prevent the out of bounds read but continue the process.
    
    Background: The value of "pp->rxq_def" is a number between 0-7 by default,
    or even higher depending on the value of "rxq_number", which is a module
    parameter. If the value is more than the number of available CPUs then
    it will trigger the WARN() in cpu_max_bits_warn().
    
    Fixes: e8b4fc13900b ("net: mvneta: Prevent out of bounds read in mvneta_config_rss()")
    Signed-off-by: Dan Carpenter <error27@xxxxxxxxx>
    Reviewed-by: Leon Romanovsky <leonro@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/Y5A7d1E5ccwHTYPf@kadam
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 86eb258ed811..b2d42d276efd 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3278,7 +3278,7 @@ static void mvneta_percpu_elect(struct mvneta_port *pp)
 	/* Use the cpu associated to the rxq when it is online, in all
 	 * the other cases, use the cpu 0 which can't be offline.
 	 */
-	if (cpu_online(pp->rxq_def))
+	if (pp->rxq_def < nr_cpu_ids && cpu_online(pp->rxq_def))
 		elected_cpu = pp->rxq_def;
 
 	max_cpu = num_present_cpus();
@@ -3761,9 +3761,6 @@ static int  mvneta_config_rss(struct mvneta_port *pp)
 		napi_disable(&pcpu_port->napi);
 	}
 
-	if (pp->indir[0] >= nr_cpu_ids)
-		return -EINVAL;
-
 	pp->rxq_def = pp->indir[0];
 
 	/* Update unicast mapping */



[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