Defined in 1 files as a function:

Referenced in 10 files:

Smatch caller information:

net/ipv6/ip6_input.c l3mdev_l3_rcv() -> netif_is_l3_slave()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

net/ipv6/ip6_offload.c inet6_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BIT_INFO 0 dev->features 0x200000000000000,0xffffffffffffffff
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/ipv6/udp.c inet6_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

drivers/net/vrf.c vrf_add_slave() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
BUF_SIZE 0 dev->nd_net.net (-1),10304,10432
CAPPED_DATA 0 dev->nd_net.net 1
DATA_SOURCE 0 dev $1
NOSPEC 0 dev->ifindex
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 dev->flags 0-526337[c]
USER_DATA 0 dev->ifindex 0-s32max[c]
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_napi_configs
NO_OVERFLOW_SIMPLE 0 dev->num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
LOCK2 global &rtnl_mutex
HALF_LOCKED2 &net->xfrm.xfrm_cfg_mutex
HALF_LOCKED2 global &audit_cmd_mutex.lock
HALF_LOCKED2 global &cb_lock
HALF_LOCKED2 global &crypto_cfg_mutex
HALF_LOCKED2 global &hwsim_phys_lock
HALF_LOCKED2 global &rx_queue_mutex

drivers/net/vrf.c vrf_device_event() -> netif_is_l3_slave()

Type Parameter Key Value
DATA_SOURCE 0 dev r netdev_notifier_info_to_dev

net/ipv4/tcp_offload.c inet_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BIT_INFO 0 dev->features 0x200000000000000,0xffffffffffffffff
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/core/filter.c dev_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
UNITS 0 dev unit_byte

net/ipv4/fib_semantics.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/ipv4/udp_offload.c inet_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BUF_SIZE 0 dev s32min-(-1),1-s32max
CAPPED_DATA 0 dev->nd_net.net 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/ipv6/udp_offload.c inet6_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
BUF_SIZE 0 dev s32min-(-1),1-s32max
BUF_SIZE 0 dev s32min-(-1),1-s32max
CAPPED_DATA 0 dev->nd_net.net 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/ipv6/addrconf.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
LOCK2 rcu_read

net/l3mdev/l3mdev.c l3mdev_fib_table_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 &net->rtnl_mutex
HALF_LOCKED2 global &rtnl_mutex
HALF_LOCKED2 rcu_read

net/l3mdev/l3mdev.c l3mdev_link_scope_lookup() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
CAPPED_DATA 0 dev->ifindex 1
DATA_SOURCE 0 dev r dev_get_by_index_rcu
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &ipvs->service_mutex
HALF_LOCKED2 &net->ipv4.mfc_mutex
HALF_LOCKED2 &net->ipv6.mfc_mutex
HALF_LOCKED2 &sk->sk_callback_lock
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 bh
HALF_LOCKED2 global &rx_queue_mutex
HALF_LOCKED2 sk

net/l3mdev/l3mdev.c l3mdev_master_ifindex_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

net/ipv4/udp.c inet_get_iif_sdif() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/core/lwt_bpf.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 bh
LOCK2 rcu_read
HALF_LOCKED2 &net->ipv4.mfc_mutex
HALF_LOCKED2 &net->ipv6.mfc_mutex
HALF_LOCKED2 &sk->sk_callback_lock
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 sk

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_rif_should_config() -> netif_is_l3_slave()

Type Parameter Key Value
HALF_LOCKED2 &mlxsw_sp->router->lock
HALF_LOCKED2 &router->lock
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct mlxsw_sp_router)->lock

net/bridge/br_netfilter_hooks.c ip_sabotage_in() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 rcu_read

net/ipv4/ip_input.c l3mdev_l3_rcv() -> netif_is_l3_slave()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

net/ipv6/output_core.c l3mdev_l3_out() -> netif_is_l3_slave()

Type Parameter Key Value
DATA_SOURCE 0 dev r skb_dst_dev_rcu
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &sk->sk_callback_lock
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 sk

net/ipv6/route.c ip6_rt_get_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 rcu_read
HALF_LOCKED2 bh

net/ipv6/route.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 rcu_read

net/ipv6/raw.c l3mdev_l3_out() -> netif_is_l3_slave()

Type Parameter Key Value
DATA_SOURCE 0 dev r skb_dst_dev_rcu
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &vq->mutex
HALF_LOCKED2 sk

net/ipv6/ip6_output.c l3mdev_l3_out() -> netif_is_l3_slave()

Type Parameter Key Value
DATA_SOURCE 0 dev r skb_dst_dev_rcu
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &net->xfrm.xfrm_state_lock
HALF_LOCKED2 bh

net/ipv6/ip6_output.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 bh

net/ipv6/ndisc.c ndisc_recv_ns() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
CAPPED_DATA 0 dev->nd_net.net 1
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
HALF_LOCKED2 &tbl->proxy_queue.lock
HALF_LOCKED2 rcu_read

net/ipv4/route.c ip_route_input_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
CAPPED_DATA 0 dev->ip_ptr 1
DATA_SOURCE 0 dev $4
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dev->group
NO_OVERFLOW_SIMPLE 0 dev->num_tc
NO_OVERFLOW_SIMPLE 0 dev->proto_down
NO_OVERFLOW_SIMPLE 0 dev->real_num_rx_queues
NO_OVERFLOW_SIMPLE 0 dev->real_num_tx_queues
NO_OVERFLOW_SIMPLE 0 dev->stats.rx_bytes
NO_OVERFLOW_SIMPLE 0 dev->stats.tx_bytes
NO_OVERFLOW_SIMPLE 0 dev->tx_queue_len
UNITS 0 dev unit_byte
LOCK2 rcu_read

net/ipv4/route.c l3mdev_master_dev_rcu() -> netif_is_l3_slave()

Type Parameter Key Value
PARAM_VALUE 0 dev 4096-ptr_max
DATA_SOURCE 0 dev $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 rcu_read

net/ipv4/ip_output.c l3mdev_l3_out() -> netif_is_l3_slave()

Type Parameter Key Value
DATA_SOURCE 0 dev r skb_dst_dev_rcu
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &sk->sk_callback_lock
HALF_LOCKED2 &sk->sk_lock.slock
HALF_LOCKED2 sk