Patch "ethtool: avoiding integer overflow in ethtool_phys_id()" has been added to the 6.0-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

    ethtool: avoiding integer overflow in ethtool_phys_id()

to the 6.0-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:
     ethtool-avoiding-integer-overflow-in-ethtool_phys_id.patch
and it can be found in the queue-6.0 subdirectory.

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



commit 39165a69c8a68e6c8cbaaa0a069abf3a60db332e
Author: Maxim Korotkov <korotkov.maxim.s@xxxxxxxxx>
Date:   Tue Nov 22 15:29:01 2022 +0300

    ethtool: avoiding integer overflow in ethtool_phys_id()
    
    [ Upstream commit 64a8f8f7127da228d59a39e2c5e75f86590f90b4 ]
    
    The value of an arithmetic expression "n * id.data" is subject
    to possible overflow due to a failure to cast operands to a larger data
    type before performing arithmetic. Used macro for multiplication instead
    operator for avoiding overflow.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Maxim Korotkov <korotkov.maxim.s@xxxxxxxxx>
    Reviewed-by: Alexander Lobakin <alexandr.lobakin@xxxxxxxxx>
    Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
    Link: https://lore.kernel.org/r/20221122122901.22294-1-korotkov.maxim.s@xxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 6a7308de192d..6b59e7a1c906 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -2007,7 +2007,8 @@ static int ethtool_phys_id(struct net_device *dev, void __user *useraddr)
 	} else {
 		/* Driver expects to be called at twice the frequency in rc */
 		int n = rc * 2, interval = HZ / n;
-		u64 count = n * id.data, i = 0;
+		u64 count = mul_u32_u32(n, id.data);
+		u64 i = 0;
 
 		do {
 			rtnl_lock();



[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