diff options
author | Julia Lawall <julia@diku.dk> | 2010-08-10 21:01:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-11 11:59:00 -0400 |
commit | d23670069ad60c82234e51a945e8b472e8c7bde2 (patch) | |
tree | d53b466dbc3d2be81e9b88cb014ce2bb331da9d2 /drivers/message | |
parent | 95cc7baa7f19e191b4790d144b7cbe47369cfe32 (diff) |
drivers/message: move dereference after NULL test
If the NULL test on dev->i2o_dev or i2o_dev is needed, then the dereference
should be after the NULL test.
A simplified version of the semantic match that detects this problem is as
follows (http://coccinelle.lip6.fr/):
// <smpl>
@match exists@
expression x, E;
identifier fld;
@@
* x->fld
... when != \(x = E\|&x\)
* x == NULL
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: James Bottomley <James.Bottomley@suse.de>
Cc: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/message')
-rw-r--r-- | drivers/message/i2o/i2o_block.c | 3 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_scsi.c | 3 |
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c index e6733bc99724..f0f1e667000f 100644 --- a/drivers/message/i2o/i2o_block.c +++ b/drivers/message/i2o/i2o_block.c | |||
@@ -727,7 +727,7 @@ static int i2o_block_transfer(struct request *req) | |||
727 | { | 727 | { |
728 | struct i2o_block_device *dev = req->rq_disk->private_data; | 728 | struct i2o_block_device *dev = req->rq_disk->private_data; |
729 | struct i2o_controller *c; | 729 | struct i2o_controller *c; |
730 | u32 tid = dev->i2o_dev->lct_data.tid; | 730 | u32 tid; |
731 | struct i2o_message *msg; | 731 | struct i2o_message *msg; |
732 | u32 *mptr; | 732 | u32 *mptr; |
733 | struct i2o_block_request *ireq = req->special; | 733 | struct i2o_block_request *ireq = req->special; |
@@ -743,6 +743,7 @@ static int i2o_block_transfer(struct request *req) | |||
743 | goto exit; | 743 | goto exit; |
744 | } | 744 | } |
745 | 745 | ||
746 | tid = dev->i2o_dev->lct_data.tid; | ||
746 | c = dev->i2o_dev->iop; | 747 | c = dev->i2o_dev->iop; |
747 | 748 | ||
748 | msg = i2o_msg_get(c); | 749 | msg = i2o_msg_get(c); |
diff --git a/drivers/message/i2o/i2o_scsi.c b/drivers/message/i2o/i2o_scsi.c index 3d45817e6dcd..ea6b2197da8a 100644 --- a/drivers/message/i2o/i2o_scsi.c +++ b/drivers/message/i2o/i2o_scsi.c | |||
@@ -528,7 +528,6 @@ static int i2o_scsi_queuecommand(struct scsi_cmnd *SCpnt, | |||
528 | * Do the incoming paperwork | 528 | * Do the incoming paperwork |
529 | */ | 529 | */ |
530 | i2o_dev = SCpnt->device->hostdata; | 530 | i2o_dev = SCpnt->device->hostdata; |
531 | c = i2o_dev->iop; | ||
532 | 531 | ||
533 | SCpnt->scsi_done = done; | 532 | SCpnt->scsi_done = done; |
534 | 533 | ||
@@ -538,7 +537,7 @@ static int i2o_scsi_queuecommand(struct scsi_cmnd *SCpnt, | |||
538 | done(SCpnt); | 537 | done(SCpnt); |
539 | goto exit; | 538 | goto exit; |
540 | } | 539 | } |
541 | 540 | c = i2o_dev->iop; | |
542 | tid = i2o_dev->lct_data.tid; | 541 | tid = i2o_dev->lct_data.tid; |
543 | 542 | ||
544 | osm_debug("qcmd: Tid = %03x\n", tid); | 543 | osm_debug("qcmd: Tid = %03x\n", tid); |