]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
firmware: microchip: fix UL_IAP lock check in mpfs_auto_update_state()
authorValentina Fernandez <valentina.fernandezalanis@microchip.com>
Mon, 18 Nov 2024 15:53:54 +0000 (15:53 +0000)
committerConor Dooley <conor.dooley@microchip.com>
Thu, 5 Dec 2024 15:08:51 +0000 (15:08 +0000)
To verify that Auto Update is possible, the mpfs_auto_update_state()
function performs a "Query Security Service Request" to the system
controller.

Previously, the check was performed on the first element of the
response message, which was accessed using a 32-bit pointer. This
caused the bitwise operation to reference incorrect data, as the
response should be inspected at the byte level. Fixed this by casting
the response to a  u8 * pointer, ensuring the check correctly inspects
the appropriate byte of the response message.

Additionally, rename "UL_Auto Update" to "UL_IAP" to match the
PolarFire Family System Services User Guide.

Signed-off-by: Valentina Fernandez <valentina.fernandezalanis@microchip.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
drivers/firmware/microchip/mpfs-auto-update.c

index 38a03698cec957ce5b58169621c67d9a59945170..e194f7acb2a9b0f4404a952007c791731ab978cd 100644 (file)
@@ -402,10 +402,10 @@ static int mpfs_auto_update_available(struct mpfs_auto_update_priv *priv)
                return -EIO;
 
        /*
-        * Bit 5 of byte 1 is "UL_Auto Update" & if it is set, Auto Update is
+        * Bit 5 of byte 1 is "UL_IAP" & if it is set, Auto Update is
         * not possible.
         */
-       if (response_msg[1] & AUTO_UPDATE_FEATURE_ENABLED)
+       if ((((u8 *)response_msg)[1] & AUTO_UPDATE_FEATURE_ENABLED))
                return -EPERM;
 
        return 0;