lkml.org 
[lkml]   [2007]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [patch 5/6] ps3: BD/DVD/CD-ROM Storage Driver
    From
    Date
    On Wed, 2007-07-04 at 15:22 +0200, Geert Uytterhoeven wrote:
    > + kaddr = kmap_atomic(sgpnt->page, KM_USER0);
    > + if (!kaddr)
    > + return -1;
    > + len = sgpnt->length;
    > + if ((req_len + len) > buflen) {
    > + active = 0;
    > + len = buflen - req_len;
    > + }
    > + memcpy(kaddr + sgpnt->offset, buf + req_len,
    > len);
    > + kunmap_atomic(kaddr, KM_USER0);

    This isn't a SCSI objection, but this sequence appears several times in
    this driver. It's wrong for a non-PIPT architecture (and I believe the
    PS3 is VIPT) because you copy into the kernel alias for the page, which
    dirties the line in the cache of that alias (the user alias cache line
    was already invalidated). However, unless you flush the kernel alias to
    main memory, the user could read stale data. The way this is supposed
    to be done is to do a

    flush_kernel_dcache_page(kaddr)

    before doing the kunmap.

    Otherwise it looks OK from the SCSI point of view.

    James


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-07-13 15:08    [W:0.029 / U:33.028 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site