Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp1161238rwi; Thu, 3 Nov 2022 01:42:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4fmRk2j4pIE1Zi46VI6JPtyj/RMwMMhhOpBBscq7SYrZL5segvrpfxD4KuuDj0omWXpRnl X-Received: by 2002:a17:903:40d2:b0:186:6f1d:608c with SMTP id t18-20020a17090340d200b001866f1d608cmr29611465pld.52.1667464931967; Thu, 03 Nov 2022 01:42:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667464931; cv=none; d=google.com; s=arc-20160816; b=jkNLyTfY41NVFTnzi91cth7wrv0k9+PuIpkkZkkCLSQT/t9QwtFVQ83YSKyeKwMBIx hXzZd0S4LrzY2I2GxGcBv8vD7vWPab9NrbSi2/RqpDeXEHBz4sx+UZfnnUkobDT2DOUP imMVPJVJULPSK4AHlaqMeheEyFRWOMbMHRDcEWx/yeLPXqxTD5Q552IHoB9gBDcgkCzV J/R/Kfz3UT7dU2rnsC2Y+uErmlu5N772l0BiasxOeZGv9qwzcauVKgN0Hglyt1bqwzE0 N2Ng84AyYXxWc9uac1X5/9uJBHzZ5gQuzVrbVCNVIudUOf9E8I8gt6Nl4J3oboDzpc4P e8TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=2LPPdcHAoUoaJQixPQhafwrKzpFrHYeO1DDeQ2kw7c8=; b=T+ltaqnOmprzIW9Z4k8hrZd4hJ+zQAvRSupzOo+d5sDVYGeAnpHo7qtLyFpyJc2oQ4 dLD0CYrWTtPrZcrPixA7DPXPiNj6W3Ko5CGFB/qvSzIiatqkcHWQNaT1KtizQZnEXmN9 Ip4CoC1QvVK8V0HCoTOtPOEQtS8GgmLdqfoAiAwPqI23uWpgIS3TQkv58D+e6jxqAg8v MdjIIGcTjAdrZ/Q80srwoKajgRWuZwwipzXFGuF6gkYG2u6+nTTZK7bkuxU0Aqjg16nu h3br93us8frou4tOy4fPad8V+p2MmPxq9xm18GSJSwKUfVFeKsC7ygj0xPkR/VTKZUFz 2xCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@mailo.com header.s=mailo header.b=OfXeZ79U; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mailo.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nu4-20020a17090b1b0400b0020ab20c54fesi6369235pjb.114.2022.11.03.01.41.59; Thu, 03 Nov 2022 01:42:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@mailo.com header.s=mailo header.b=OfXeZ79U; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mailo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229985AbiKCINT (ORCPT + 97 others); Thu, 3 Nov 2022 04:13:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229487AbiKCINR (ORCPT ); Thu, 3 Nov 2022 04:13:17 -0400 Received: from msg-2.mailo.com (msg-2.mailo.com [213.182.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D27FBE60 for ; Thu, 3 Nov 2022 01:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailo.com; s=mailo; t=1667463180; bh=O+mMeFtgdlxXHJDP6iXzPllPw2adCXFQra8DGX8IuI4=; h=X-EA-Auth:Date:From:To:Cc:Subject:Message-ID:References: MIME-Version:Content-Type:In-Reply-To; b=OfXeZ79UI0yImxGq76C1OX6yu6aKHY0p32h0/ZNAVg1Asy2ulkJOKweB+PVpnRi4K rbzASdTHE18fnZTC8Rjp8wEKIE5xn+2p4EMeP57q7i4XEz1sm43Cts4fFbBmXAUHr4 Zkriud/QkDSWldOsgLp4pis/gs+EkXbvuiP3guz0= Received: by b-5.in.mailobj.net [192.168.90.15] with ESMTP via [213.182.55.206] Thu, 3 Nov 2022 09:13:00 +0100 (CET) X-EA-Auth: plpUEzRR4JMlyjZPE/X+H+BtojrboKHPOU9QZLL1HF9xTNqdkXpdJxtRb174iW7t5xjmdWu8l+BLEYYl7rS9TUNuNjis1Di3 Date: Thu, 3 Nov 2022 13:42:56 +0530 From: Deepak R Varma To: Dan Carpenter Cc: outreachy@lists.linux.dev, Greg Kroah-Hartman , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: staging: emxx_udc question on i_write_length datatype Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Nov 03, 2022 at 10:55:27AM +0300, Dan Carpenter wrote: > On Thu, Nov 03, 2022 at 12:57:09PM +0530, Deepak R Varma wrote: > > Hello, > > While reviewing this [1] coccicheck warning, I observed something that concerned > > me. The variable i_write_length is declared to be of u32 type. Later it is > > assigned a value DMA_MAX_COUNT * mpkt; which is 256 * u32; > > > > I am unable to estimate if mpkt (or max packet size) can attain value greater > > than 16777215 in which case the result will overflow the 32 bits of > > i_write_length. Is it safe to make i_write_length to be a u64? > > > > [1] drivers/staging/emxx_udc/emxx_udc.c:1007:28-29: WARNING opportunity for min() > > > > drivers/staging/emxx_udc/emxx_udc.c > 983 static int _nbu2ss_in_dma(struct nbu2ss_udc *udc, struct nbu2ss_ep *ep, > 984 struct nbu2ss_req *req, u32 num, u32 length) > 985 { > 986 dma_addr_t p_buffer; > 987 u32 mpkt; /* MaxPacketSize */ > 988 u32 lmpkt; /* Last Packet Data Size */ > 989 u32 dmacnt; /* IN Data Size */ > 990 u32 i_write_length; > 991 u32 data; > 992 int result = -EINVAL; > 993 struct fc_regs __iomem *preg = udc->p_regs; > 994 > 995 if (req->dma_flag) > 996 return 1; /* DMA is forwarded */ > 997 > 998 #ifdef USE_DMA > 999 if (req->req.actual == 0) > 1000 _nbu2ss_dma_map_single(udc, ep, req, USB_DIR_IN); > 1001 #endif > 1002 req->dma_flag = true; > 1003 > 1004 /* MAX Packet Size */ > 1005 mpkt = _nbu2ss_readl(&preg->EP_REGS[num].EP_PCKT_ADRS) & EPN_MPKT; > ^^^^^^^^ > mpkt is 0-0x7ff so 256 * 0x7ff will not be greater than UINT_MAX. Thank you Dan. I understand now. "& EPN_MPKT" keeps the size under control. Appreciate very much. ./drv > > 1006 > 1007 if ((DMA_MAX_COUNT * mpkt) < length) > 1008 i_write_length = DMA_MAX_COUNT * mpkt; > 1009 else > 1010 i_write_length = length; > 1011 > 1012 /*------------------------------------------------------------*/ > 1013 /* Number of transmission packets */ > 1014 if (mpkt < i_write_length) { > > regards, > dan carpenter >