mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-22 05:16:38 +00:00
can: use __dev_get_by_index instead of dev_get_by_index to find interface
As cgw_create_job() is always under rtnl_lock protection, __dev_get_by_index() instead of dev_get_by_index() should be used to find interface handler in it having us avoid to change interface reference counter. Cc: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Ying Xue <ying.xue@windriver.com> Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a74e942694
commit
5af28de353
15
net/can/gw.c
15
net/can/gw.c
@ -839,21 +839,21 @@ static int cgw_create_job(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||
if (!gwj->ccgw.src_idx || !gwj->ccgw.dst_idx)
|
||||
goto out;
|
||||
|
||||
gwj->src.dev = dev_get_by_index(&init_net, gwj->ccgw.src_idx);
|
||||
gwj->src.dev = __dev_get_by_index(&init_net, gwj->ccgw.src_idx);
|
||||
|
||||
if (!gwj->src.dev)
|
||||
goto out;
|
||||
|
||||
if (gwj->src.dev->type != ARPHRD_CAN)
|
||||
goto put_src_out;
|
||||
goto out;
|
||||
|
||||
gwj->dst.dev = dev_get_by_index(&init_net, gwj->ccgw.dst_idx);
|
||||
gwj->dst.dev = __dev_get_by_index(&init_net, gwj->ccgw.dst_idx);
|
||||
|
||||
if (!gwj->dst.dev)
|
||||
goto put_src_out;
|
||||
goto out;
|
||||
|
||||
if (gwj->dst.dev->type != ARPHRD_CAN)
|
||||
goto put_src_dst_out;
|
||||
goto out;
|
||||
|
||||
gwj->limit_hops = limhops;
|
||||
|
||||
@ -862,11 +862,6 @@ static int cgw_create_job(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||
err = cgw_register_filter(gwj);
|
||||
if (!err)
|
||||
hlist_add_head_rcu(&gwj->list, &cgw_list);
|
||||
|
||||
put_src_dst_out:
|
||||
dev_put(gwj->dst.dev);
|
||||
put_src_out:
|
||||
dev_put(gwj->src.dev);
|
||||
out:
|
||||
if (err)
|
||||
kmem_cache_free(cgw_cache, gwj);
|
||||
|
Loading…
x
Reference in New Issue
Block a user