Re: [PATCH 5.10/5.15] can: hi311x: hi3110_can_ist(): fix potential use-after-free

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ Sasha's backport helper bot ]

Hi,

The upstream commit SHA1 provided is correct: 9ad86d377ef4a19c75a9c639964879a5b25a433b

WARNING: Author mismatch between patch and upstream commit:
Backport author: Vasiliy Kovalev<kovalev@xxxxxxxxxxxx>
Commit author: Dario Binacchi<dario.binacchi@xxxxxxxxxxxxxxxxxxxx>


Status in newer kernel trees:
6.12.y | Present (different SHA1: bc30b2fe8c54)
6.6.y | Present (different SHA1: 112802200944)
6.1.y | Present (different SHA1: 4ad77eb8f2e0)
5.15.y | Not found

Note: The patch differs from the upstream commit:
---
1:  9ad86d377ef4 ! 1:  6ca160114ff4 can: hi311x: hi3110_can_ist(): fix potential use-after-free
    @@ Metadata
      ## Commit message ##
         can: hi311x: hi3110_can_ist(): fix potential use-after-free
     
    +    [ Upstream commit 9ad86d377ef4a19c75a9c639964879a5b25a433b ]
    +
         The commit a22bd630cfff ("can: hi311x: do not report txerr and rxerr
         during bus-off") removed the reporting of rxerr and txerr even in case
         of correct operation (i. e. not bus-off).
    @@ Commit message
         Signed-off-by: Dario Binacchi <dario.binacchi@xxxxxxxxxxxxxxxxxxxx>
         Link: https://patch.msgid.link/20241122221650.633981-5-dario.binacchi@xxxxxxxxxxxxxxxxxxxx
         Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
    +    [kovalev: changed the call order of netif_rx_ni()
    +    according to netif_rx() of the upstream patch]
    +    Signed-off-by: Vasiliy Kovalev <kovalev@xxxxxxxxxxxx>
     
      ## drivers/net/can/spi/hi311x.c ##
     @@ drivers/net/can/spi/hi311x.c: static irqreturn_t hi3110_can_ist(int irq, void *dev_id)
      			tx_state = txerr >= rxerr ? new_state : 0;
      			rx_state = txerr <= rxerr ? new_state : 0;
      			can_change_state(net, cf, tx_state, rx_state);
    --			netif_rx(skb);
    +-			netif_rx_ni(skb);
      
      			if (new_state == CAN_STATE_BUS_OFF) {
    -+				netif_rx(skb);
    ++				netif_rx_ni(skb);
      				can_bus_off(net);
      				if (priv->can.restart_ms == 0) {
      					priv->force_quit = 1;
     @@ drivers/net/can/spi/hi311x.c: static irqreturn_t hi3110_can_ist(int irq, void *dev_id)
    - 				cf->can_id |= CAN_ERR_CNT;
    + 			} else {
      				cf->data[6] = txerr;
      				cf->data[7] = rxerr;
    -+				netif_rx(skb);
    ++				netif_rx_ni(skb);
      			}
      		}
      
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.15.y       |  Success    |  Success   |
| stable/linux-5.10.y       |  Success    |  Success   |




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux