Message ID | 20230918153646.338878-1-yanjun.zhu@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/1] RDMA/rtrs: Require holding rcu_read_lock explicitly | expand |
On Mon, Sep 18, 2023 at 5:37 PM Zhu Yanjun <yanjun.zhu@intel.com> wrote: > > From: Zhu Yanjun <yanjun.zhu@linux.dev> > > No functional change. The function get_next_path_rr needs to hold > rcu_read_lock. As such, if no rcu read lock, warnings will pop out. > > Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> Acked-by: Jack Wang <jinpu.wang@ionos.com> Thx! > --- > drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > index b6ee801fd0ff..bc4b70318bf4 100644 > --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c > +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > @@ -775,7 +775,7 @@ rtrs_clt_get_next_path_or_null(struct list_head *head, struct rtrs_clt_path *clt > * Related to @MP_POLICY_RR > * > * Locks: > - * rcu_read_lock() must be hold. > + * rcu_read_lock() must be held. > */ > static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) > { > @@ -783,6 +783,11 @@ static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) > struct rtrs_clt_path *path; > struct rtrs_clt_sess *clt; > > + /* > + * Assert that rcu lock must be held > + */ > + WARN_ON_ONCE(!rcu_read_lock_held()); > + > clt = it->clt; > > /* > -- > 2.40.1 >
On Mon, Sep 18, 2023 at 11:36:46PM +0800, Zhu Yanjun wrote: > From: Zhu Yanjun <yanjun.zhu@linux.dev> > > No functional change. The function get_next_path_rr needs to hold > rcu_read_lock. As such, if no rcu read lock, warnings will pop out. > > Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> > --- > drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > index b6ee801fd0ff..bc4b70318bf4 100644 > --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c > +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > @@ -775,7 +775,7 @@ rtrs_clt_get_next_path_or_null(struct list_head *head, struct rtrs_clt_path *clt > * Related to @MP_POLICY_RR > * > * Locks: > - * rcu_read_lock() must be hold. > + * rcu_read_lock() must be held. > */ > static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) > { > @@ -783,6 +783,11 @@ static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) > struct rtrs_clt_path *path; > struct rtrs_clt_sess *clt; > > + /* > + * Assert that rcu lock must be held > + */ > + WARN_ON_ONCE(!rcu_read_lock_held()); Let's use RCU_LOCKDEP_WARN(..) macro. Thanks > + > clt = it->clt; > > /* > -- > 2.40.1 >
在 2023/9/19 15:09, Leon Romanovsky 写道: > On Mon, Sep 18, 2023 at 11:36:46PM +0800, Zhu Yanjun wrote: >> From: Zhu Yanjun <yanjun.zhu@linux.dev> >> >> No functional change. The function get_next_path_rr needs to hold >> rcu_read_lock. As such, if no rcu read lock, warnings will pop out. >> >> Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev> >> --- >> drivers/infiniband/ulp/rtrs/rtrs-clt.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c >> index b6ee801fd0ff..bc4b70318bf4 100644 >> --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c >> +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c >> @@ -775,7 +775,7 @@ rtrs_clt_get_next_path_or_null(struct list_head *head, struct rtrs_clt_path *clt >> * Related to @MP_POLICY_RR >> * >> * Locks: >> - * rcu_read_lock() must be hold. >> + * rcu_read_lock() must be held. >> */ >> static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) >> { >> @@ -783,6 +783,11 @@ static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) >> struct rtrs_clt_path *path; >> struct rtrs_clt_sess *clt; >> >> + /* >> + * Assert that rcu lock must be held >> + */ >> + WARN_ON_ONCE(!rcu_read_lock_held()); > Let's use RCU_LOCKDEP_WARN(..) macro. Got it. Will send v2 very soon. Zhu Yanjun > > Thanks > >> + >> clt = it->clt; >> >> /* >> -- >> 2.40.1 >>
diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c index b6ee801fd0ff..bc4b70318bf4 100644 --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c @@ -775,7 +775,7 @@ rtrs_clt_get_next_path_or_null(struct list_head *head, struct rtrs_clt_path *clt * Related to @MP_POLICY_RR * * Locks: - * rcu_read_lock() must be hold. + * rcu_read_lock() must be held. */ static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) { @@ -783,6 +783,11 @@ static struct rtrs_clt_path *get_next_path_rr(struct path_it *it) struct rtrs_clt_path *path; struct rtrs_clt_sess *clt; + /* + * Assert that rcu lock must be held + */ + WARN_ON_ONCE(!rcu_read_lock_held()); + clt = it->clt; /*