From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932301AbcBXPQ7 (ORCPT ); Wed, 24 Feb 2016 10:16:59 -0500 Received: from mailapp01.imgtec.com ([195.59.15.196]:61059 "EHLO mailapp01.imgtec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751166AbcBXPQx (ORCPT ); Wed, 24 Feb 2016 10:16:53 -0500 From: Harvey Hunt To: , CC: Harvey Hunt , , "# 2 . 6 . 18" Subject: [PATCH] libata: Align ata_device's id on a cacheline Date: Wed, 24 Feb 2016 15:16:43 +0000 Message-ID: <1456327003-16295-1-git-send-email-harvey.hunt@imgtec.com> X-Mailer: git-send-email 2.7.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.168.154.40] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The id buffer in ata_device is a DMA target, but it isn't explicitly cacheline aligned. Due to this, adjacent fields can be overwritten with stale data from memory on non coherent architectures. As a result, the kernel is sometimes unable to communicate with an ATA device. Fix this by ensuring that the id buffer is cacheline aligned. This issue is similar to that fixed by Commit 84bda12af31f ("libata: align ap->sector_buf"). Signed-off-by: Harvey Hunt Cc: linux-kernel@vger.kernel.org Cc: # 2.6.18 --- This patch is based on libata/for-4.6 include/linux/libata.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/libata.h b/include/linux/libata.h index bec2abb..2c4ebef 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -720,7 +720,7 @@ struct ata_device { union { u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ - }; + } ____cacheline_aligned; /* DEVSLP Timing Variables from Identify Device Data Log */ u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; -- 2.7.1