Skip to content

Commit 764bc21

Browse files
rlubosnashif
authored andcommitted
net: iface: Add missing interface mutex locks
net_if_ipv4/6_addr_rm() were missing the iface mutex lock, this commit adds it. Signed-off-by: Robert Lubos <[email protected]>
1 parent 7777585 commit 764bc21

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

subsys/net/ip/net_if.c

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,27 +1964,34 @@ struct net_if_addr *net_if_ipv6_addr_add(struct net_if *iface,
19641964
bool net_if_ipv6_addr_rm(struct net_if *iface, const struct in6_addr *addr)
19651965
{
19661966
struct net_if_ipv6 *ipv6;
1967+
bool result = true;
19671968
int ret;
19681969

19691970
NET_ASSERT(addr);
19701971

1972+
net_if_lock(iface);
1973+
19711974
ipv6 = iface->config.ip.ipv6;
19721975
if (!ipv6) {
1973-
return false;
1976+
result = false;
1977+
goto out;
19741978
}
19751979

19761980
ret = net_if_addr_unref(iface, AF_INET6, addr);
19771981
if (ret > 0) {
19781982
NET_DBG("Address %s still in use (ref %d)",
19791983
net_sprint_ipv6_addr(addr), ret);
1980-
return false;
1981-
1984+
result = false;
1985+
goto out;
19821986
} else if (ret < 0) {
19831987
NET_DBG("Address %s not found (%d)",
19841988
net_sprint_ipv6_addr(addr), ret);
19851989
}
19861990

1987-
return true;
1991+
out:
1992+
net_if_unlock(iface);
1993+
1994+
return result;
19881995
}
19891996

19901997
bool z_impl_net_if_ipv6_addr_add_by_index(int index,
@@ -4325,27 +4332,34 @@ struct net_if_addr *net_if_ipv4_addr_add(struct net_if *iface,
43254332
bool net_if_ipv4_addr_rm(struct net_if *iface, const struct in_addr *addr)
43264333
{
43274334
struct net_if_ipv4 *ipv4;
4335+
bool result = true;
43284336
int ret;
43294337

43304338
NET_ASSERT(addr);
43314339

4340+
net_if_lock(iface);
4341+
43324342
ipv4 = iface->config.ip.ipv4;
43334343
if (!ipv4) {
4334-
return false;
4344+
result = false;
4345+
goto out;
43354346
}
43364347

43374348
ret = net_if_addr_unref(iface, AF_INET, addr);
43384349
if (ret > 0) {
43394350
NET_DBG("Address %s still in use (ref %d)",
43404351
net_sprint_ipv4_addr(addr), ret);
4341-
return false;
4342-
4352+
result = false;
4353+
goto out;
43434354
} else if (ret < 0) {
43444355
NET_DBG("Address %s not found (%d)",
43454356
net_sprint_ipv4_addr(addr), ret);
43464357
}
43474358

4348-
return true;
4359+
out:
4360+
net_if_unlock(iface);
4361+
4362+
return result;
43494363
}
43504364

43514365
bool z_impl_net_if_ipv4_addr_add_by_index(int index,

0 commit comments

Comments
 (0)