From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751961AbdGRBWN (ORCPT ); Mon, 17 Jul 2017 21:22:13 -0400 Received: from smtprelay0187.hostedemail.com ([216.40.44.187]:58575 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751549AbdGRBWM (ORCPT ); Mon, 17 Jul 2017 21:22:12 -0400 X-Session-Marker: 6A6F6540706572636865732E636F6D X-Spam-Summary: 2,0,0,,d41d8cd98f00b204,joe@perches.com,:::::::::::,RULES_HIT:41:69:355:379:421:541:599:800:960:973:988:989:1260:1277:1311:1313:1314:1345:1359:1373:1437:1515:1516:1518:1534:1542:1593:1594:1711:1730:1747:1777:1792:2393:2559:2562:2693:2828:3138:3139:3140:3141:3142:3353:3622:3865:3866:3867:3868:3870:3871:4250:4321:5007:8603:10004:10400:10848:11026:11232:11473:11658:11914:12043:12555:12740:12760:12895:13138:13231:13439:14093:14097:14181:14659:14721:21080:21627:30012:30054:30070:30091,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:2,LUA_SUMMARY:none X-HE-Tag: frog58_875991b06e654 X-Filterd-Recvd-Size: 3040 Message-ID: <1500340928.25934.18.camel@perches.com> Subject: Re: [PATCH v2 2/2] staging: gs_fpgaboot: change char to u8 From: Joe Perches To: Jacob von Chorus , Greg Kroah-Hartman , Insop Song Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, dan.carpenter@oracle.com Date: Mon, 17 Jul 2017 18:22:08 -0700 In-Reply-To: <20170718004726.17227-2-jacobvonchorus@cwphoto.ca> References: <20170718004726.17227-1-jacobvonchorus@cwphoto.ca> <20170718004726.17227-2-jacobvonchorus@cwphoto.ca> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.22.6-1ubuntu1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2017-07-17 at 20:47 -0400, Jacob von Chorus wrote: > The bitstream storage variables were changed from char to u8 arrays to > prevent issues such as negative lengths. This change makes the code > compatible with the "data" field in "struct firmware" which is of type > u8. > > Signed-off-by: Jacob von Chorus > --- > drivers/staging/gs_fpgaboot/gs_fpgaboot.c | 24 ++++++++++++------------ > drivers/staging/gs_fpgaboot/gs_fpgaboot.h | 2 +- > 2 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/drivers/staging/gs_fpgaboot/gs_fpgaboot.c b/drivers/staging/gs_fpgaboot/gs_fpgaboot.c > index 008ef99f05..467a0ad81f 100644 > --- a/drivers/staging/gs_fpgaboot/gs_fpgaboot.c > +++ b/drivers/staging/gs_fpgaboot/gs_fpgaboot.c > @@ -41,16 +41,16 @@ static char *file = "xlinx_fpga_firmware.bit"; > module_param(file, charp, 0444); > MODULE_PARM_DESC(file, "Xilinx FPGA firmware file."); > > -static void read_bitstream(char *bitdata, char *buf, int *offset, int rdsize) > +static void read_bitstream(u8 *bitdata, u8 *buf, int *offset, int rdsize) > { > memcpy(buf, bitdata + *offset, rdsize); > *offset += rdsize; > } > > -static int readinfo_bitstream(char *bitdata, char *buf, int size, int *offset) > +static int readinfo_bitstream(u8 *bitdata, u8 *buf, int size, int *offset) > { > - char tbuf[64]; > - s32 len; > + u8 tbuf[64]; > + u16 len; > > /* read section char */ > read_bitstream(bitdata, tbuf, offset, 1); read_bitstream takes an int rdsize, not a u16. and this function will overflow tbuf if len > 64 static void readinfo_bitstream(char *bitdata, char *buf, int *offset) { char tbuf[64]; s32 len; /* read section char */ read_bitstream(bitdata, tbuf, offset, 1); /* read length */ read_bitstream(bitdata, tbuf, offset, 2); len = tbuf[0] << 8 | tbuf[1]; read_bitstream(bitdata, buf, offset, len); buf[len] = '\0'; } len is up to 64k but tbuf is 64 bytes. len = get_unaligned_le16(tbuf) might be nicer than len = tbuf[0] << 8 | tbuf[1];