Skip to content

Commit dcbc44a

Browse files
bjoerndaahmed71
authored andcommitted
LU-17887 obd: do not update obd_memory from RCU
OBD_FREE_PRE() should not be run from an RCU callback as the obdclass module may have been unloaded during the RCU grace period. Signed-off-by: Bruno Faccini <bfaccini@nvidia.com> Change-Id: I6f663b2aed2e60c15f2a1b9755b2c4050bd91ce2 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55263 Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Oleg Drokin <green@whamcloud.com> Tested-by: jenkins <devops@whamcloud.com> Tested-by: Maloo <maloo@whamcloud.com> Signed-off-by: Bjoern Doebel <doebel@amazon.de>
1 parent 25518e2 commit dcbc44a

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

drivers/staging/lustrefsx/lustre/obdclass/lu_object.c

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,14 +2034,6 @@ int lu_env_add(struct lu_env *env)
20342034
}
20352035
EXPORT_SYMBOL(lu_env_add);
20362036

2037-
static void lu_env_item_free(struct rcu_head *head)
2038-
{
2039-
struct lu_env_item *lei;
2040-
2041-
lei = container_of(head, struct lu_env_item, lei_rcu_head);
2042-
OBD_FREE_PTR(lei);
2043-
}
2044-
20452037
void lu_env_remove(struct lu_env *env)
20462038
{
20472039
struct lu_env_item *lei;
@@ -2064,8 +2056,10 @@ void lu_env_remove(struct lu_env *env)
20642056
lei = rhashtable_lookup_fast(&lu_env_rhash, &task,
20652057
lu_env_rhash_params);
20662058
if (lei && rhashtable_remove_fast(&lu_env_rhash, &lei->lei_linkage,
2067-
lu_env_rhash_params) == 0)
2068-
call_rcu(&lei->lei_rcu_head, lu_env_item_free);
2059+
lu_env_rhash_params) == 0) {
2060+
OBD_FREE_PRE(lei, sizeof(*lei), "kfreed");
2061+
kfree_rcu(lei, lei_rcu_head);
2062+
}
20692063
}
20702064
EXPORT_SYMBOL(lu_env_remove);
20712065

0 commit comments

Comments
 (0)