Skip to content

Commit

Permalink
scsi: mvsas: mv_sas.c: Fix for possible null pointer dereference
Browse files Browse the repository at this point in the history
There is otherwise a risk of a possible null pointer dereference.

Was largely found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Rickard Strandqvist authored and Jiri Kosina committed Jun 19, 2014
1 parent 305af08 commit eaa015d
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions drivers/scsi/mvsas/mv_sas.c
Original file line number Diff line number Diff line change
Expand Up @@ -1344,19 +1344,23 @@ void mvs_dev_gone_notify(struct domain_device *dev)
{
unsigned long flags = 0;
struct mvs_device *mvi_dev = dev->lldd_dev;
struct mvs_info *mvi = mvi_dev->mvi_info;

spin_lock_irqsave(&mvi->lock, flags);
struct mvs_info *mvi;

if (mvi_dev) {
mv_dprintk("found dev[%d:%x] is gone.\n",
mvi_dev->device_id, mvi_dev->dev_type);
mvs_release_task(mvi, dev);
mvs_free_reg_set(mvi, mvi_dev);
mvs_free_dev(mvi_dev);
} else {
if (!mvi_dev) {
mv_dprintk("found dev has gone.\n");
return;
}

mvi = mvi_dev->mvi_info;

spin_lock_irqsave(&mvi->lock, flags);

mv_dprintk("found dev[%d:%x] is gone.\n",
mvi_dev->device_id, mvi_dev->dev_type);
mvs_release_task(mvi, dev);
mvs_free_reg_set(mvi, mvi_dev);
mvs_free_dev(mvi_dev);

dev->lldd_dev = NULL;
mvi_dev->sas_device = NULL;

Expand Down

0 comments on commit eaa015d

Please sign in to comment.