Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 512b6fb1 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds
Browse files

uml: userspace files should call libc directly



A number of files that were changed in the recent removal of tt mode
are userspace files which call the os_* wrappers instead of calling
libc directly.  A few other files were affected by this, through

This patch makes these call glibc directly.

There are also style fixes in the affected areas.

os_print_error has no remaining callers, so it is deleted.

There is a interface change to os_set_exec_close, eliminating a
parameter which was always the same.  The callers are fixed as well.

os_process_pc got its error path cleaned up.

Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b21d4b08
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -128,9 +128,8 @@ static inline struct openflags of_cloexec(struct openflags flags)
extern int os_stat_file(const char *file_name, struct uml_stat *buf);
extern int os_stat_fd(const int fd, struct uml_stat *buf);
extern int os_access(const char *file, int mode);
extern void os_print_error(int error, const char* str);
extern int os_get_exec_close(int fd, int *close_on_exec);
extern int os_set_exec_close(int fd, int close_on_exec);
extern int os_set_exec_close(int fd);
extern int os_ioctl_generic(int fd, unsigned int cmd, unsigned long arg);
extern int os_get_ifname(int fd, char *namebuf);
extern int os_set_slip(int fd);
+0 −1
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ EXPORT_SYMBOL(uml_strdup);
EXPORT_SYMBOL(os_stat_fd);
EXPORT_SYMBOL(os_stat_file);
EXPORT_SYMBOL(os_access);
EXPORT_SYMBOL(os_print_error);
EXPORT_SYMBOL(os_get_exec_close);
EXPORT_SYMBOL(os_set_exec_close);
EXPORT_SYMBOL(os_getpid);
+3 −1
Original line number Diff line number Diff line
@@ -99,7 +99,9 @@ void __init setup_physmem(unsigned long start, unsigned long reserve_end,
	err = os_map_memory((void *) uml_reserved, physmem_fd, offset,
			    len - offset, 1, 1, 1);
	if (err < 0) {
		os_print_error(err, "Mapping memory");
		printf("setup_physmem - mapping %ld bytes of memory at 0x%p "
		       "failed - errno = %d\n", len - offset,
		       (void *) uml_reserved, err);
		exit(1);
	}

+2 −2
Original line number Diff line number Diff line
@@ -226,8 +226,8 @@ static int init_aio_24(void)
	goto out;

out_close_pipe:
	os_close_file(fds[0]);
	os_close_file(fds[1]);
	close(fds[0]);
	close(fds[1]);
	aio_req_fd_w = -1;
	aio_req_fd_r = -1;
out:
+41 −20
Original line number Diff line number Diff line
@@ -87,8 +87,8 @@ static void etap_pre_exec(void *arg)
	struct etap_pre_exec_data *data = arg;

	dup2(data->control_remote, 1);
	os_close_file(data->data_me);
	os_close_file(data->control_me);
	close(data->data_me);
	close(data->control_me);
}

static int etap_tramp(char *dev, char *gate, int control_me,
@@ -121,8 +121,8 @@ static int etap_tramp(char *dev, char *gate, int control_me,

	if(pid < 0)
		err = pid;
	os_close_file(data_remote);
	os_close_file(control_remote);
	close(data_remote);
	close(control_remote);
	CATCH_EINTR(n = read(control_me, &c, sizeof(c)));
	if(n != sizeof(c)){
		err = -errno;
@@ -151,16 +151,20 @@ static int etap_open(void *data)
	if(err)
		return err;

	err = os_pipe(data_fds, 0, 0);
	if(err < 0){
		printk("data os_pipe failed - err = %d\n", -err);
	err = socketpair(AF_UNIX, SOCK_DGRAM, 0, data_fds);
	if(err){
		err = -errno;
		printk("etap_open - data socketpair failed - err = %d\n",
		       errno);
		return err;
	}

	err = os_pipe(control_fds, 1, 0);
	if(err < 0){
		printk("control os_pipe failed - err = %d\n", -err);
		return err;
	err = socketpair(AF_UNIX, SOCK_STREAM, 0, control_fds);
	if(err){
		err = -errno;
		printk("etap_open - control socketpair failed - err = %d\n",
		       errno);
		goto out_close_data;
	}

	err = etap_tramp(pri->dev_name, pri->gate_addr, control_fds[0],
@@ -178,13 +182,21 @@ static int etap_open(void *data)

	if(err < 0){
		printk("etap_tramp failed - err = %d\n", -err);
		return err;
		goto out_close_control;
	}

	pri->data_fd = data_fds[0];
	pri->control_fd = control_fds[0];
	iter_addresses(pri->dev, etap_open_addr, &pri->control_fd);
	return data_fds[0];

out_close_control:
	close(control_fds[0]);
	close(control_fds[1]);
out_close_data:
	close(data_fds[0]);
	close(data_fds[1]);
	return err;
}

static void etap_close(int fd, void *data)
@@ -192,11 +204,19 @@ static void etap_close(int fd, void *data)
	struct ethertap_data *pri = data;

	iter_addresses(pri->dev, etap_close_addr, &pri->control_fd);
	os_close_file(fd);
	os_shutdown_socket(pri->data_fd, 1, 1);
	os_close_file(pri->data_fd);
	close(fd);

	if(shutdown(pri->data_fd, SHUT_RDWR) < 0)
		printk("etap_close - shutdown data socket failed, errno = %d\n",
		       errno);

	if(shutdown(pri->control_fd, SHUT_RDWR) < 0)
		printk("etap_close - shutdown control socket failed, "
		       "errno = %d\n", errno);

	close(pri->data_fd);
	pri->data_fd = -1;
	os_close_file(pri->control_fd);
	close(pri->control_fd);
	pri->control_fd = -1;
}

@@ -223,6 +243,7 @@ static void etap_del_addr(unsigned char *addr, unsigned char *netmask,

	if(pri->control_fd == -1)
		return;

	etap_close_addr(addr, netmask, &pri->control_fd);
}

Loading