Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp141354ybz; Wed, 15 Apr 2020 06:06:22 -0700 (PDT) X-Google-Smtp-Source: APiQypJIF7gAWx5/rYY6e2Art7q8AERoGHM6EES0z/9uE8Nhtbb6oqReWl1lWB6NWysGALK7+p7b X-Received: by 2002:adf:ed0e:: with SMTP id a14mr28801627wro.400.1586955982148; Wed, 15 Apr 2020 06:06:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586955982; cv=none; d=google.com; s=arc-20160816; b=BzdCT24epA0idx+VV/WiaupGDVCl4mTMbNQn5FF7Ri2BXKQmEG1eDrDu3MXKkWpTTF /ZjnTv2IiTZpyPJSmA6DbvLS9BOBt+iUz7uhoo8PZYdhgua4RVDyG5fRZI6HQBApa/CH N9B2pHpTeVXW9kZDFxvBrl2GLfwtKQ2EngFzLNHropHc6U3bNA3lmuPJmCrMpdQ92+W9 4/WRITK4YxUWY5iBgUkrrzbfkO+AHrJ1fLyLwFTPUrRkYj15HIn8Lw0+vpsEZwbTpQUw 92VlJBL66Wenv+Ytdz3IGQiFPhGm587szqlKW4f5XECx6eyj+elDp3/mo6wwVznuX6SG 3H6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=UckdiV4g5smZ/YcYI1aDJQcvx18cWKoMgwV0GVKDwJ0=; b=R1bXluKY76gfUg4+s4DMOwXcPlTTyDP1+9W4/9ceWWasc3sedW/YwfJMeSF59KqWl9 KkpXbolQMiF6fgUoDhseU8jpjcd2cVfNN+cRXIcnJp5Y+abtt5ywY+lmIF3wDpBOU+fE s6hPS2je2GIuTQFR3uhvWXMTr3zPseC8Rmh49f/mkYg3vyQ3ejm3lR91ozT5PSVkUtby sbNLheS3ED/+opxhh9iupp8nu47VIlF5FNYg1TKtIdsjtX3eMFYpUPAOG91kE4mQFGtp pCl1iBUhGK2ZAeiw15hlx+JiibfSowfO4IK8d/lS5Pm9EjsivbCfNxx/djWvAjou0LzV YoEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=Qal0UHDj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id di15si816177edb.423.2020.04.15.06.05.51; Wed, 15 Apr 2020 06:06:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=Qal0UHDj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2504001AbgDNSer (ORCPT + 99 others); Tue, 14 Apr 2020 14:34:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2503532AbgDNSeo (ORCPT ); Tue, 14 Apr 2020 14:34:44 -0400 Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCC22C061A0C for ; Tue, 14 Apr 2020 11:34:43 -0700 (PDT) Received: by mail-qk1-x742.google.com with SMTP id w70so10216885qkb.7 for ; Tue, 14 Apr 2020 11:34:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=UckdiV4g5smZ/YcYI1aDJQcvx18cWKoMgwV0GVKDwJ0=; b=Qal0UHDj/Eh4X2gPNfet+Ka0Gd7Qxqv6WpAnof0EP/tM7en7YjAoUu3rwectliHx7Y r/11+bJ0rk7/AA1OcEDXD0YMNQT+id7VTgB/BnjObZPMdLPfh4SqFd14nx6Ngqon4GJl N1uiOu7wVABx2p4DOPdrqi0i1GwK4np0KxVY7jJOV+80BPCzYqXPRoE+YkXM6cOT22X7 suqYhKQbOmCb8IPB+SA6OC1Rv4kfGqukqe03wLBKfPm1FczWzmZc4h7MVrHJnzCzzMqP LeC8pauqSDJJ7L8P0aVYRe+qybQjGc4hrCDzc7wRoOozJrVPBZS3LgeicsSvK3GxD6en DfHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=UckdiV4g5smZ/YcYI1aDJQcvx18cWKoMgwV0GVKDwJ0=; b=GwGSwLb/omKbqnAiee08nK7TRfzDwevu5pEyjXSVwYVu9xHbJkmhV+Z9O2elIx7GAd HfAHA/jA6HuymaaaQveZvTddosnT0eL9HpEUo4NauAT8XRkO1QnVT16VVmaobaLUyrRo 8/SQnw1hABHSYdN8gCXP6dMN++lDtCNuNzx5iNK3aJknQZt4/homQk+s0jHqKlHtlaNT e6zPPq/yiVxEzOBnXdZ2owUQtzl8xbXoCayVlrtAF10Kcpk4E18sJwY2eZQp+3ewwPd9 fbF8sWPHdRHg0Q83377qH57R5bLeV/sF3xYZXfbFlSnk4qeBT3S23jMO+7VxZBzuww0A 337g== X-Gm-Message-State: AGi0PubInaLj0EPfhMYSjxW4HL9vjNJO8it++/aVPrClibwzBNCqGvVN t/RlWthaHs5sHrKyRCpn+SxBDQ== X-Received: by 2002:a37:6754:: with SMTP id b81mr2072274qkc.129.1586889282884; Tue, 14 Apr 2020 11:34:42 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-68-57-212.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.68.57.212]) by smtp.gmail.com with ESMTPSA id o6sm10819346qkd.113.2020.04.14.11.34.42 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 14 Apr 2020 11:34:42 -0700 (PDT) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1jOQOP-0007ea-Qq; Tue, 14 Apr 2020 15:34:41 -0300 Date: Tue, 14 Apr 2020 15:34:41 -0300 From: Jason Gunthorpe To: Christophe JAILLET Cc: selvin.xavier@broadcom.com, devesh.sharma@broadcom.com, dledford@redhat.com, leon@kernel.org, colin.king@canonical.com, roland@purestorage.com, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [PATCH] RDMA/ocrdma: Fix an off-by-one issue in 'ocrdma_add_stat' Message-ID: <20200414183441.GA28870@ziepe.ca> References: <20200328073040.24429-1-christophe.jaillet@wanadoo.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200328073040.24429-1-christophe.jaillet@wanadoo.fr> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Mar 28, 2020 at 08:30:40AM +0100, Christophe JAILLET wrote: > There is an off-by-one issue when checking if there is enough space in the > output buffer, because we must keep some place for a final '\0'. > > While at it: > - Use 'scnprintf' instead of 'snprintf' in order to avoid a superfluous > 'strlen' > - avoid some useless initializations > - avoida hard coded buffer size that can be computed at built time. > > Fixes: a51f06e1679e ("RDMA/ocrdma: Query controller information") > Signed-off-by: Christophe JAILLET > --- > The '\0' comes from memset(..., 0, ...) in all callers. > This could be also avoided if needed. > --- > drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c > index 5f831e3bdbad..614a449e6b87 100644 > --- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c > +++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c > @@ -49,13 +49,12 @@ static struct dentry *ocrdma_dbgfs_dir; > static int ocrdma_add_stat(char *start, char *pcur, > char *name, u64 count) > { > - char buff[128] = {0}; > - int cpy_len = 0; > + char buff[128]; > + int cpy_len; > > - snprintf(buff, 128, "%s: %llu\n", name, count); > - cpy_len = strlen(buff); > + cpy_len = scnprintf(buff, sizeof(buff), "%s: %llu\n", name, count); > > - if (pcur + cpy_len > start + OCRDMA_MAX_DBGFS_MEM) { > + if (pcur + cpy_len >= start + OCRDMA_MAX_DBGFS_MEM) { > pr_err("%s: No space in stats buff\n", __func__); > return 0; > } The memcpy is still kind of silly right? What about this: static int ocrdma_add_stat(char *start, char *pcur, char *name, u64 count) { size_t len = (start + OCRDMA_MAX_DBGFS_MEM) - pcur; int cpy_len; cpy_len = snprintf(pcur, len, "%s: %llu\n", name, count); if (cpy_len >= len || cpy_len < 0) { pr_err("%s: No space in stats buff\n", __func__); return 0; } return cpy_len; } Jason