[2.6 patch] drivers/block/cciss.c: fix check-after-use



The Coverity checker spotted that we have already oops'ed if "disk"
was NULL.

Since "disk" being NULL seems impossible at this point this patch
removes the NULL check.

Signed-off-by: Adrian Bunk <bunk@xxxxxxxxx>

---

drivers/block/cciss.c | 56 ++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 29 deletions(-)

--- linux-2.6.23-rc1-mm1/drivers/block/cciss.c.old 2007-07-30 02:27:15.000000000 +0200
+++ linux-2.6.23-rc1-mm1/drivers/block/cciss.c 2007-07-30 02:28:28.000000000 +0200
@@ -1569,66 +1569,64 @@ static int deregister_disk(struct gendis
ctlr_info_t *h = get_host(disk);

if (!capable(CAP_SYS_RAWIO))
return -EPERM;

/* make sure logical volume is NOT is use */
if (clear_all || (h->gendisk[0] == disk)) {
if (drv->usage_count > 1)
return -EBUSY;
} else if (drv->usage_count > 0)
return -EBUSY;

/* invalidate the devices and deregister the disk. If it is disk
* zero do not deregister it but just zero out it's values. This
* allows us to delete disk zero but keep the controller registered.
*/
if (h->gendisk[0] != disk) {
- if (disk) {
- struct request_queue *q = disk->queue;
- if (disk->flags & GENHD_FL_UP)
- del_gendisk(disk);
- if (q) {
- blk_cleanup_queue(q);
- /* Set drv->queue to NULL so that we do not try
- * to call blk_start_queue on this queue in the
- * interrupt handler
- */
- drv->queue = NULL;
- }
- /* If clear_all is set then we are deleting the logical
- * drive, not just refreshing its info. For drives
- * other than disk 0 we will call put_disk. We do not
- * do this for disk 0 as we need it to be able to
- * configure the controller.
+ struct request_queue *q = disk->queue;
+ if (disk->flags & GENHD_FL_UP)
+ del_gendisk(disk);
+ if (q) {
+ blk_cleanup_queue(q);
+ /* Set drv->queue to NULL so that we do not try
+ * to call blk_start_queue on this queue in the
+ * interrupt handler
+ */
+ drv->queue = NULL;
+ }
+ /* If clear_all is set then we are deleting the logical
+ * drive, not just refreshing its info. For drives
+ * other than disk 0 we will call put_disk. We do not
+ * do this for disk 0 as we need it to be able to
+ * configure the controller.
+ */
+ if (clear_all){
+ /* This isn't pretty, but we need to find the
+ * disk in our array and NULL our the pointer.
+ * This is so that we will call alloc_disk if
+ * this index is used again later.
*/
- if (clear_all){
- /* This isn't pretty, but we need to find the
- * disk in our array and NULL our the pointer.
- * This is so that we will call alloc_disk if
- * this index is used again later.
- */
- for (i=0; i < CISS_MAX_LUN; i++){
- if(h->gendisk[i] == disk){
- h->gendisk[i] = NULL;
- break;
- }
+ for (i=0; i < CISS_MAX_LUN; i++){
+ if(h->gendisk[i] == disk){
+ h->gendisk[i] = NULL;
+ break;
}
- put_disk(disk);
}
+ put_disk(disk);
}
} else {
set_capacity(disk, 0);
}

--h->num_luns;
/* zero out the disk size info */
drv->nr_blocks = 0;
drv->block_size = 0;
drv->heads = 0;
drv->sectors = 0;
drv->cylinders = 0;
drv->raid_level = -1; /* This can be used as a flag variable to
* indicate that this element of the drive
* array is free.
*/


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: RFC: porting NetBSD fsdb enhancements to FreeBSD
    ... > gone bad in order to recover some of the data. ... > zero out blocks on disk, patch up the affected files, and pull the data ... I'm sure if you submit a patch in a PR, we can find someone willing to get ...
    (freebsd-hackers)
  • Re: My first few weeks on the internet have been a security nightmare
    ... Use a DOS program to tell ... every sector of your HD to contain ZERO and ZERO you will get. ... Disk Operating System so it exists totally independent of the disk - it ... I would post ZAP ...
    (alt.computer.security)
  • Re: Write Signal on Disk II Question
    ... What happen when Disk II Controller attempts to detect read pulse at 2 ... It detects wide zero bit and it thinks to be zero bit before zero bit ... Does the software help capturing protected disks to images? ... Duplicating protected floppies is probably not in high demand these days. ...
    (comp.sys.apple2)
  • Re: Fastest secure erasing of HDs?
    ... ever-increasing data density on disk platters and a corresponding ... In particular the drives in use at the ... in 80GB of other erased traces are close to zero. ...
    (comp.sys.mac.system)
  • Re: How to destroy Leopard/Vista/Dragon, all at one fell swoop
    ... disk alters the polarity of magnetic dipoles on the disk suface ... phrase "hex zero". ... If they can be extremely picky about my 'hex zero', ... MAGNETIC PATTERNS are being written to disk. ...
    (comp.sys.mac.system)