[git patch] libata critical fix

Previous thread: Re: Help with rtc to hpet conversion of OSGPS driver by Robert Hancock on Friday, October 12, 2007 - 12:20 am. (1 message)

Next thread: 2.6.23-mm1 by Andrew Morton on Friday, October 12, 2007 - 12:31 am. (137 messages)
To: Andrew Morton <akpm@...>, Linus Torvalds <torvalds@...>
Cc: <linux-ide@...>, LKML <linux-kernel@...>, <stable@...>
Date: Friday, October 12, 2007 - 12:25 am

There is a lingering corruption in sata_mv that took me several days to
narrow down... the failure to mask off the lower 16 bits of the S/G
length was leading to corruption, because this stomped on other
important bits in that S/G entry.

This should fix it (stable aka 2.6.23.1 needs this too):

Please pull from 'upstream-fixes' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git upstream-fixes

to receive the following updates:

drivers/ata/sata_mv.c | 27 ++++++++++++++++++---------
1 files changed, 18 insertions(+), 9 deletions(-)

commit 6c08772e49622e90d39903e7ff0be1a0f463ac86
Author: Jeff Garzik <jeff@garzik.org>
Date: Fri Oct 12 00:16:23 2007 -0400

[libata] sata_mv: more S/G fixes

* corruption fix: we only want the lower 16 bits of length (0 == 64kb)

* ditto: the upper layer sets max-phys-segments to LIBATA_MAX_PRD,
so we must reset it to own hw-specific length.

* delete unused mv_fill_sg() return value

Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index cb7dec9..d9832e2 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -69,10 +69,11 @@
#include <linux/device.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
#include <linux/libata.h>

#define DRV_NAME "sata_mv"
-#define DRV_VERSION "1.0"
+#define DRV_VERSION "1.01"

enum {
/* BAR's are enumerated in terms of pci_resource_start() terms */
@@ -420,6 +421,7 @@ static void mv_error_handler(struct ata_port *ap);
static void mv_post_int_cmd(struct ata_queued_cmd *qc);
static void mv_eh_freeze(struct ata_port *ap);
static void mv_eh_thaw(struct ata_port *ap);
+static int mv_slave_config(struct scsi_device *sdev);
static int mv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);

static void mv5_phy_errata(struct mv_host_priv *hpriv, void __iomem ...

To: Jeff Garzik <jeff@...>
Cc: Andrew Morton <akpm@...>, Linus Torvalds <torvalds@...>, <linux-ide@...>, LKML <linux-kernel@...>, <stable@...>
Date: Friday, October 12, 2007 - 12:26 pm

I'm guessing that this is critical enough to do a 2.6.23.1 with this fix
in it right now. Any objections to that?

thanks,

greg k-h
-

Previous thread: Re: Help with rtc to hpet conversion of OSGPS driver by Robert Hancock on Friday, October 12, 2007 - 12:20 am. (1 message)

Next thread: 2.6.23-mm1 by Andrew Morton on Friday, October 12, 2007 - 12:31 am. (137 messages)