diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-07-26 16:21:01 +0200 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2009-07-28 21:05:41 -0400 |
commit | 705d201414382b0966d7c903d738dfdb9380e4af (patch) | |
tree | 8b5b6c19e6ea3837e4775cd3b00aa17c4442a1d4 /drivers/ata | |
parent | 044dcc824a167e3d39ba69a49e2b723dd10678f6 (diff) | |
download | linux-705d201414382b0966d7c903d738dfdb9380e4af.tar.gz linux-705d201414382b0966d7c903d738dfdb9380e4af.tar.bz2 linux-705d201414382b0966d7c903d738dfdb9380e4af.zip |
libata: add missing NULL pointer check to ata_eh_reset()
drivers/ata/libata-eh.c +2403 ata_eh_reset(80) warning: variable derefenced before check 'slave'
Please note that this is _not_ a real bug at the moment since ata_eh_context
structure is embedded into ata_list structure and the code alwas checks for
'slave' before accessing 'sehc'.
Anyway lets add missing check and always have a valid 'sehc' pointer (which
makes code easier to understand and prevents introducing some possible bugs
in the future).
Reported-by: Dan Carpenter <error27@gmail.com>
Cc: corbet@lwn.net
Cc: eteo@redhat.com
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/libata-eh.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 1a07c061f644..79711b64054b 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -2327,7 +2327,7 @@ int ata_eh_reset(struct ata_link *link, int classify, struct ata_port *ap = link->ap; struct ata_link *slave = ap->slave_link; struct ata_eh_context *ehc = &link->eh_context; - struct ata_eh_context *sehc = &slave->eh_context; + struct ata_eh_context *sehc = slave ? &slave->eh_context : NULL; unsigned int *classes = ehc->classes; unsigned int lflags = link->flags; int verbose = !(ehc->i.flags & ATA_EHI_QUIET); |