Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp188178imu; Wed, 12 Dec 2018 14:44:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/UdFAynnh6UNd92XTPRQ0LItZMgc2DaqkQv+KDHBcleP6J1a65uxe4EdbazzsgRjuNwlUqe X-Received: by 2002:a62:5182:: with SMTP id f124mr22084048pfb.238.1544654694400; Wed, 12 Dec 2018 14:44:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544654694; cv=none; d=google.com; s=arc-20160816; b=W11LIJlZBnYmvj2bxpgBLJh9H8sGAtRdLqhgn2Rbiw9jTjVnvnXQw7Irhcx65qzuiG SCh+0SKmlEVGZv7J55B8vAS+PkZxpmxNdE5RvB4OJk77VQsIK/ESGvZ4MBoRZYs0DT6/ +wV7ujWUjj440/puDZPozrFlhV4AbZystDUBg4wGJrxed9gpnx1VbUmACJlnIsuDY0Uv klbaZ5kA18Vmdn2tNF+YC1DDHlcNKIxwe49+jpqiFXs+BeiC9MMrTVkcwAlWDG/QiE98 jL+1RPeM9VUhhn/6DOQe1uyauwzLLK7+BPY7CuOSWGukkA6qzDBd1Ms/IUv1i0G0uZ21 VnNg== 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=bcoa/0gVYMoUoJvHjqUoavcZSp3CguSfi86zg/SfFrY=; b=CgJbywC/xtkJOx1x/sxOccYxJwZWIMDK0yTF1rXT/8AN24/lWQ+AIDEEp/nbU7rpLp O2lBILPKq9K/6pLIBEs6jKt7sji8HWoqdrSCm1rdh9OFc9NPQOWrhXy7Tr0rkWBMiQue agDp/i+HPmup0j5vXzvnS6ecXLkDC9E0HOY+AFLpkAnOniggdwLePDQ5TlQjTvw98jgo /yJFtv6GRXFUEMbhI6BiotRRJL7uur79+MuiDIKbu6sv10CekcReBP0c9SZFwKJr0Sgm guEZFKllaymH3Wv5wek+yqw86c15cz0Q2b/ms0NqkGSk0c38vMe7hGN3u0jt2XEqwVY4 czMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WRr55J7R; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v19si64067pfa.80.2018.12.12.14.44.36; Wed, 12 Dec 2018 14:44:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WRr55J7R; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728345AbeLLWnV (ORCPT + 99 others); Wed, 12 Dec 2018 17:43:21 -0500 Received: from mail.kernel.org ([198.145.29.99]:58398 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726440AbeLLWnV (ORCPT ); Wed, 12 Dec 2018 17:43:21 -0500 Received: from localhost (unknown [69.71.4.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2D24020645; Wed, 12 Dec 2018 22:43:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544654600; bh=VIxtIFtRQmk7t6qIoKqlNdbuLv+MybgedcnEsrBnh1k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=WRr55J7RRdEkA4xOIZ96FTOjpLNlTKSgLl+zrq6HIq411D/z63SFF3NRaR2HN+ibG Wl0LED/50mMb/xHriQ+E1mCk76fXc2gLQWD6X0ry7tHuul41SKgTvdYIxRX6l7ICDm KBXBIh6Myz6W/PALXb/hpX1DaDvWWUm1XxmUMvOs= Date: Wed, 12 Dec 2018 16:43:15 -0600 From: Bjorn Helgaas To: Wesley Sheng Cc: kurt.schwemmer@microsemi.com, logang@deltatee.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, wesleyshenggit@sina.com Subject: Re: [PATCH 3/5] switchtec: A temporary variable should be used for the flags of switchtec_ioctl_event_ctl Message-ID: <20181212224315.GK99796@google.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> <1544433144-7563-4-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1544433144-7563-4-git-send-email-wesley.sheng@microchip.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Dec 10, 2018 at 05:12:22PM +0800, Wesley Sheng wrote: > From: Joey Zhang > > For nr_idxs is larger than 1 switchtec_ioctl_event_ctl event flags will be > used by each event indexes. In current implementation the event flags are > overwritten by first call of the function event_ctl(). > > Preserve the event flag value with a temporary variable. > > Fixes: 52eabba5bcdb ("switchtec: Add IOCTLs to the Switchtec driver") > Signed-off-by: Joey Zhang > Signed-off-by: Wesley Sheng > Reviewed-by: Logan Gunthorpe > --- > drivers/pci/switch/switchtec.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c > index 480107e..a908670 100644 > --- a/drivers/pci/switch/switchtec.c > +++ b/drivers/pci/switch/switchtec.c > @@ -796,6 +796,7 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev, > { > int ret; > int nr_idxs; > + unsigned int event_flags; > struct switchtec_ioctl_event_ctl ctl; > > if (copy_from_user(&ctl, uctl, sizeof(ctl))) > @@ -817,7 +818,9 @@ static int ioctl_event_ctl(struct switchtec_dev *stdev, > else > return -EINVAL; > > + event_flags = ctl.flags; > for (ctl.index = 0; ctl.index < nr_idxs; ctl.index++) { > + ctl.flags = event_flags; > ret = event_ctl(stdev, &ctl); event_ctl() overwrites several other things, in addition to ctl.flags: ctl.data[] ctl.occurred ctl.count Is that what you intend? It looks like only the values from the *last* call of event_ctl() will be copied back to the user buffer. > if (ret < 0) > return ret; > -- > 2.7.4 >