Skip to content
  • FUJITA Tomonori's avatar
    [SCSI] advansys: fix overrun_buf aligned bug · 7d5d408c
    FUJITA Tomonori authored
    
    
    struct asc_dvc_var needs overrun buffer to be placed on an 8 byte
    boundary. advansys defines struct asc_dvc_var:
    
    struct asc_dvc_var {
    	...
    	uchar overrun_buf[ASC_OVERRUN_BSIZE] __aligned(8);
    
    The problem is that struct asc_dvc_var is placed on
    shost->hostdata. So if the hostdata is not on an 8 byte boundary, the
    advansys crashes. The hostdata is placed on a sizeof(unsigned long)
    boundary so the 8 byte boundary is not garanteed with x86_32.
    
    With 2.6.23 and 2.6.24, the hostdata is on an 8 byte boundary by
    chance, but with the current git, it's not.
    
    This patch removes overrun_buf static array and use kzalloc.
    
    Signed-off-by: default avatarFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    7d5d408c