Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp4102696yba; Sun, 19 May 2019 10:43:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqwhz/t8s/TGeFOy/C3dQCEZ9bV+NKKLbwPe4MkRaOpTOGoqNWlb9BMT1f8RAJH2zUeBMZHt X-Received: by 2002:a17:902:8f8d:: with SMTP id z13mr3615537plo.166.1558287816424; Sun, 19 May 2019 10:43:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558287816; cv=none; d=google.com; s=arc-20160816; b=GYMsXATjCwuJgJVvV55Wk2grxt3wjdcPDs3nU6mjsN/dgA+HgpXBA5HPL2NLYUJfyM +z6dkzl+IjD5ISmexVwv9gvsoE7jU9FdOfLlNf3pRq1/zMdX1MSlQ1yWAJfrZNkMz2ml zoayD8jbVeGG8xtTIyhNxWSb8wintkQfiqLhA0B4ambEb2j+ef5C9KrpsSC6cOAkWPzR 8+OdDUaPe19/3w0QvuP3/Diet4DvZNrBNxEa0sIBVWZ78srS/sEEJlKqhF7fqKZEH6tv mardrCyui+4xAM5j8KyDHlqMvj60eNGwW+3ifOrTvS4MoKcEC59w2QeKkgjirpUrVsHY vR4w== 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; bh=1Pq5venrIrozqO4cYCWvB+XOLRiru58X88r9YOdjfkE=; b=SMCRYfDJjrQ8HTXdcbzfaaJF3RC1r561YgsLpMdjzVUj5SxYo+OC63/OxKQffShEI5 W7X3/8ZmjYyzPB+eOLuyZ0imSzS6PZCIsKEHQc98vp80+F1c5iKEGFX36kt2uDt8pMyo z3xLyUxf5Fl+6McIjH2Jfys8Ix8I5hNRwF/a1eDEKSzjJw58uhPXWiSmcjkhO+/SVrjJ eOYx7k9bRXu2l4pkck9zI9ZGXxNnfvGdXimf0+vI+KrGcNw3Sb8ueTAXsKy59+9RxriS mgm14p5nOCh5wve2Sv4wEKvvMDvq8iQ504ERCxnsiopHI59sd8MVE47ZkcLVbXjhzZVX SYwg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h7si12344651pgk.379.2019.05.19.10.43.20; Sun, 19 May 2019 10:43:36 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728687AbfESRmS (ORCPT + 99 others); Sun, 19 May 2019 13:42:18 -0400 Received: from sauhun.de ([88.99.104.3]:44874 "EHLO pokefinder.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728499AbfESRmS (ORCPT ); Sun, 19 May 2019 13:42:18 -0400 Received: from localhost (p5486CF3F.dip0.t-ipconnect.de [84.134.207.63]) by pokefinder.org (Postfix) with ESMTPSA id A6F142C3740; Sun, 19 May 2019 16:02:31 +0200 (CEST) Date: Sun, 19 May 2019 16:02:31 +0200 From: Wolfram Sang To: Asmaa Mnebhi Cc: minyard@acm.org, vadimp@mellanox.com, michaelsh@mellanox.com, rdunlap@infradead.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org Subject: Re: [PATCH v9 1/1] Add support for IPMB driver Message-ID: <20190519140231.GA7291@kunai> References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="8t9RHnE3ZwKMSgU+" Content-Disposition: inline In-Reply-To: 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 --8t9RHnE3ZwKMSgU+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline > +static int receive_ipmb_request(struct ipmb_dev *ipmb_dev, > + bool non_blocking, > + struct ipmb_msg *ipmb_request) > +{ > + struct ipmb_request_elem *queue_elem; > + unsigned long flags; > + int res; > + > + spin_lock_irqsave(&ipmb_dev->lock, flags); > + > + while (!atomic_read(&ipmb_dev->request_queue_len)) { Am I overlooking something? Why are you protecting an atomic_read with a spinlock? > + spin_unlock_irqrestore(&ipmb_dev->lock, flags); > + > + if (non_blocking) > + return -EAGAIN; > + > + res = wait_event_interruptible(ipmb_dev->wait_queue, > + atomic_read(&ipmb_dev->request_queue_len)); > + if (res) > + return res; > + > + spin_lock_irqsave(&ipmb_dev->lock, flags); > + } ... > + rq_sa = msg[RQ_SA_8BIT_IDX] >> 1; > + netf_rq_lun = msg[NETFN_LUN_IDX]; > + /* > + * subtract rq_sa and netf_rq_lun from the length of the msg passed to > + * i2c_smbus_write_block_data_local > + */ > + msg_len = msg[IPMB_MSG_LEN_IDX] - SMBUS_MSG_HEADER_LENGTH; > + > + strcpy(rq_client.name, "ipmb_requester"); > + rq_client.adapter = ipmb_dev->client->adapter; > + rq_client.flags = ipmb_dev->client->flags; > + rq_client.addr = rq_sa; Is it possible to determine in a race-free way if rq_sa (which came from userspace AFAIU) is really the address from which the request came in (again if I understood all this correctly)? --8t9RHnE3ZwKMSgU+ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAlzhYfMACgkQFA3kzBSg KbaUFBAAhYsyH1aaRJTDSRpDGGcd3ZnZ3zTzRUjf4prl/rhXfBIaroHb3Mrp1aYX ZGScerkOwHtVFSat1vAn3xsrzkHL/X5ADObbm3Jdx3ofZhLrP1pKT3mL3ah7xJ7H zXuLF5F/8xc6sd5BEsdh/Iazw/v+Q8rkfgZZ6ExZV+cueh8R5M5PxyaFKXj6327k qRePyE64zjfzzCL1rupNLzmegvp2qnXE7ZO0+vWuhVpw3PWO1kBh4mTmPxl3TkAk onbXPgqWJgg56Kh7ZMm1BfiIaUGYeiDR1DI8IHzTWJVBmOMpPItgvMaVqKBDU2M5 ZmFXzm6o8ADuqM1+xLTXTgUJC92pDtzEpu/OP8neMbiqsZUvJlZ2R9AMEPf6XDbU d+nYOivm1KLkK5iZR7DsZwi+ZsSWM1VVeQ1huagrJ9AM5QN+nlxdxv30+Wff86BP aGfSuNqw0mwA/ZLp59jv6QeqKa/C21bPdUUZklZ28cEXHOOfVZFtTl4tfG62VV/0 HQW4fxqk9yZue6Lh7PoW9f/eDHRi6/8FXLRieNdxjhjl4vH5My48znKij5XE3WKj uzI2qHHHRMno5AAoo42n97KAvxAdMGAdjkmnzkn1sRq36SfA5YRPFL5EcFbxQC0K edcChltpC+mULAVOc2Le6pgXeCJ5fGVNNY64iGNxIvtWSx9p9t0= =N/9+ -----END PGP SIGNATURE----- --8t9RHnE3ZwKMSgU+--