Re: [report] sata_qstor.c: ancient pointer math bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16-03-02 04:44 AM, Dan Carpenter wrote:
..
drivers/ata/sata_qstor.c
    252  static unsigned int qs_fill_sg(struct ata_queued_cmd *qc)
    253  {
    254          struct scatterlist *sg;
    255          struct ata_port *ap = qc->ap;
    256          struct qs_port_priv *pp = ap->private_data;
    257          u8 *prd = pp->pkt + QS_CPB_BYTES;
    258          unsigned int si;
    259
    260          for_each_sg(qc->sg, sg, qc->n_elem, si) {
    261                  u64 addr;
    262                  u32 len;
    263
    264                  addr = sg_dma_address(sg);
    265                  *(__le64 *)prd = cpu_to_le64(addr);
    266                  prd += sizeof(u64);
    267
    268                  len = sg_dma_len(sg);
    269                  *(__le32 *)prd = cpu_to_le32(len);
    270                  prd += sizeof(u64);

This is almost certainly a cut and paste bug where prd += sizeof(u32)
was intended.  Probably no one cares at this point though...

No, the hardware really does want sizeof(u64) in both places above.
A PRD entry is 16 bytes in total.
--
Mark Lord
Real-Time Remedies Inc.
mlord@xxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux