[PATCH] Change module interface to pass in a TALLOC_CTX pointer.

Jeremy Allison jra at samba.org
Fri Apr 21 17:03:00 UTC 2017


On Fri, Apr 21, 2017 at 02:29:23PM +0200, Ralph Böhme wrote:
> Hi Jeremy,
> 
> On Fri, Apr 21, 2017 at 03:01:41AM +0000, Jeremy Allison wrote:
> > Currently the initialization function of all our modules are called with a
> > function signature of:
> > 
> > NTSTATUS XXX_init(void)
> > 
> > The following patch changes this to be:
> > 
> > NTSTATUS XXX_init(TALLOC_CTX *ctx)
> > 
> > instead. The patch (for 4.7.x naturally) merely changes
> > the definition of the initialization functions and their
> > callers, and implements *no* logic changes (all of the changed
> > callers in this patch pass NULL in as the new TALLOC_CTX *ctx
> > and the modules ignore it).
> 
> Nice!
> 
> One thing: you missed the static initializers and declarations, eg for the VFS:
> 
> vfs_init_custom() uses "static_init_vfs;" which expands to
> 
>   #define static_init_vfs { vfs_default_init();  vfs_posixacl_init();  vfs_dfs_samba4_init(); }
> 
> But the vfs init functions now take a TALLOC_CTX arg, eg
> 
>    NTSTATUS vfs_default_init(TALLOC_CTX *ctx)
> 
> The compiler doesn't complain, because the static_decl_vfs contains the same
> wrong function signatures:
> 
>   #define static_decl_vfs extern NTSTATUS vfs_default_init(void); extern NTSTATUS vfs_posixacl_init(void); extern NTSTATUS vfs_dfs_samba4_init(void);
> 
> Attached patch should fix this. Fixup your commit with mine if happy.

Thanks for that Ralph ! Much appreciated.

Minor waf complaint....

If you do:

git grep static_decl_vfs

You can't find the definition of that *anywhere*,
because it's a magic waf construct made out of
unicorns, rainbows and python. Same for:

git grep static_init_nss

Which explains why I didn't find them :-(.

I *hate* magic declarations/definitions, or
anything you can't 'git grep' for and find.

How did you notice the error ? Are there
any other places I need to know about
where declarations/definitions are constructed ?

Once this goes in I should be able to safely
remove all talloc_autofree_context() calls out
of everywhere except ldb, which has it's own
custom module init interface that takes a
'const char *version' parameter. I plan to
look at that later.

Here is your patch squashed with mine and your
Signed-off-by: added.

Please push if happy !

Cheers,

	Jeremy.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lib-modules-Change-XXX_init-interface-from-XXX_init-.patch
Type: text/x-diff
Size: 127630 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20170421/1ec49c15/0001-lib-modules-Change-XXX_init-interface-from-XXX_init-.diff>


More information about the samba-technical mailing list