The second patch is better (it also keeps the lock locked shorter.) Do I need to resend? On Tue, Jun 2, 2015 at 11:42 PM, Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx> wrote: > On Tue, Jun 02, 2015 at 12:57:20PM -0700, Tolga Ceylan wrote: >> In llog_cat_new_log(), sparse emits a context imbalance (unexpected lock) >> warning due its inability to detect the noreturn attribute in >> lbug_with_lock() function inside LBUG macro. Adding a never reached >> return statement suppresses this warning. > but adding a statement which never executes, is that the correct solution? > what about : > > diff --git a/drivers/staging/lustre/lustre/obdclass/llog_cat.c b/drivers/staging/lustre/lustre/obdclass/llog_cat.c > index c8f6ab0..1cb3495 100644 > --- a/drivers/staging/lustre/lustre/obdclass/llog_cat.c > +++ b/drivers/staging/lustre/lustre/obdclass/llog_cat.c > @@ -103,13 +103,12 @@ static int llog_cat_new_log(const struct lu_env *env, > > spin_lock(&loghandle->lgh_hdr_lock); > llh->llh_count++; > - if (ext2_set_bit(index, llh->llh_bitmap)) { > - CERROR("argh, index %u already set in log bitmap?\n", > - index); > - spin_unlock(&loghandle->lgh_hdr_lock); > + rc = ext2_set_bit(index, llh->llh_bitmap); > + spin_unlock(&loghandle->lgh_hdr_lock); > + if (rc) { > + CERROR("argh, index %u already set in log bitmap?\n", index); > LBUG(); /* should never happen */ > } > - spin_unlock(&loghandle->lgh_hdr_lock); > > cathandle->lgh_last_idx = index; > llh->llh_tail.lrt_index = index; > > > regards > sudip > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel