net: fix indirect calls helpers for ptype list hooks.
As Eric noted, the current wrapper for ptype func hook inside
__netif_receive_skb_list_ptype() has no chance of avoiding the indirect
call: we enter such code path only for protocols other than ipv4 and
ipv6.
Instead we can wrap the list_func invocation.
v1 -> v2:
- use the correct fix tag
Fixes: f5737cbadb
("net: use indirect calls helpers for ptype hook")
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Edward Cree <ecree@solarflare.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ceae266bf0
commit
fdf71426e7
|
@ -5025,12 +5025,12 @@ static inline void __netif_receive_skb_list_ptype(struct list_head *head,
|
|||
if (list_empty(head))
|
||||
return;
|
||||
if (pt_prev->list_func != NULL)
|
||||
pt_prev->list_func(head, pt_prev, orig_dev);
|
||||
INDIRECT_CALL_INET(pt_prev->list_func, ipv6_list_rcv,
|
||||
ip_list_rcv, head, pt_prev, orig_dev);
|
||||
else
|
||||
list_for_each_entry_safe(skb, next, head, list) {
|
||||
skb_list_del_init(skb);
|
||||
INDIRECT_CALL_INET(pt_prev->func, ipv6_rcv, ip_rcv, skb,
|
||||
skb->dev, pt_prev, orig_dev);
|
||||
pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user