Quoting Stéphane Graber (stgra...@ubuntu.com): > Some platforms don't have personality.h in their C library, this change > adds buildtime detection for the header and turns off the personality setting > code in those cases. > > Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > --- > configure.ac | 4 ++-- > src/lxc/conf.c | 7 ++++++- > src/lxc/confile.c | 16 ++++++++++++++-- > src/lxc/lxc_attach.c | 8 +++++++- > 4 files changed, 29 insertions(+), 6 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 4e4a6dd..2905aee 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -211,10 +211,10 @@ AM_CONDITIONAL([IS_BIONIC], [test "x$libc_type" = > "xbionic"]) > AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>]) > > # Check for some headers > -AC_CHECK_HEADERS([sys/signalfd.h sys/capability.h pty.h]) > +AC_CHECK_HEADERS([sys/signalfd.h sys/personality.h sys/capability.h pty.h]) > > # Check for some functions > -AC_CHECK_FUNCS([getline fgetln openpty]) > +AC_CHECK_FUNCS([getline fgetln openpty setns pivot_root sethostname unshare]) > > # Check for some standard binaries > AC_PROG_GCC_TRADITIONAL > diff --git a/src/lxc/conf.c b/src/lxc/conf.c > index 25b75d7..2136feb 100644 > --- a/src/lxc/conf.c > +++ b/src/lxc/conf.c > @@ -48,7 +48,6 @@ > #include <sys/mount.h> > #include <sys/mman.h> > #include <sys/prctl.h> > -#include <sys/personality.h> > > #include <arpa/inet.h> > #include <fcntl.h> > @@ -74,6 +73,10 @@ > #include <sys/capability.h> > #endif > > +#if HAVE_SYS_PERSONALITY_H > +#include <sys/personality.h> > +#endif > + > #include "lxcseccomp.h" > > lxc_log_define(lxc_conf, lxc); > @@ -1195,6 +1198,7 @@ out: > > static int setup_personality(int persona) > { > + #if HAVE_SYS_PERSONALITY_H > if (persona == -1) > return 0; > > @@ -1204,6 +1208,7 @@ static int setup_personality(int persona) > } > > INFO("set personality to '0x%x'", persona); > + #endif > > return 0; > } > diff --git a/src/lxc/confile.c b/src/lxc/confile.c > index a725b78..940f0a9 100644 > --- a/src/lxc/confile.c > +++ b/src/lxc/confile.c > @@ -31,12 +31,12 @@ > #include <sys/types.h> > #include <sys/param.h> > #include <sys/utsname.h> > -#include <sys/personality.h> > #include <arpa/inet.h> > #include <netinet/in.h> > #include <net/if.h> > > #include "parse.h" > +#include "config.h" > #include "confile.h" > #include "utils.h" > > @@ -44,6 +44,10 @@ > #include <lxc/conf.h> > #include "network.h" > > +#if HAVE_SYS_PERSONALITY_H > +#include <sys/personality.h> > +#endif > + > lxc_log_define(lxc_confile, lxc); > > static int config_personality(const char *, const char *, struct lxc_conf *); > @@ -1301,6 +1305,7 @@ int lxc_config_define_load(struct lxc_list *defines, > struct lxc_conf *conf) > > signed long lxc_config_parse_arch(const char *arch) > { > + #if HAVE_SYS_PERSONALITY_H > struct per_name { > char *name; > unsigned long per; > @@ -1318,6 +1323,7 @@ signed long lxc_config_parse_arch(const char *arch) > if (!strcmp(pername[i].name, arch)) > return pername[i].per; > } > + #endif > > return -1; > } > @@ -1333,18 +1339,22 @@ static int lxc_get_conf_int(struct lxc_conf *c, char > *retv, int inlen, int v) > > static int lxc_get_arch_entry(struct lxc_conf *c, char *retv, int inlen) > { > - int len, fulllen = 0; > + int fulllen = 0; > > if (!retv) > inlen = 0; > else > memset(retv, 0, inlen); > > + #if HAVE_SYS_PERSONALITY_H > + int len = 0; > + > switch(c->personality) { > case PER_LINUX32: strprint(retv, inlen, "x86"); break; > case PER_LINUX: strprint(retv, inlen, "x86_64"); break; > default: break; > } > + #endif > > return fulllen; > } > @@ -1664,11 +1674,13 @@ void write_config(FILE *fout, struct lxc_conf *c) > fprintf(fout, "lxc.pts = %d\n", c->pts); > if (c->ttydir) > fprintf(fout, "lxc.devttydir = %s\n", c->ttydir); > + #if HAVE_SYS_PERSONALITY_H > switch(c->personality) { > case PER_LINUX32: fprintf(fout, "lxc.arch = x86\n"); break; > case PER_LINUX: fprintf(fout, "lxc.arch = x86_64\n"); break; > default: break; > } > + #endif > #if HAVE_APPARMOR > if (c->aa_profile) > fprintf(fout, "lxc.aa_profile = %s\n", c->aa_profile); > diff --git a/src/lxc/lxc_attach.c b/src/lxc/lxc_attach.c > index ba98d73..851a37a 100644 > --- a/src/lxc/lxc_attach.c > +++ b/src/lxc/lxc_attach.c > @@ -29,19 +29,23 @@ > #include <sys/param.h> > #include <sys/types.h> > #include <sys/wait.h> > -#include <sys/personality.h> > > #include "attach.h" > #include "commands.h" > #include "arguments.h" > #include "caps.h" > #include "cgroup.h" > +#include "config.h" > #include "confile.h" > #include "start.h" > #include "sync.h" > #include "log.h" > #include "namespace.h" > > +#if HAVE_SYS_PERSONALITY_H > +#include <sys/personality.h> > +#endif > + > lxc_log_define(lxc_attach_ui, lxc); > > static const struct option my_longopts[] = { > @@ -273,6 +277,7 @@ int main(int argc, char *argv[]) > } > } > > + #if HAVE_SYS_PERSONALITY_H > if (new_personality < 0) > new_personality = init_ctx->personality; > > @@ -281,6 +286,7 @@ int main(int argc, char *argv[]) > strerror(errno)); > return -1; > } > + #endif > > if (!elevated_privileges && lxc_attach_drop_privs(init_ctx)) { > ERROR("could not drop privileges"); > -- > 1.8.0 > > > ------------------------------------------------------------------------------ > Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, > MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current > with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft > MVPs and experts. ON SALE this month only -- learn more at: > http://p.sf.net/sfu/learnmore_122712 > _______________________________________________ > Lxc-devel mailing list > Lxc-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/lxc-devel ------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnmore_122712 _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel