Commit 3eb76c1ccde496c3c0bfda23d1c803e40b762ce6

Authored by Borislav Petkov
Committed by Bartlomiej Zolnierkiewicz
1 parent 041b62374c

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>
[bart: backport to Linus' tree]
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Showing 2 changed files with 16 additions and 2 deletions Side-by-side Diff

drivers/ide/ide-atapi.c
... ... @@ -140,6 +140,12 @@
140 140 rq->cmd_flags |= REQ_PREEMPT;
141 141 rq->buffer = (char *)pc;
142 142 rq->rq_disk = disk;
  143 +
  144 + if (pc->req_xfer) {
  145 + rq->data = pc->buf;
  146 + rq->data_len = pc->req_xfer;
  147 + }
  148 +
143 149 memcpy(rq->cmd, pc->c, 12);
144 150 if (drive->media == ide_tape)
145 151 rq->cmd[13] = REQ_IDETAPE_PC1;
... ... @@ -159,6 +165,12 @@
159 165 rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
160 166 rq->cmd_type = REQ_TYPE_SPECIAL;
161 167 rq->buffer = (char *)pc;
  168 +
  169 + if (pc->req_xfer) {
  170 + rq->data = pc->buf;
  171 + rq->data_len = pc->req_xfer;
  172 + }
  173 +
162 174 memcpy(rq->cmd, pc->c, 12);
163 175 if (drive->media == ide_tape)
164 176 rq->cmd[13] = REQ_IDETAPE_PC1;
drivers/ide/ide-floppy.c
... ... @@ -327,8 +327,10 @@
327 327 return ide_stopped;
328 328 }
329 329  
330   - ide_init_sg_cmd(drive, rq);
331   - ide_map_sg(drive, rq);
  330 + if (blk_fs_request(rq) || pc->req_xfer) {
  331 + ide_init_sg_cmd(drive, rq);
  332 + ide_map_sg(drive, rq);
  333 + }
332 334  
333 335 pc->sg = hwif->sg_table;
334 336 pc->sg_cnt = hwif->sg_nents;