From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758208AbcBXIlS (ORCPT ); Wed, 24 Feb 2016 03:41:18 -0500 Received: from bird.oak.relay.mailchannels.net ([23.83.215.17]:2551 "EHLO bird.oak.relay.mailchannels.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755827AbcBXIlQ (ORCPT ); Wed, 24 Feb 2016 03:41:16 -0500 X-Greylist: delayed 75529 seconds by postgrey-1.27 at vger.kernel.org; Wed, 24 Feb 2016 03:41:14 EST X-Sender-Id: totalchoicehosting|x-authuser|billaue@leviathan.tchmachines.com X-Sender-Id: totalchoicehosting|x-authuser|billaue@leviathan.tchmachines.com X-MC-Relay: Neutral X-MailChannels-SenderId: totalchoicehosting|x-authuser|billaue@leviathan.tchmachines.com X-MailChannels-Auth-Id: totalchoicehosting X-MC-Loop-Signature: 1456303271051:3723826081 X-MC-Ingress-Time: 1456303271051 From: Eli Billauer To: arnd@arndb.de, gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, Eli Billauer Subject: [PATCH] char: xillybus: Fix internal data structure initialization Date: Wed, 24 Feb 2016 10:40:51 +0200 Message-Id: <1456303251-7726-1-git-send-email-eli.billauer@gmail.com> X-Mailer: git-send-email 1.7.2.3 X-AuthUser: billaue@leviathan.tchmachines.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A couple of fields in a data structure, which is used by the driver only, were not initialized properly during the driver's setup. The primary issue with this bug was that channel->wr_buf_size remained zero, so calls to dma_sync_single_for_cpu() took place with zero size, and consequently did nothing. This had a rather minimal practical impact, because (a) these calls are NOPs on Intel/AMD platforms, as well as other platforms with coherent cache, and (b) it's extremely rare that any cache line would survive between two reads from a given DMA buffer Hence no significant practical difference is expected with this patch. Signed-off-by: Eli Billauer --- drivers/char/xillybus/xillybus_core.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/char/xillybus/xillybus_core.c b/drivers/char/xillybus/xillybus_core.c index 77d6c12..dcd19f3 100644 --- a/drivers/char/xillybus/xillybus_core.c +++ b/drivers/char/xillybus/xillybus_core.c @@ -509,7 +509,7 @@ static int xilly_setupchannels(struct xilly_endpoint *ep, channel->log2_element_size = ((format > 2) ? 2 : format); - bytebufsize = channel->rd_buf_size = bufsize * + bytebufsize = bufsize * (1 << channel->log2_element_size); buffers = devm_kcalloc(dev, bufnum, @@ -523,6 +523,7 @@ static int xilly_setupchannels(struct xilly_endpoint *ep, if (!is_writebuf) { channel->num_rd_buffers = bufnum; + channel->rd_buf_size = bytebufsize; channel->rd_allow_partial = allowpartial; channel->rd_synchronous = synchronous; channel->rd_exclusive_open = exclusive_open; @@ -533,6 +534,7 @@ static int xilly_setupchannels(struct xilly_endpoint *ep, bufnum, bytebufsize); } else if (channelnum > 0) { channel->num_wr_buffers = bufnum; + channel->wr_buf_size = bytebufsize; channel->seekable = seekable; channel->wr_supports_nonempty = supports_nonempty; -- 1.7.2.3