buf = page_address(pc->sg->page) + pc->sg->offset; drive->hwif->atapi_output_bytes(drive, buf + pc->b_count, count); 
if (PageHighMem(pc->sg->page)) { unsigned long flags;  local_irq_save(flags); buf = kmap_atomic(pc->sg->page, KM_IRQ0) + pc->sg->offset; drive->hwif->atapi_output_bytes(drive, buf + pc->b_count, count); kunmap_atomic(buf - pc->sg->offset, KM_IRQ0); local_irq_restore(flags); } else { buf = page_address(pc->sg->page) + pc->sg->offset; drive->hwif->atapi_output_bytes(drive, buf + pc->b_count, count); } 
static void idescsi_output_buffers (ide_drive_t *drive, idescsi_pc_t *pc, unsigned int bcount){	int count;	char *buf;	while (bcount) {		if (pc->sg - (struct scatterlist *) pc->scsi_cmd->request_buffer > pc->scsi_cmd->use_sg) {			printk (KERN_ERR "ide-scsi: scatter gather table too small, padding with zeros\n");			idescsi_output_zeros (drive, bcount);			return;		}		count = min(pc->sg->length - pc->b_count, bcount);		buf = page_address(pc->sg->page) + pc->sg->offset;		drive->hwif->atapi_output_bytes(drive, buf + pc->b_count, count);		bcount -= count; pc->b_count += count;		if (pc->b_count == pc->sg->length) {			pc->sg++;			pc->b_count = 0;		}	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/41bb4c43b34bcde7eb62cf19acdcf9f2eb13801d/ide-scsi.c/buggy/drivers/scsi/ide-scsi.c