1. 29 4月, 2007 8 次提交
  2. 11 4月, 2007 9 次提交
  3. 09 4月, 2007 2 次提交
  4. 07 4月, 2007 1 次提交
  5. 05 4月, 2007 4 次提交
  6. 04 4月, 2007 15 次提交
  7. 03 4月, 2007 1 次提交
    • D
      [SCSI]: Fix scsi_send_eh_cmnd scatterlist handling · 8cc574a3
      David S. Miller 提交于
      This fixes a regression caused by commit:
      
      2dc611de
      
      The sense buffer code in scsi_send_eh_cmnd was changed to use
      alloc_page() and a scatter list, but the sense data copy was not
      updated to match so what we actually get in the sense buffer is total
      grabage starting with the kernel address of the struct page we got.
      Basically the stack frame of scsi_send_eh_cmd() is what ends up
      in the sense buffer.
      
      Depending upon how pointers look on a given platform, you can
      end up getting sr_ioctl.c errors when you mount a cdrom.  If
      the CDROM gives a check condition for GPCMD_GET_CONFIGURATION issued
      by drivers/cdrom/cdrom.c:cdrom_mmc_profile(), sr_ioctl will
      spit out this error message in sr_do_ioctl() with the way pointers
      are on sparc64:
      
      		default:
      			printk(KERN_ERR "%s: CDROM (ioctl) error, command: ", cd->cdi.name);
      			__scsi_print_command(cgc->cmd);
      			scsi_print_sense_hdr("sr", &sshdr);
      			err = -EIO;
      
      This is the error Tom Callaway reported in:
      
      http://marc.info/?l=linux-sparc&m=117407453208101&w=2
      
      Anyways, fix this by using page_address(sgl.page) which is OK
      because we know this is low-mem due to GFP_ATOMIC.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Acked-by: NChristoph Hellwig <hch@lst.de>
      8cc574a3