Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752877AbdDKNa7 (ORCPT ); Tue, 11 Apr 2017 09:30:59 -0400 Received: from mail-qk0-f181.google.com ([209.85.220.181]:35838 "EHLO mail-qk0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751951AbdDKNa4 (ORCPT ); Tue, 11 Apr 2017 09:30:56 -0400 Date: Tue, 11 Apr 2017 09:30:53 -0400 From: Sean Paul To: Jonathan =?iso-8859-1?Q?Neusch=E4fer?= Cc: dri-devel@lists.freedesktop.org, Dave Airlie , linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/udl: Fix unaligned memory access in udl_render_hline Message-ID: <20170411133053.stmwmsmjf7ybq42v@art_vandelay> References: <20170407200229.20642-1-j.neuschaefer@gmx.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170407200229.20642-1-j.neuschaefer@gmx.net> User-Agent: NeoMutt/20170306-66-6ddb52-dirty (1.8.0) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1360 Lines: 46 On Fri, Apr 07, 2017 at 10:02:29PM +0200, Jonathan Neusch?fer wrote: > On SPARC, the udl driver filled my kernel log with these messages: > > [186668.910612] Kernel unaligned access at TPC[76609c] udl_render_hline+0x13c/0x3a0 > > Use put_unaligned_be16 to avoid them. On x86 this results in the same > code, but on SPARC the compiler emits two single-byte stores. > Pushed to drm-misc-fixes with Dave's IRC Ack. Thanks, Sean > Signed-off-by: Jonathan Neusch?fer > --- > drivers/gpu/drm/udl/udl_transfer.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/udl/udl_transfer.c b/drivers/gpu/drm/udl/udl_transfer.c > index 917dcb978c2c..0c87b1ac6b68 100644 > --- a/drivers/gpu/drm/udl/udl_transfer.c > +++ b/drivers/gpu/drm/udl/udl_transfer.c > @@ -14,6 +14,7 @@ > #include > #include > #include > +#include > > #include > #include "udl_drv.h" > @@ -163,7 +164,7 @@ static void udl_compress_hline16( > const u8 *const start = pixel; > const uint16_t repeating_pixel_val16 = pixel_val16; > > - *(uint16_t *)cmd = cpu_to_be16(pixel_val16); > + put_unaligned_be16(pixel_val16, cmd); > > cmd += 2; > pixel += bpp; > -- > 2.11.0 -- Sean Paul, Software Engineer, Google / Chromium OS