On Wed, 2017-05-03 at 14:13 -0400, Jeff Layton wrote: > On Wed, 2017-05-03 at 17:04 +0100, David Howells wrote: > > Introduce a mount context concept. trivia: > > static int selinux_mount_ctx_option(struct mount_context *mc, char *opt) > > +{ [] > > + if (opts->mnt_opts) { > > + oo = kmalloc((opts->num_mnt_opts + 1) * sizeof(char *), > > + GFP_KERNEL); > > + if (!oo) > > + return -ENOMEM; > > + memcpy(oo, opts->mnt_opts, opts->num_mnt_opts * sizeof(char *)); > > + oo[opts->num_mnt_opts] = NULL; > > + old = opts->mnt_opts; > > + opts->mnt_opts = oo; > > + kfree(old); > > + } krealloc would probably be more efficient and possible readable as likely there's already padding in the original allocation. Are there no locking constraints?