if (card != (void *)-1 && host->card_selected != card) { struct mmc_command cmd;  host->card_selected = card;  cmd.opcode = MMC_SELECT_CARD; cmd.arg = card->rca << 16; cmd.flags = MMC_RSP_R1;  err = mmc_wait_for_cmd(host, &cmd, CMD_RETRIES); 
if (card != (void *)-1) { err = mmc_select_card(host, card); if (err != MMC_ERR_NONE) return err; 
int __mmc_claim_host(struct mmc_host *host, struct mmc_card *card){	DECLARE_WAITQUEUE(wait, current);	unsigned long flags;	int err = 0;	add_wait_queue(&host->wq, &wait);	spin_lock_irqsave(&host->lock, flags);	while (1) {		set_current_state(TASK_UNINTERRUPTIBLE);		if (host->card_busy == NULL)			break;		spin_unlock_irqrestore(&host->lock, flags);		schedule();		spin_lock_irqsave(&host->lock, flags);	}	set_current_state(TASK_RUNNING);	host->card_busy = card;	spin_unlock_irqrestore(&host->lock, flags);	remove_wait_queue(&host->wq, &wait);	if (card != (void *)-1 && host->card_selected != card) {		struct mmc_command cmd;		host->card_selected = card;		cmd.opcode = MMC_SELECT_CARD;		cmd.arg = card->rca << 16;		cmd.flags = MMC_RSP_R1;		err = mmc_wait_for_cmd(host, &cmd, CMD_RETRIES);	}	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b57c43ad81602589afca3948a5a7121e40026e17/mmc.c/buggy/drivers/mmc/mmc.c