Subject: Re: [PATCH nf 2/2] netfilter: nf_tables: add clone interface to expression operations

From: Patrick McHardy <[email-masked]>
Date: Tue, 10 Nov 2015 18:58:05 +0000

On 10.11, Pablo Neira Ayuso wrote:
> On Tue, Nov 10, 2015 at 06:30:34PM +0000, Patrick McHardy wrote:
> > >  	__module_get(src->ops->type->owner);
> > > -	memcpy(dst, src, src->ops->size);
> > > +	if (src->ops->clone) {
> > > +		memcpy(dst, src, sizeof(*src));
> > 
> > Why copy if we clone? The function should do a full initialization if it is
> > present I would say.
> 
> This is not copying the variable length data area of the expression,
> just the expression head.

Ah right. But that is only ->ops. We can set this directly, should generate
better code and be easier to understand.

> 
> > > +		err = src->ops->clone(dst, src);
> > > +		if (err < 0)
> > > +			return err;
> > > +	} else {
> > > +		memcpy(dst, src, src->ops->size);
> > > +	}
> > > +	return 0;
> > >  }
> > >  
>