cmd->lun = lun;			/* This may be NULL, but that's ok */ 
static int ub_sync_tur(struct ub_dev *sc){	struct ub_scsi_cmd *cmd;	enum { ALLOC_SIZE = sizeof(struct ub_scsi_cmd) };	unsigned long flags;	struct completion compl;	int rc;	init_completion(&compl);	rc = -ENOMEM;	if ((cmd = kmalloc(ALLOC_SIZE, GFP_KERNEL)) == NULL)		goto err_alloc;	memset(cmd, 0, ALLOC_SIZE);	cmd->cdb[0] = TEST_UNIT_READY;	cmd->cdb_len = 6;	cmd->dir = UB_DIR_NONE;	cmd->state = UB_CMDST_INIT;	cmd->done = ub_probe_done;	cmd->back = &compl;	spin_lock_irqsave(&sc->lock, flags);	cmd->tag = sc->tagcnt++;	rc = ub_submit_scsi(sc, cmd);	spin_unlock_irqrestore(&sc->lock, flags);	if (rc != 0) {		printk("ub: testing ready: submit error (%d)\n", rc); /* P3 */		goto err_submit;	}	wait_for_completion(&compl);	rc = cmd->error;	if (rc == -EIO && cmd->key != 0)	/* Retries for benh's key */		rc = cmd->key;err_submit:	kfree(cmd);err_alloc:	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f4800078d9ed4bd20b1b27f56e7b68cfa0d73038/ub.c/clean/drivers/block/ub.c