ide: fix barriers support

Freeing non-slab objects is bad and results in an oops.  Fix it.
Reported-and-tested-by: NAndrew Price <andy@andrewprice.me.uk>
Cc: Theodore Tso <tytso@mit.edu>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
上级 d5f840bf
......@@ -102,11 +102,14 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err)
drive->dev_flags |= IDE_DFLAG_PARKED;
}
if (rq && rq->cmd_type == REQ_TYPE_ATA_TASKFILE)
memcpy(rq->special, cmd, sizeof(*cmd));
if (rq && rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
struct ide_cmd *orig_cmd = rq->special;
if (cmd->tf_flags & IDE_TFLAG_DYN)
kfree(cmd);
if (cmd->tf_flags & IDE_TFLAG_DYN)
kfree(orig_cmd);
else
memcpy(orig_cmd, cmd, sizeof(*cmd));
}
}
/* obsolete, blk_rq_bytes() should be used instead */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册