On Tue, Feb 2, 2016 at 1:49 AM, Eric Dumazet <eric.duma...@gmail.com> wrote: > On Tue, 2016-02-02 at 01:16 +0800, Xin Long wrote: > >> no, no stack dump was found. >> by reviewing code, I found it when I cooked another patch. >> >> and the path that __ip_do_redirect() is called should be: >> >> icmp_rcv |-> icmp_unreach -\ >> |-> icmp_redirect -> icmp_socket_deliver -> >> ipprot->err_handler() >> [tcp_v4/6_err, sctp_v4/6_err, dccp_v4/6_err, udpv4/6_err ...] >> >> -> ... -> __ip_do_redirect() >> >> I checked the codes for many times, didn't find any rcu_lock on this path, >> unless we treat BH as rcu_lock. > > Well I believe you missed something yes. > > All RX paths run in rcu_read_lock() > > ip_local_deliver_finish() > ipv6_rcv() > ip6_input_finish()
Ah, right, I never thought the lock might start from ip_rcv. Thanks, Eric. > > >