OSDN Git Service

powerpc: Fix signedness bug in update_flash_db()
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 1 Oct 2018 16:44:58 +0000 (19:44 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Nov 2019 17:25:36 +0000 (18:25 +0100)
[ Upstream commit 014704e6f54189a203cc14c7c0bb411b940241bc ]

The "count < sizeof(struct os_area_db)" comparison is type promoted to
size_t so negative values of "count" are treated as very high values
and we accidentally return success instead of a negative error code.

This doesn't really change runtime much but it fixes a static checker
warning.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/powerpc/platforms/ps3/os-area.c

index 3db53e8..9b2ef76 100644 (file)
@@ -664,7 +664,7 @@ static int update_flash_db(void)
        db_set_64(db, &os_area_db_id_rtc_diff, saved_params.rtc_diff);
 
        count = os_area_flash_write(db, sizeof(struct os_area_db), pos);
-       if (count < sizeof(struct os_area_db)) {
+       if (count < 0 || count < sizeof(struct os_area_db)) {
                pr_debug("%s: os_area_flash_write failed %zd\n", __func__,
                         count);
                error = count < 0 ? count : -EIO;