> On 27 April 2015 at 20:37 Jan Harkes <jahar...@cs.cmu.edu> wrote: > > > On Mon, Apr 27, 2015 at 07:23:06PM +0200, Fabian Frederick wrote: > > Move UPARG code to alloc_upcall() and test errors/return in callsites. > > This patch removes flow control in macros which must be avoided. > > (See Documentation/CodingStyle) > > At first glance this is not a correct patch. > > UPARG allocates a buffer that is large enough to hold both the upcall > message going to userspace as well as the incoming reply message. At > first glance this patch only seems to allocate insize. It may still be > doing the right thing because insize is defined at the call level as > MAX(sizeof(inarg), sizeof(outarg)). This it looks like quite a few > changes for an untested patch and not enough for an actual cleanup of > the related code. > > Jan
Sorry Jan but I don't see any problem in that patch. outarg is processed the same way: New alloc_upcall(**inp, **outp): *outp = (union outputArgs *)inp; *outsize = insize; UPARG macro: outp = (union outputArgs *)(inp); \ outsize = insize; \ Regards, Fabian > > > --- > > This is untested. > > > > fs/coda/upcall.c | 107 > >+++++++++++++++++++++++++++++++++++-------------------- > > 1 file changed, 69 insertions(+), 38 deletions(-) > > > > diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c > > index 9b1ffaa..7524f630 100644 > > --- a/fs/coda/upcall.c > > +++ b/fs/coda/upcall.c > > @@ -41,30 +41,24 @@ > > static int coda_upcall(struct venus_comm *vc, int inSize, int *outSize, > > union inputArgs *buffer); > > > > -static void *alloc_upcall(int opcode, int size) > > +static int alloc_upcall(int opcode, int insize, int *outsize, > > + union inputArgs **inp, union outputArgs **outp) > > { > > - union inputArgs *inp; > > + CODA_ALLOC(*inp, union inputArgs *, insize); > > + if (!*inp) > > + return -ENOMEM; > > > > - CODA_ALLOC(inp, union inputArgs *, size); > > - if (!inp) > > - return ERR_PTR(-ENOMEM); > ... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/