/* I don't think queue can be NULL. But... Stolen from sx8.c */ if ((q = sc->disk->queue) != NULL) blk_cleanup_queue(q); 
while (!list_empty(&sc->luns)) { p = sc->luns.next; lun = list_entry(p, struct ub_lun, link); list_del(p); 
static void ub_cleanup(struct ub_dev *sc){	request_queue_t *q;	/* I don't think queue can be NULL. But... Stolen from sx8.c */	if ((q = sc->disk->queue) != NULL)		blk_cleanup_queue(q);	/*	 * If we zero disk->private_data BEFORE put_disk, we have to check	 * for NULL all over the place in open, release, check_media and	 * revalidate, because the block level semaphore is well inside the	 * put_disk. But we cannot zero after the call, because *disk is gone.	 * The sd.c is blatantly racy in this area.	 */	/* disk->private_data = NULL; */	put_disk(sc->disk);	sc->disk = NULL;	ub_id_put(sc->id);	kfree(sc);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f4800078d9ed4bd20b1b27f56e7b68cfa0d73038/ub.c/clean/drivers/block/ub.c