Re: [PATCH 1/1] hv: Use only one receive buffer and kmalloc oninitialize

From: Greg KH
Date: Mon Dec 13 2010 - 14:42:24 EST


On Mon, Dec 13, 2010 at 07:31:42PM +0000, Hank Janssen wrote:
>
>
> > -----Original Message-----
> > From: Greg KH [mailto:greg@xxxxxxxxx]
> > Sent: Monday, December 13, 2010 10:35 AM
> > > ---
> > > drivers/staging/hv/hv_utils.c | 68 +++++++++++++++++++------------------
> > ---
> > > 1 files changed, 32 insertions(+), 36 deletions(-)
> > >
> > > diff --git a/drivers/staging/hv/hv_utils.c
> > > b/drivers/staging/hv/hv_utils.c index 53e1e29..4ed4ab8 100644
> > > --- a/drivers/staging/hv/hv_utils.c
> > > +++ b/drivers/staging/hv/hv_utils.c
> > > @@ -38,12 +38,15 @@
> > > #include "vmbus_api.h"
> > > #include "utils.h"
> > >
> > > +/*
> > > + * Buffer used to receive packets from Hyper-V */ static u8
> > > +*chan_buf;
> >
> > One buffer is nicer, yes, but what's controlling access to this buffer?
> > You use it in multiple functions, and what's to say those functions can't be
> > called at the same time on different cpus? So, shouldn't you either have
> > some locking for access to the buffer, or have a per-function buffer instead?
> >
> > And if you have a per-function buffer, again, you might need to control
> > access to it as the functions could be called multiple times at the same time,
> > right?
> >
>
> The current versions of Hyper-V support interrupt handling on CPU0 only.
> I can make multiple buffers per channel, but because of Hyper-V implementation
> It does not really make a difference.

Then put a big fat note in there saying this, and that it will have to
change if the hyperv channel ever changes.

Hm, how will you handle things if the hyperv core changes and an old
kernel is running this code where things were "assumed" about the
reentrancy happening here?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/