lkml.org 
[lkml]   [2009]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 3/3] ide-{cd,floppy}: do not map all cmds to an sg
    Hi,

    > If the mainline is broken sg fix can wait but to be honest I don't see much
    > point in delaying it (it is an independent problem and the bugfix should be
    > a completely safe one-liner).

    --
    From: Borislav Petkov <petkovbb@gmail.com>
    Date: Tue, 10 Mar 2009 07:04:52 +0100
    Subject: [PATCH] ide-floppy: do not map dataless cmds to an sg

    since it fails the virt_to_page() translation check with DEBUG_VIRTUAL
    enabled.

    Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
    ---
    drivers/ide/ide-atapi.c | 12 ++++++++++++
    drivers/ide/ide-floppy.c | 6 ++++--
    2 files changed, 16 insertions(+), 2 deletions(-)

    diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
    index a5596a6..11a680c 100644
    --- a/drivers/ide/ide-atapi.c
    +++ b/drivers/ide/ide-atapi.c
    @@ -90,6 +90,12 @@ static void ide_queue_pc_head(ide_drive_t *drive, struct gendisk *disk,
    rq->cmd_flags |= REQ_PREEMPT;
    rq->buffer = (char *)pc;
    rq->rq_disk = disk;
    +
    + if (pc->req_xfer) {
    + rq->data = pc->buf;
    + rq->data_len = pc->req_xfer;
    + }
    +
    memcpy(rq->cmd, pc->c, 12);
    if (drive->media == ide_tape)
    rq->cmd[13] = REQ_IDETAPE_PC1;
    @@ -112,6 +118,12 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk,
    rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
    rq->cmd_type = REQ_TYPE_SPECIAL;
    rq->buffer = (char *)pc;
    +
    + if (pc->req_xfer) {
    + rq->data = pc->buf;
    + rq->data_len = pc->req_xfer;
    + }
    +
    memcpy(rq->cmd, pc->c, 12);
    if (drive->media == ide_tape)
    rq->cmd[13] = REQ_IDETAPE_PC1;
    diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
    index 2f8f453..2b4868d 100644
    --- a/drivers/ide/ide-floppy.c
    +++ b/drivers/ide/ide-floppy.c
    @@ -282,8 +282,10 @@ static ide_startstop_t ide_floppy_do_request(ide_drive_t *drive,

    cmd.rq = rq;

    - ide_init_sg_cmd(&cmd, pc->req_xfer);
    - ide_map_sg(drive, &cmd);
    + if (blk_fs_request(rq) || pc->req_xfer) {
    + ide_init_sg_cmd(&cmd, pc->req_xfer);
    + ide_map_sg(drive, &cmd);
    + }

    pc->rq = rq;

    --
    1.6.2

    > From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    > Subject: [PATCH] ide-cd: use scatterlists for PIO transfers (non-fs requests) (v2)
    >
    > Convert ide-cd to use scatterlists for PIO transfers and get rid of
    > partial completions (except on error) also for non-fs requests.
    >
    > v2:
    > Do not map dataless commands to an sg since it oopses on the virt_to_page()
    > translation check when DEBUG_VIRTUAL is enabled. (from Borislav Petkov,
    > reported/bisected-by Tetsuo Handa).
    >
    > Cc: Borislav Petkov <petkovbb@gmail.com>
    > Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

    Acked-by: Borislav Petkov <petkovbb@gmail.com>

    --
    Regards/Gruss,
    Boris.


    \
     
     \ /
      Last update: 2009-03-10 07:11    [W:0.056 / U:0.076 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site