On Tue, Jul 24, 2018 at 10:37 AM, Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx> wrote: > Any update on this patch!. Just Ping once again. Any update on this patch. > Thanks, > Sreekanth > > On Fri, Jul 20, 2018 at 5:56 PM, Sreekanth Reddy > <sreekanth.reddy@xxxxxxxxxxxx> wrote: >> In mpt3sas_base_clear_st() function smid value is reseted in wrong line, >> i.e. driver should reset smid value to zero after decrementing chain_offset >> counter in chain_lookup table but in current code, driver is resetting smid >> value before decrementing the chain_offset counter. which we are correcting >> with this patch. >> >> v1 changelog: >> Added memory barriers before & after atomic_set() API. >> >> Signed-off-by: Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx> >> --- >> drivers/scsi/mpt3sas/mpt3sas_base.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c >> index 902610d..94359d8 100644 >> --- a/drivers/scsi/mpt3sas/mpt3sas_base.c >> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c >> @@ -1702,6 +1702,8 @@ static int mpt3sas_remove_dead_ioc_func(void *arg) >> return NULL; >> >> chain_req = &ioc->chain_lookup[smid - 1].chains_per_smid[chain_offset]; >> + /* Adding memory barrier before atomic operation. */ >> + smp_mb__before_atomic(); >> atomic_inc(&ioc->chain_lookup[smid - 1].chain_offset); >> return chain_req; >> } >> @@ -3283,8 +3285,12 @@ void mpt3sas_base_clear_st(struct MPT3SAS_ADAPTER *ioc, >> return; >> st->cb_idx = 0xFF; >> st->direct_io = 0; >> - st->smid = 0; >> + /* Adding memory barrier before atomic operation. */ >> + smp_mb__before_atomic(); >> atomic_set(&ioc->chain_lookup[st->smid - 1].chain_offset, 0); >> + /* Adding memory barrier after atomic operation. */ >> + smp_mb__after_atomic(); >> + st->smid = 0; >> } >> >> /** >> -- >> 1.8.3.1 >>