Register transport attributes after the attribute array has been
set up instead of before. The current code is racy because there
is no guarantee that the CPU examining the attribute container
will see all values written to the container.

Signed-off-by: Bart Van Assche <bvanass...@acm.org>
Cc: FUJITA Tomonori <fujita.tomon...@lab.ntt.co.jp>
Cc: Brian King <brk...@linux.vnet.ibm.com>
Cc: David Dillow <dillo...@ornl.gov>
Cc: Roland Dreier <rol...@purestorage.com>
Cc: <sta...@kernel.org>
---
 drivers/scsi/scsi_transport_srp.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/scsi_transport_srp.c 
b/drivers/scsi/scsi_transport_srp.c
index 21a045e..07c4394 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -324,13 +324,14 @@ srp_attach_transport(struct srp_function_template *ft)
        i->rport_attr_cont.ac.attrs = &i->rport_attrs[0];
        i->rport_attr_cont.ac.class = &srp_rport_class.class;
        i->rport_attr_cont.ac.match = srp_rport_match;
-       transport_container_register(&i->rport_attr_cont);
 
        count = 0;
        SETUP_RPORT_ATTRIBUTE_RD(port_id);
        SETUP_RPORT_ATTRIBUTE_RD(roles);
        i->rport_attrs[count] = NULL;
 
+       transport_container_register(&i->rport_attr_cont);
+
        i->f = ft;
 
        return &i->t;
-- 
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to