Patch "firmware: arm_scmi: Fix list protocols enumeration in the base protocol" has been added to the 5.18-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

    firmware: arm_scmi: Fix list protocols enumeration in the base protocol

to the 5.18-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:
     firmware-arm_scmi-fix-list-protocols-enumeration-in-.patch
and it can be found in the queue-5.18 subdirectory.

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



commit 7d4a0d01aed12ae001814c4d08698b4de779d290
Author: Cristian Marussi <cristian.marussi@xxxxxxx>
Date:   Wed Mar 30 16:05:32 2022 +0100

    firmware: arm_scmi: Fix list protocols enumeration in the base protocol
    
    [ Upstream commit 8009120e0354a67068e920eb10dce532391361d0 ]
    
    While enumerating protocols implemented by the SCMI platform using
    BASE_DISCOVER_LIST_PROTOCOLS, the number of returned protocols is
    currently validated in an improper way since the check employs a sum
    between unsigned integers that could overflow and cause the check itself
    to be silently bypassed if the returned value 'loop_num_ret' is big
    enough.
    
    Fix the validation avoiding the addition.
    
    Link: https://lore.kernel.org/r/20220330150551.2573938-4-cristian.marussi@xxxxxxx
    Fixes: b6f20ff8bd94 ("firmware: arm_scmi: add common infrastructure and support for base protocol")
    Signed-off-by: Cristian Marussi <cristian.marussi@xxxxxxx>
    Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/firmware/arm_scmi/base.c b/drivers/firmware/arm_scmi/base.c
index f5219334fd3a..3fe172c03c24 100644
--- a/drivers/firmware/arm_scmi/base.c
+++ b/drivers/firmware/arm_scmi/base.c
@@ -197,7 +197,7 @@ scmi_base_implementation_list_get(const struct scmi_protocol_handle *ph,
 			break;
 
 		loop_num_ret = le32_to_cpu(*num_ret);
-		if (tot_num_ret + loop_num_ret > MAX_PROTOCOLS_IMP) {
+		if (loop_num_ret > MAX_PROTOCOLS_IMP - tot_num_ret) {
 			dev_err(dev, "No. of Protocol > MAX_PROTOCOLS_IMP");
 			break;
 		}



[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