* [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking
@ 2020-01-07 17:35 madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 2/3] infiniband: hw: qib: qib_verbs: " madhuparnabhowmik04
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: madhuparnabhowmik04 @ 2020-01-07 17:35 UTC (permalink / raw)
To: dennis.dalessandro, mike.marciniszyn, dledford, paulmck
Cc: rcu, joel, frextrite, linux-kernel-mentees, linux-rdma,
linux-kernel, Madhuparna Bhowmik
From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
list_for_each_entry_rcu has built-in RCU and lock checking.
Pass cond argument to list_for_each_entry_rcu.
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
---
drivers/infiniband/hw/hfi1/verbs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
index 089e201d7550..cab2ff185240 100644
--- a/drivers/infiniband/hw/hfi1/verbs.c
+++ b/drivers/infiniband/hw/hfi1/verbs.c
@@ -515,7 +515,8 @@ static inline void hfi1_handle_packet(struct hfi1_packet *packet,
opa_get_lid(packet->dlid, 9B));
if (!mcast)
goto drop;
- list_for_each_entry_rcu(p, &mcast->qp_list, list) {
+ list_for_each_entry_rcu(p, &mcast->qp_list, list
+ lock_is_held(&(ibp->rvp.lock).dep_map)) {
packet->qp = p->qp;
if (hfi1_do_pkey_check(packet))
goto drop;
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] infiniband: hw: qib: qib_verbs: Use built-in RCU list checking
2020-01-07 17:35 [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking madhuparnabhowmik04
@ 2020-01-07 17:35 ` madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: " madhuparnabhowmik04
2020-01-07 18:26 ` [PATCH 1/3] infiniband: hw: hfi1: verbs.c: " Jason Gunthorpe
2 siblings, 0 replies; 7+ messages in thread
From: madhuparnabhowmik04 @ 2020-01-07 17:35 UTC (permalink / raw)
To: dennis.dalessandro, mike.marciniszyn, dledford, paulmck
Cc: rcu, joel, frextrite, linux-kernel-mentees, linux-rdma,
linux-kernel, Madhuparna Bhowmik
From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
Use built-in RCU and lock checking for list_for_each_entry_rcu
by passing cond argument to it.
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
---
drivers/infiniband/hw/qib/qib_verbs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/qib/qib_verbs.c b/drivers/infiniband/hw/qib/qib_verbs.c
index 33778d451b82..4dc7514ce626 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.c
+++ b/drivers/infiniband/hw/qib/qib_verbs.c
@@ -329,7 +329,8 @@ void qib_ib_rcv(struct qib_ctxtdata *rcd, void *rhdr, void *data, u32 tlen)
if (mcast == NULL)
goto drop;
this_cpu_inc(ibp->pmastats->n_multicast_rcv);
- list_for_each_entry_rcu(p, &mcast->qp_list, list)
+ list_for_each_entry_rcu(p, &mcast->qp_list, list
+ lock_is_held(&(ibp->rvp.lock).dep_map))
qib_qp_rcv(rcd, hdr, 1, data, tlen, p->qp);
/*
* Notify rvt_multicast_detach() if it is waiting for us
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: Use built-in RCU list checking
2020-01-07 17:35 [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 2/3] infiniband: hw: qib: qib_verbs: " madhuparnabhowmik04
@ 2020-01-07 17:35 ` madhuparnabhowmik04
2020-01-07 18:26 ` [PATCH 1/3] infiniband: hw: hfi1: verbs.c: " Jason Gunthorpe
2 siblings, 0 replies; 7+ messages in thread
From: madhuparnabhowmik04 @ 2020-01-07 17:35 UTC (permalink / raw)
To: dennis.dalessandro, mike.marciniszyn, dledford, paulmck
Cc: rcu, joel, frextrite, linux-kernel-mentees, linux-rdma,
linux-kernel, Madhuparna Bhowmik
From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
Use built-in RCU and lock-checking for list_for_each_entry_rcu()
by passing the cond argument.
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
---
drivers/infiniband/sw/rdmavt/mcast.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/sw/rdmavt/mcast.c b/drivers/infiniband/sw/rdmavt/mcast.c
index dd11c6fcd060..5fce375f22f4 100644
--- a/drivers/infiniband/sw/rdmavt/mcast.c
+++ b/drivers/infiniband/sw/rdmavt/mcast.c
@@ -224,7 +224,8 @@ static int rvt_mcast_add(struct rvt_dev_info *rdi, struct rvt_ibport *ibp,
}
/* Search the QP list to see if this is already there. */
- list_for_each_entry_rcu(p, &tmcast->qp_list, list) {
+ list_for_each_entry_rcu(p, &tmcast->qp_list, list
+ lock_is_held(&(ibp->lock).dep_map)) {
if (p->qp == mqp->qp) {
ret = ESRCH;
goto bail;
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking
2020-01-07 17:35 [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 2/3] infiniband: hw: qib: qib_verbs: " madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: " madhuparnabhowmik04
@ 2020-01-07 18:26 ` Jason Gunthorpe
2 siblings, 0 replies; 7+ messages in thread
From: Jason Gunthorpe @ 2020-01-07 18:26 UTC (permalink / raw)
To: madhuparnabhowmik04
Cc: dennis.dalessandro, mike.marciniszyn, dledford, paulmck, rcu,
joel, frextrite, linux-kernel-mentees, linux-rdma, linux-kernel
On Tue, Jan 07, 2020 at 11:05:08PM +0530, madhuparnabhowmik04@gmail.com wrote:
> From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
>
> list_for_each_entry_rcu has built-in RCU and lock checking.
> Pass cond argument to list_for_each_entry_rcu.
>
> Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
> drivers/infiniband/hw/hfi1/verbs.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
> index 089e201d7550..cab2ff185240 100644
> +++ b/drivers/infiniband/hw/hfi1/verbs.c
> @@ -515,7 +515,8 @@ static inline void hfi1_handle_packet(struct hfi1_packet *packet,
> opa_get_lid(packet->dlid, 9B));
> if (!mcast)
> goto drop;
> - list_for_each_entry_rcu(p, &mcast->qp_list, list) {
> + list_for_each_entry_rcu(p, &mcast->qp_list, list
> + lock_is_held(&(ibp->rvp.lock).dep_map)) {
This is missing a ',' and isn't indented properly. Does it even
compile?
The idea seems sound though.
Jason
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: Use built-in RCU list checking
2020-01-14 16:25 madhuparnabhowmik04
@ 2020-02-14 17:26 ` Dennis Dalessandro
0 siblings, 0 replies; 7+ messages in thread
From: Dennis Dalessandro @ 2020-02-14 17:26 UTC (permalink / raw)
To: madhuparnabhowmik04, mike.marciniszyn, jgg, paulmck
Cc: joel, frextrite, linux-kernel-mentees, rcu, linux-rdma, linux-kernel
On 1/14/2020 11:25 AM, madhuparnabhowmik04@gmail.com wrote:
> From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
>
> Use built-in RCU and lock-checking for list_for_each_entry_rcu()
> by passing the cond argument.
>
> Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
> ---
> drivers/infiniband/sw/rdmavt/mcast.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/sw/rdmavt/mcast.c b/drivers/infiniband/sw/rdmavt/mcast.c
> index dd11c6fcd060..31c7f12c7665 100644
> --- a/drivers/infiniband/sw/rdmavt/mcast.c
> +++ b/drivers/infiniband/sw/rdmavt/mcast.c
> @@ -224,7 +224,7 @@ static int rvt_mcast_add(struct rvt_dev_info *rdi, struct rvt_ibport *ibp,
> }
>
> /* Search the QP list to see if this is already there. */
> - list_for_each_entry_rcu(p, &tmcast->qp_list, list) {
> + list_for_each_entry_rcu(p, &tmcast->qp_list, list, lockdep_is_held(&(ibp->lock))) {
> if (p->qp == mqp->qp) {
> ret = ESRCH;
> goto bail;
>
This one is OK. The lock is held and it is the correct one to use when
updating the list.
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: Use built-in RCU list checking
@ 2020-01-14 16:25 madhuparnabhowmik04
2020-02-14 17:26 ` Dennis Dalessandro
0 siblings, 1 reply; 7+ messages in thread
From: madhuparnabhowmik04 @ 2020-01-14 16:25 UTC (permalink / raw)
To: mike.marciniszyn, dennis.dalessandro, jgg, paulmck
Cc: joel, frextrite, linux-kernel-mentees, rcu, linux-rdma,
linux-kernel, Madhuparna Bhowmik
From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
Use built-in RCU and lock-checking for list_for_each_entry_rcu()
by passing the cond argument.
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
---
drivers/infiniband/sw/rdmavt/mcast.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/sw/rdmavt/mcast.c b/drivers/infiniband/sw/rdmavt/mcast.c
index dd11c6fcd060..31c7f12c7665 100644
--- a/drivers/infiniband/sw/rdmavt/mcast.c
+++ b/drivers/infiniband/sw/rdmavt/mcast.c
@@ -224,7 +224,7 @@ static int rvt_mcast_add(struct rvt_dev_info *rdi, struct rvt_ibport *ibp,
}
/* Search the QP list to see if this is already there. */
- list_for_each_entry_rcu(p, &tmcast->qp_list, list) {
+ list_for_each_entry_rcu(p, &tmcast->qp_list, list, lockdep_is_held(&(ibp->lock))) {
if (p->qp == mqp->qp) {
ret = ESRCH;
goto bail;
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: Use built-in RCU list checking
@ 2020-01-07 19:31 madhuparnabhowmik04
0 siblings, 0 replies; 7+ messages in thread
From: madhuparnabhowmik04 @ 2020-01-07 19:31 UTC (permalink / raw)
To: dennis.dalessandro, mike.marciniszyn, dledford, paulmck
Cc: rcu, joel, frextrite, linux-kernel-mentees, linux-rdma,
linux-kernel, Madhuparna Bhowmik
From: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
Use built-in RCU and lock-checking for list_for_each_entry_rcu()
by passing the cond argument.
Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik04@gmail.com>
---
drivers/infiniband/sw/rdmavt/mcast.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/sw/rdmavt/mcast.c b/drivers/infiniband/sw/rdmavt/mcast.c
index dd11c6fcd060..983cf6d06dfc 100644
--- a/drivers/infiniband/sw/rdmavt/mcast.c
+++ b/drivers/infiniband/sw/rdmavt/mcast.c
@@ -224,7 +224,8 @@ static int rvt_mcast_add(struct rvt_dev_info *rdi, struct rvt_ibport *ibp,
}
/* Search the QP list to see if this is already there. */
- list_for_each_entry_rcu(p, &tmcast->qp_list, list) {
+ list_for_each_entry_rcu(p, &tmcast->qp_list, list,
+ lock_is_held(&(ibp->lock).dep_map)) {
if (p->qp == mqp->qp) {
ret = ESRCH;
goto bail;
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-02-14 17:26 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-07 17:35 [PATCH 1/3] infiniband: hw: hfi1: verbs.c: Use built-in RCU list checking madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 2/3] infiniband: hw: qib: qib_verbs: " madhuparnabhowmik04
2020-01-07 17:35 ` [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: " madhuparnabhowmik04
2020-01-07 18:26 ` [PATCH 1/3] infiniband: hw: hfi1: verbs.c: " Jason Gunthorpe
2020-01-07 19:31 [PATCH 3/3] infiniband: sw: rdmavt: mcast.c: " madhuparnabhowmik04
2020-01-14 16:25 madhuparnabhowmik04
2020-02-14 17:26 ` Dennis Dalessandro
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).