Skip to content

Commit

Permalink
create fd, stdin, stdout, stderr symlinks in /dev
Browse files Browse the repository at this point in the history
The kernel's Documentation/devices.txt says that these symlinks should
exist in /dev (they are listed in the "Compulsory" section). I'm not
currently adding nfsd and X0R since they are required for iBCS, but
they can be easily added to the array later if need be.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Michael H. Warfield <mhw@WittsEnd.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  • Loading branch information
Dwight Engen authored and stgraber committed Feb 13, 2014
1 parent cd063f4 commit 69aa665
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions src/lxc/conf.c
Expand Up @@ -812,6 +812,38 @@ static int setup_utsname(struct utsname *utsname)
return 0;
}

struct dev_symlinks {
const char *oldpath;
const char *name;
};

static const struct dev_symlinks dev_symlinks[] = {
{"/proc/self/fd", "fd"},
{"/proc/self/fd/0", "stdin"},
{"/proc/self/fd/1", "stdout"},
{"/proc/self/fd/2", "stderr"},
};

static int setup_dev_symlinks(const struct lxc_rootfs *rootfs)
{
char path[MAXPATHLEN];
int ret,i;


for (i = 0; i < sizeof(dev_symlinks) / sizeof(dev_symlinks[0]); i++) {
const struct dev_symlinks *d = &dev_symlinks[i];
ret = snprintf(path, sizeof(path), "%s/dev/%s", rootfs->mount, d->name);
if (ret < 0 || ret >= MAXPATHLEN)
return -1;
ret = symlink(d->oldpath, path);
if (ret && errno != EEXIST) {
SYSERROR("Error creating %s", path);
return -1;
}
}
return 0;
}

static int setup_tty(const struct lxc_rootfs *rootfs,
const struct lxc_tty_info *tty_info, char *ttydir)
{
Expand Down Expand Up @@ -3616,6 +3648,11 @@ int lxc_setup(struct lxc_handler *handler)
return -1;
}

if (!lxc_conf->is_execute && setup_dev_symlinks(&lxc_conf->rootfs)) {
ERROR("failed to setup /dev symlinks for '%s'", name);
return -1;
}

/* mount /proc if needed for LSM transition */
if (lsm_proc_mount(lxc_conf) < 0) {
ERROR("failed to LSM mount proc for '%s'", name);
Expand Down

0 comments on commit 69aa665

Please sign in to comment.