]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
xirc2ps_cs: fix register access when enabling FullDuplex
authorAlok Tiwari <alok.a.tiwari@oracle.com>
Wed, 27 Aug 2025 19:26:43 +0000 (12:26 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 30 Aug 2025 02:05:11 +0000 (19:05 -0700)
The current code incorrectly passes (XIRCREG1_ECR | FullDuplex) as
the register address to GetByte(), instead of fetching the register
value and OR-ing it with FullDuplex. This results in an invalid
register access.

Fix it by reading XIRCREG1_ECR first, then or-ing with FullDuplex
before writing it back.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20250827192645.658496-1-alok.a.tiwari@oracle.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/xircom/xirc2ps_cs.c

index a31d5d5e65936d88615bf28d5b5e3a650b8cc8a7..97e88886253f5444890e0c7c100c15991def039d 100644 (file)
@@ -1576,7 +1576,7 @@ do_reset(struct net_device *dev, int full)
            msleep(40);                 /* wait 40 msec to let it complete */
        }
        if (full_duplex)
-           PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR | FullDuplex));
+           PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR) | FullDuplex);
     } else {  /* No MII */
        SelectPage(0);
        value = GetByte(XIRCREG_ESR);    /* read the ESR */