cls_api.c (802d00bd774b77fe132e9e83462b96fb9919411c) | cls_api.c (5891cd5ec46c2c2eb6427cb54d214b149635dd0e) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * net/sched/cls_api.c Packet classifier API. 4 * 5 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 6 * 7 * Changes: 8 * --- 1030 unchanged lines hidden (view full) --- 1039 dev = dev_get_by_index_rcu(net, ifindex); 1040 if (!dev) { 1041 rcu_read_unlock(); 1042 return -ENODEV; 1043 } 1044 1045 /* Find qdisc */ 1046 if (!*parent) { | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * net/sched/cls_api.c Packet classifier API. 4 * 5 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 6 * 7 * Changes: 8 * --- 1030 unchanged lines hidden (view full) --- 1039 dev = dev_get_by_index_rcu(net, ifindex); 1040 if (!dev) { 1041 rcu_read_unlock(); 1042 return -ENODEV; 1043 } 1044 1045 /* Find qdisc */ 1046 if (!*parent) { |
1047 *q = dev->qdisc; | 1047 *q = rcu_dereference(dev->qdisc); |
1048 *parent = (*q)->handle; 1049 } else { 1050 *q = qdisc_lookup_rcu(dev, TC_H_MAJ(*parent)); 1051 if (!*q) { 1052 NL_SET_ERR_MSG(extack, "Parent Qdisc doesn't exists"); 1053 err = -EINVAL; 1054 goto errout_rcu; 1055 } --- 1526 unchanged lines hidden (view full) --- 2582 unsigned long cl = 0; 2583 2584 dev = __dev_get_by_index(net, tcm->tcm_ifindex); 2585 if (!dev) 2586 return skb->len; 2587 2588 parent = tcm->tcm_parent; 2589 if (!parent) | 1048 *parent = (*q)->handle; 1049 } else { 1050 *q = qdisc_lookup_rcu(dev, TC_H_MAJ(*parent)); 1051 if (!*q) { 1052 NL_SET_ERR_MSG(extack, "Parent Qdisc doesn't exists"); 1053 err = -EINVAL; 1054 goto errout_rcu; 1055 } --- 1526 unchanged lines hidden (view full) --- 2582 unsigned long cl = 0; 2583 2584 dev = __dev_get_by_index(net, tcm->tcm_ifindex); 2585 if (!dev) 2586 return skb->len; 2587 2588 parent = tcm->tcm_parent; 2589 if (!parent) |
2590 q = dev->qdisc; | 2590 q = rtnl_dereference(dev->qdisc); |
2591 else 2592 q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); 2593 if (!q) 2594 goto out; 2595 cops = q->ops->cl_ops; 2596 if (!cops) 2597 goto out; 2598 if (!cops->tcf_block) --- 358 unchanged lines hidden (view full) --- 2957 struct net_device *dev; 2958 unsigned long cl = 0; 2959 2960 dev = __dev_get_by_index(net, tcm->tcm_ifindex); 2961 if (!dev) 2962 return skb->len; 2963 2964 if (!tcm->tcm_parent) | 2591 else 2592 q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); 2593 if (!q) 2594 goto out; 2595 cops = q->ops->cl_ops; 2596 if (!cops) 2597 goto out; 2598 if (!cops->tcf_block) --- 358 unchanged lines hidden (view full) --- 2957 struct net_device *dev; 2958 unsigned long cl = 0; 2959 2960 dev = __dev_get_by_index(net, tcm->tcm_ifindex); 2961 if (!dev) 2962 return skb->len; 2963 2964 if (!tcm->tcm_parent) |
2965 q = dev->qdisc; | 2965 q = rtnl_dereference(dev->qdisc); |
2966 else 2967 q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); 2968 2969 if (!q) 2970 goto out; 2971 cops = q->ops->cl_ops; 2972 if (!cops) 2973 goto out; --- 776 unchanged lines hidden --- | 2966 else 2967 q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); 2968 2969 if (!q) 2970 goto out; 2971 cops = q->ops->cl_ops; 2972 if (!cops) 2973 goto out; --- 776 unchanged lines hidden --- |