All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Alison Schofield <alison.schofield@intel.com>
Cc: Ben Widawsky <ben.widawsky@intel.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Vishal Verma <vishal.l.verma@intel.com>,
	<linux-cxl@vger.kernel.org>
Subject: Re: [PATCH v3 6/9] cxl/mbox: Make handle_mailbox_cmd_from_user() use a mbox param
Date: Tue, 29 Mar 2022 11:50:57 +0100	[thread overview]
Message-ID: <20220329115057.00004569@Huawei.com> (raw)
In-Reply-To: <20220326002535.GA1153598@alison-desk>

On Fri, 25 Mar 2022 17:25:35 -0700
Alison Schofield <alison.schofield@intel.com> wrote:

> On Fri, Mar 25, 2022 at 11:04:43AM +0000, Jonathan Cameron wrote:
> > On Wed, 23 Mar 2022 18:11:23 -0700
> > alison.schofield@intel.com wrote:
> >   
> > > From: Alison Schofield <alison.schofield@intel.com>
> > > 
> > > Previously, handle_mailbox_cmd_from_user(), constructed the mailbox
> > > command and dispatched it to the hardware. The construction work
> > > has moved to the validation path.
> > > 
> > > handle_mailbox_cmd_from_user() now expects a fully validated
> > > mbox param. Make it's caller, cxl_send_cmd(), deliver it. Update
> > > the comments and dereferencing of the new mbox parameter.
> > > 
> > > Signed-off-by: Alison Schofield <alison.schofield@intel.com>  
> > 
> > One suggestion below.
> >  
> snip
> 
> > > @@ -474,22 +466,22 @@ static int handle_mailbox_cmd_from_user(struct cxl_dev_state *cxlds,
> > >  	 * to userspace. While the payload may have written more output than
> > >  	 * this it will have to be ignored.
> > >  	 */
> > > -	if (mbox_cmd.size_out) {
> > > -		dev_WARN_ONCE(dev, mbox_cmd.size_out > *size_out,
> > > +	if (mbox_cmd->size_out) {
> > > +		dev_WARN_ONCE(dev, mbox_cmd->size_out > *size_out,
> > >  			      "Invalid return size\n");
> > >  		if (copy_to_user(u64_to_user_ptr(out_payload),
> > > -				 mbox_cmd.payload_out, mbox_cmd.size_out)) {
> > > +				 mbox_cmd->payload_out, mbox_cmd->size_out)) {
> > >  			rc = -EFAULT;
> > >  			goto out;
> > >  		}
> > >  	}
> > >  
> > > -	*size_out = mbox_cmd.size_out;
> > > -	*retval = mbox_cmd.return_code;
> > > +	*size_out = mbox_cmd->size_out;
> > > +	*retval = mbox_cmd->return_code;
> > >  
> > >  out:
> > > -	kvfree(mbox_cmd.payload_in);
> > > -	kvfree(mbox_cmd.payload_out);
> > > +	kvfree(mbox_cmd->payload_in);
> > > +	kvfree(mbox_cmd->payload_out);  
> > 
> > As this function is no longer responsible for allocating these, I'd be inclined
> > to pull the frees out to the caller.
> > 
> > That will make things less fragile to any additional code that might in future
> > occur between
> > 
> > cxl_validate_cmd_from_user() and handle_mailbox_cmd_from_user()
> >   
> > >  	return rc;
> > >  }  
> 
> Yeah, not so graceful there. I'll pull them out to the caller, but the
> caller isn't the place were they were alloc'd. It goes like this:
> 
> cxl_send_cmd() {
> 	copy_from_user()
> 	cxl_validate_cmd_from_user() - does the allocs now
> 	handle_mailbox_from_user() - does the frees now
> 	? Move the frees here ?	

Could wrap them in a function to balance with the
validate, though that would need renaming to make the connection obvious.



> 	copy_to_user()
> }
> 
> I'll move. See what you think in next version.
> 
> > >  
> > > @@ -511,9 +503,8 @@ int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
> > >  	if (rc)
> > >  		return rc;
> > >  
> > > -	rc = handle_mailbox_cmd_from_user(cxlds, &c, send.in.payload,
> > > -					  send.out.payload, &send.out.size,
> > > -					  &send.retval);
> > > +	rc = handle_mailbox_cmd_from_user(cxlds, &mbox_cmd, send.out.payload,
> > > +					  &send.out.size, &send.retval);
> > >  	if (rc)
> > >  		return rc;
> > >    
> >   


  reply	other threads:[~2022-03-29 10:51 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-24  1:11 [PATCH v3 0/9] Do not allow set-partition immediate mode alison.schofield
2022-03-24  1:11 ` [PATCH v3 1/9] cxl/mbox: Move cxl_mem_command construction to helper funcs alison.schofield
2022-03-25 10:27   ` Jonathan Cameron
2022-03-26  0:01     ` Alison Schofield
2022-03-24  1:11 ` [PATCH v3 2/9] cxl/mbox: Move raw command warning to raw command validation alison.schofield
2022-03-25 10:32   ` Jonathan Cameron
2022-03-24  1:11 ` [PATCH v3 3/9] cxl/mbox: Move build of user mailbox cmd to a helper function alison.schofield
2022-03-25 10:43   ` Jonathan Cameron
2022-03-24  1:11 ` [PATCH v3 4/9] cxl/mbox: Construct a users cxl_mbox_cmd in the validation path alison.schofield
2022-03-25 10:54   ` Jonathan Cameron
2022-03-26  0:37     ` Alison Schofield
2022-03-24  1:11 ` [PATCH v3 5/9] cxl/mbox: Remove dependency on cxl_mem_command for a debug msg alison.schofield
2022-03-25 10:56   ` Jonathan Cameron
2022-03-26  0:26     ` Alison Schofield
2022-03-24  1:11 ` [PATCH v3 6/9] cxl/mbox: Make handle_mailbox_cmd_from_user() use a mbox param alison.schofield
2022-03-25 11:04   ` Jonathan Cameron
2022-03-26  0:25     ` Alison Schofield
2022-03-29 10:50       ` Jonathan Cameron [this message]
2022-03-24  1:11 ` [PATCH v3 7/9] cxl/mbox: Move cxl_mem_command param to a local variable alison.schofield
2022-03-25 11:10   ` Jonathan Cameron
2022-03-24  1:11 ` [PATCH v3 8/9] cxl/mbox: Block immediate mode in SET_PARTITION_INFO command alison.schofield
2022-03-25 11:18   ` Jonathan Cameron
2022-03-26  0:31     ` Alison Schofield
2022-03-24  1:11 ` [PATCH v3 9/9] cxl/pmem: Remove CXL SET_PARTITION_INFO from exclusive_cmds list alison.schofield
2022-03-25 11:19   ` Jonathan Cameron
2022-03-25 10:34 ` [PATCH v3 0/9] Do not allow set-partition immediate mode Jonathan Cameron
2022-03-30  1:24   ` Dan Williams
2022-03-30 15:05     ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220329115057.00004569@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=alison.schofield@intel.com \
    --cc=ben.widawsky@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=ira.weiny@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=vishal.l.verma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.