|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 09/15] argo: implement the sendv op; evtchn: expose send_guest_global_virq
On Wed, Jan 30, 2019 at 08:10:28PM -0800, Christopher Clark wrote:
> On Tue, Jan 22, 2019 at 4:08 AM Roger Pau Monné <roger.pau@xxxxxxxxxx> wrote:
> >
> > On Mon, Jan 21, 2019 at 01:59:49AM -0800, Christopher Clark wrote:
> > > do_argo_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg1,
> > > XEN_GUEST_HANDLE_PARAM(void) arg2, unsigned long arg3,
> > > @@ -1145,6 +1734,53 @@ do_argo_op(unsigned int cmd,
> > > XEN_GUEST_HANDLE_PARAM(void) arg1,
> > > break;
> > > }
> > >
> > > + case XEN_ARGO_OP_sendv:
> > > + {
> > > + xen_argo_send_addr_t send_addr;
> > > +
> > > + XEN_GUEST_HANDLE_PARAM(xen_argo_send_addr_t) send_addr_hnd =
> > > + guest_handle_cast(arg1, xen_argo_send_addr_t);
> > > + XEN_GUEST_HANDLE_PARAM(xen_argo_iov_t) iovs_hnd =
> > > + guest_handle_cast(arg2, xen_argo_iov_t);
> > > + /* arg3 is niov */
> > > + /* arg4 is message_type. Must be a 32-bit value. */
> > > +
> > > + rc = copy_from_guest(&send_addr, send_addr_hnd, 1) ? -EFAULT : 0;
> > > + if ( rc )
> > > + break;
> > > +
> > > + /*
> > > + * Check padding is zeroed. Reject niov above limit or
> > > message_types
> > > + * that are outside 32 bit range.
> > > + */
> > > + if ( unlikely(send_addr.src.pad || send_addr.dst.pad ||
> > > + (arg3 > XEN_ARGO_MAXIOV) || (arg4 &
> > > ~0xffffffffUL)) )
> >
> > arg4 & (GB(4) - 1)
> >
> > Is clearer IMO, or:
> >
> > arg4 > UINT32_MAX
>
> I've left the code unchanged, as the mask constant is used multiple
> places elsewhere in Xen. UINT32_MAX is only used as a threshold value.
The fact that others parts of the code could be improved is not an
excuse to follow suit. I'm having a hard time believing that you find
"arg4 & ~0xffffffffUL" easier to read than "arg4 & ~(GB(4) - 1)" or
even "arg4 >= GB(4)".
IMO it's much more likely to miss an 'f' in the first construct, and
thus get the value wrong and introduce a bug.
Anyway, this is your code, so I'm not going to insist.
Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |