bad >>= 1; 
bad >>= 8; 
static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip){	int page, chipnr, res = 0;	struct nand_chip *this = mtd->priv;	u16 bad;	if (getchip) {		page = (int)(ofs >> this->page_shift);		chipnr = (int)(ofs >> this->chip_shift);		/* Grab the lock and see if the device is available */		nand_get_device (this, mtd, FL_READING);		/* Select the NAND device */		this->select_chip(mtd, chipnr);	} else 		page = (int) ofs;		if (this->options & NAND_BUSWIDTH_16) {		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos & 0xFE, page & this->pagemask);		bad = cpu_to_le16(this->read_word(mtd));		if (this->badblockpos & 0x1)			bad >>= 1;		if ((bad & 0xFF) != 0xff)			res = 1;	} else {		this->cmdfunc (mtd, NAND_CMD_READOOB, this->badblockpos, page & this->pagemask);		if (this->read_byte(mtd) != 0xff)			res = 1;	}			if (getchip) {		/* Deselect and wake up anyone waiting on the device */		nand_release_device(mtd);	}			return res;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/49196f3332e661ccc221734c3103115d8cd4ee49/nand_base.c/buggy/drivers/mtd/nand/nand_base.c