From: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
This series:
1. Makes the irq_queue per-CPU so the handlers no longer share a list.
2. Fixes at91_can rx-offload teardown.
3. Checks the can_rx_offload_add_manual() return value in gs_usb.
Changes since v4:
- rx-offload: expand the comment above the for_each_possible_cpu() loop
in can_rx_offload_threaded_irq_finish() to add the single-producer
assumption (IRQ requested with IRQF_ONESHOT / handler non-reentrant).
Suggested by Haibo Chen.
- rx-offload: add Reviewed-by: Haibo Chen [off-list ref]
Changes since v3:
- In gs_usb driver, check the can_rx_offload_add_manual() return value,
the same NULL-deref the per-CPU change exposes.
Changes since v2:
- at91_can: also add can_rx_offload_del() on the register_candev() error
path and check the can_rx_offload_add_timestamp() return value.
Changes since v1:
- The enqueue helpers used this_cpu_ptr() without disabling preemption.
All four enqueue helpers now use get_cpu_ptr()/put_cpu_ptr().
- Guard can_rx_offload_del() against skb_irq_queue == NULL.
- Fix 'at91_can' memory leak by adding missing 'can_rx_offload_del'.
Ciprian Marian Costea (3):
can: rx-offload: make skb_irq_queue per-CPU
can: at91_can: fix rx-offload cleanup on unbind and probe errors
can: gs_usb: check can_rx_offload_add_manual() return value
drivers/net/can/at91_can.c | 10 +++-
drivers/net/can/dev/rx-offload.c | 88 +++++++++++++++++++++++++++-----
drivers/net/can/usb/gs_usb.c | 5 +-
include/linux/can/rx-offload.h | 2 +-
4 files changed, 87 insertions(+), 18 deletions(-)
--
2.43.0