]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
libata: fix DMA to stack in reading devslp_timing parameters
authorDavid Woodhouse <dwmw2@infradead.org>
Fri, 29 Mar 2013 11:54:55 +0000 (11:54 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Apr 2013 16:52:06 +0000 (09:52 -0700)
commit 8e725c7f8a60feaa88edacd4dee2c754d5ae7706 upstream.

Commit 803739d25c2343da6d2f95eebdcbc08bf67097d4 ("[libata] replace
sata_settings with devslp_timing"), which was also Cc: stable, used a
stack buffer to receive data from ata_read_log_page(), which triggers
the following warning:
 ahci 0000:00:1f.2: DMA-API: device driver maps memory fromstack [addr=ffff880140469948]

Fix this by using ap->sector_buf instead of a stack buffer.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/ata/libata-core.c

index 6ac34b54f1097d1b1a0e3447eb553f4ae61f0e0a..501c209073834cb0f91556eb15bf5cfc0bc65fb4 100644 (file)
@@ -2329,7 +2329,7 @@ int ata_dev_configure(struct ata_device *dev)
                 * from SATA Settings page of Identify Device Data Log.
                 */
                if (ata_id_has_devslp(dev->id)) {
-                       u8 sata_setting[ATA_SECT_SIZE];
+                       u8 *sata_setting = ap->sector_buf;
                        int i, j;
 
                        dev->flags |= ATA_DFLAG_DEVSLP;