Skip to content

Commit 11280dd

Browse files
Jiri PirkoPaolo Abeni
authored andcommitted
devlink: introduce __devl_is_registered() helper and use it instead of xa_get_mark()
Introduce __devl_is_registered() which does not assert on devlink instance lock and use it in notifications which may be called without devlink instance lock held. Signed-off-by: Jiri Pirko <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 337ad36 commit 11280dd

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

net/devlink/devl_internal.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,15 @@ extern struct genl_family devlink_nl_family;
9191

9292
struct devlink *devlinks_xa_find_get(struct net *net, unsigned long *indexp);
9393

94+
static inline bool __devl_is_registered(struct devlink *devlink)
95+
{
96+
return xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED);
97+
}
98+
9499
static inline bool devl_is_registered(struct devlink *devlink)
95100
{
96101
devl_assert_locked(devlink);
97-
return xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED);
102+
return __devl_is_registered(devlink);
98103
}
99104

100105
static inline void devl_dev_lock(struct devlink *devlink, bool dev_lock)

net/devlink/linecard.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ static void devlink_linecard_notify(struct devlink_linecard *linecard,
136136
WARN_ON(cmd != DEVLINK_CMD_LINECARD_NEW &&
137137
cmd != DEVLINK_CMD_LINECARD_DEL);
138138

139-
if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
139+
if (!__devl_is_registered(devlink))
140140
return;
141141

142142
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);

net/devlink/port.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ static void devlink_port_notify(struct devlink_port *devlink_port,
512512

513513
WARN_ON(cmd != DEVLINK_CMD_PORT_NEW && cmd != DEVLINK_CMD_PORT_DEL);
514514

515-
if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
515+
if (!__devl_is_registered(devlink))
516516
return;
517517

518518
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);

net/devlink/region.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ static void devlink_nl_region_notify(struct devlink_region *region,
234234
struct sk_buff *msg;
235235

236236
WARN_ON(cmd != DEVLINK_CMD_REGION_NEW && cmd != DEVLINK_CMD_REGION_DEL);
237-
if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
237+
238+
if (!__devl_is_registered(devlink))
238239
return;
239240

240241
msg = devlink_nl_region_notify_build(region, snapshot, cmd, 0, 0);

0 commit comments

Comments
 (0)