Re: [PATCH v2 02/15] IB/pvrdma: Add device command support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 31, 2016 at 09:15:47AM +0300, Leon Romanovsky wrote:
> On Fri, Jul 29, 2016 at 09:31:16PM +0000, Adit Ranadive wrote:
> > On Fri, 29 Jul 2016 12:37:29 +0000, Leon Romanovsky <leon@xxxxxxxxxx> wrote:
> > > On Thu, Jul 28, 2016 at 10:51:39PM +0000, Adit Ranadive wrote:
> > > > On Mon, 18 Jul 2016 15:46:53 +0300 Yuval Shaia <yuval.shaia@xxxxxxxxxx> wrote:
> > > > > On Tue, Jul 12, 2016 at 12:36:32PM -0700, Adit Ranadive wrote:
> > > > > > This patch enables posting Verb requests and receiving responses to/from
> > > > > > the backend PVRDMA emulation layer.
> > > > > >
> > > >
> > > > ...
> > > >
> > > > > > +int
> > > > > > +pvrdma_cmd_post(struct pvrdma_dev *dev, union pvrdma_cmd_req *req,
> > > > > > +		bool expect_resp, union pvrdma_cmd_resp *resp)
> > > > > > +{
> > > > > > +	int err;
> > > > > > +
> > > > > > +	dev_dbg(&dev->pdev->dev, "post request to device\n");
> > > > > > +
> > > > > > +	/* Serializiation */
> > > > > > +	down(&dev->cmd_sema);
> > > > > > +
> > > > > > +	spin_lock(&dev->cmd_lock);
> > > > > > +	memcpy(dev->cmd_slot, req, sizeof(*req));
> > > > >
> > > > > Just to protect against memory corruption suggesting to do:
> > > > > 	memcpy(dev->cmd_slot, req, min(PAGE_SIZE, sizeof(*req)));
> > > > >
> > > >
> > > > Done.
> > > 
> > > Hi Adit,
> > > I didn't check how "dev->cmd_slot" was declared and if it is equal to
> > > req in size. Additionally I didn't check if memcpy has any size
> > > limitations, but wanted to warn you that implementation of this
> > > suggestion as is will leave your system in much worse situation of
> > > partially copied data.
> > > 
> > > if you really want to check sizes, please do it with BUILD_ON compilation
> > > macro. I have serious doubts if you need it.
> > > 
> > > Thanks
> > 
> > Hi Leon,
> > 
> > Thanks for taking a look!
> > I think this is okay to do was that we allocate a page for cmd_slot anyways
> > and the size of req will always be smaller than PAGE_SIZE. If the request is
> > malformed, our virtual hardware should throw an error for it.
> > I dont think we would run into partially copied data.
> > 
> > Having said that, I dont see a necessary advantage of using min here so am
> > willing to drop it if you feel strongly about it.
> > 
> > Can you clarify what you mean by memcpy size limitations?
> 
> I didn't have time to look after reasons for Yuval's comment about
> min(..), so I assumed that one of the possibilities will be limitation
> of memcpy which I'm not aware.

I understand that it is not such realistic that one of the structures in
union pvrdma_cmd_req will be more then PAGE_SIZE but any other alternative
to protect from such case?

> 
> > 
> > Thanks,
> > Adit


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux