On Thu, 2005-05-19 at 03:23, Michael S. Tsirkin wrote:
> Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
> > Subject: Re: [RFC] [PATCH] user_mad: Support RMPP on send side
> > 
> > This looks OK to check in with one small comment on the following:
> > 
> > -   if (copy_to_user(buf, &packet->mad, sizeof packet->mad))
> > +   if (copy_to_user(buf, &packet->mad,
> > +                    min(count, packet->length +
> > +                        sizeof (struct ib_user_mad))))
> >             ret = -EFAULT;
> >     else
> > -           ret = sizeof packet->mad;
> > +           ret = count;
> > 
> > This code will truncate a received MAD that is bigger than the buffer
> > passed into read(), but return the full size of the packet.  I don't
> > think read() is allowed to do this: the return value can be at most
> > the count value passed in by the user.
> > 
> > I think we have two options: truncate and return the actual amount of
> > data read to the user, or return an error if the user's buffer is too
> > small.
> > 
> >  - R.
> > 
> 
> If you truncate, how will the user know the MAD was truncated?

The length returned. Roland is saying to fix it is one option (rather
than ret = count). 

I'm now questioning whether that is useful behavior. Would a subsequent
read get the next part of the packet and the user piece them together ?
If not, then this should be an error for this case (which is the second
option). I am leaning towards that unless someone has an objection to
that behavior.

-- Hal

_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to