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

Commit 8d1e5133 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml

Pull uml updates from Richard Weinberger:
 "Minor updates for UML:

   - fixes for our new vector network driver by Anton

   - initcall cleanup by Alexander

   - We have a new mailinglist, sourceforge.net sucks"

* 'for-linus-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
  um: Fix raw interface options
  um: Fix initialization of vector queues
  um: remove uml initcalls
  um: Update mailing list address
parents 6a4d4b32 5ec91211
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -15015,8 +15015,7 @@ F: drivers/media/usb/zr364xx/
USER-MODE LINUX (UML)
USER-MODE LINUX (UML)
M:	Jeff Dike <jdike@addtoit.com>
M:	Jeff Dike <jdike@addtoit.com>
M:	Richard Weinberger <richard@nod.at>
M:	Richard Weinberger <richard@nod.at>
L:	user-mode-linux-devel@lists.sourceforge.net
L:	linux-um@lists.infradead.org
L:	user-mode-linux-user@lists.sourceforge.net
W:	http://user-mode-linux.sourceforge.net
W:	http://user-mode-linux.sourceforge.net
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml.git
S:	Maintained
S:	Maintained
+14 −6
Original line number Original line Diff line number Diff line
@@ -188,7 +188,7 @@ static int get_transport_options(struct arglist *def)
	if (strncmp(transport, TRANS_TAP, TRANS_TAP_LEN) == 0)
	if (strncmp(transport, TRANS_TAP, TRANS_TAP_LEN) == 0)
		return (vec_rx | VECTOR_BPF);
		return (vec_rx | VECTOR_BPF);
	if (strncmp(transport, TRANS_RAW, TRANS_RAW_LEN) == 0)
	if (strncmp(transport, TRANS_RAW, TRANS_RAW_LEN) == 0)
		return (vec_rx | vec_tx);
		return (vec_rx | vec_tx | VECTOR_QDISC_BYPASS);
	return (vec_rx | vec_tx);
	return (vec_rx | vec_tx);
}
}


@@ -504,15 +504,19 @@ static struct vector_queue *create_queue(


	result = kmalloc(sizeof(struct vector_queue), GFP_KERNEL);
	result = kmalloc(sizeof(struct vector_queue), GFP_KERNEL);
	if (result == NULL)
	if (result == NULL)
		goto out_fail;
		return NULL;
	result->max_depth = max_size;
	result->max_depth = max_size;
	result->dev = vp->dev;
	result->dev = vp->dev;
	result->mmsg_vector = kmalloc(
	result->mmsg_vector = kmalloc(
		(sizeof(struct mmsghdr) * max_size), GFP_KERNEL);
		(sizeof(struct mmsghdr) * max_size), GFP_KERNEL);
	if (result->mmsg_vector == NULL)
		goto out_mmsg_fail;
	result->skbuff_vector = kmalloc(
	result->skbuff_vector = kmalloc(
		(sizeof(void *) * max_size), GFP_KERNEL);
		(sizeof(void *) * max_size), GFP_KERNEL);
	if (result->mmsg_vector == NULL || result->skbuff_vector == NULL)
	if (result->skbuff_vector == NULL)
		goto out_fail;
		goto out_skb_fail;

	/* further failures can be handled safely by destroy_queue*/


	mmsg_vector = result->mmsg_vector;
	mmsg_vector = result->mmsg_vector;
	for (i = 0; i < max_size; i++) {
	for (i = 0; i < max_size; i++) {
@@ -563,6 +567,11 @@ static struct vector_queue *create_queue(
	result->head = 0;
	result->head = 0;
	result->tail = 0;
	result->tail = 0;
	return result;
	return result;
out_skb_fail:
	kfree(result->mmsg_vector);
out_mmsg_fail:
	kfree(result);
	return NULL;
out_fail:
out_fail:
	destroy_queue(result);
	destroy_queue(result);
	return NULL;
	return NULL;
@@ -1232,9 +1241,8 @@ static int vector_net_open(struct net_device *dev)


	if ((vp->options & VECTOR_QDISC_BYPASS) != 0) {
	if ((vp->options & VECTOR_QDISC_BYPASS) != 0) {
		if (!uml_raw_enable_qdisc_bypass(vp->fds->rx_fd))
		if (!uml_raw_enable_qdisc_bypass(vp->fds->rx_fd))
			vp->options = vp->options | VECTOR_BPF;
			vp->options |= VECTOR_BPF;
	}
	}

	if ((vp->options & VECTOR_BPF) != 0)
	if ((vp->options & VECTOR_BPF) != 0)
		vp->bpf = uml_vector_default_bpf(vp->fds->rx_fd, dev->dev_addr);
		vp->bpf = uml_vector_default_bpf(vp->fds->rx_fd, dev->dev_addr);


+0 −6
Original line number Original line Diff line number Diff line
@@ -53,12 +53,6 @@
	CON_INITCALL
	CON_INITCALL
  }
  }


  .uml.initcall.init : {
	__uml_initcall_start = .;
	*(.uml.initcall.init)
	__uml_initcall_end = .;
  }

  SECURITY_INIT
  SECURITY_INIT


  .exitcall : {
  .exitcall : {
+0 −5
Original line number Original line Diff line number Diff line
@@ -64,14 +64,10 @@ struct uml_param {
        int (*setup_func)(char *, int *);
        int (*setup_func)(char *, int *);
};
};


extern initcall_t __uml_initcall_start, __uml_initcall_end;
extern initcall_t __uml_postsetup_start, __uml_postsetup_end;
extern initcall_t __uml_postsetup_start, __uml_postsetup_end;
extern const char *__uml_help_start, *__uml_help_end;
extern const char *__uml_help_start, *__uml_help_end;
#endif
#endif


#define __uml_initcall(fn)					  	\
	static initcall_t __uml_initcall_##fn __uml_init_call = fn

#define __uml_exitcall(fn)						\
#define __uml_exitcall(fn)						\
	static exitcall_t __uml_exitcall_##fn __uml_exit_call = fn
	static exitcall_t __uml_exitcall_##fn __uml_exit_call = fn


@@ -108,7 +104,6 @@ extern struct uml_param __uml_setup_start, __uml_setup_end;
 */
 */
#define __uml_init_setup	__used __section(.uml.setup.init)
#define __uml_init_setup	__used __section(.uml.setup.init)
#define __uml_setup_help	__used __section(.uml.help.init)
#define __uml_setup_help	__used __section(.uml.help.init)
#define __uml_init_call		__used __section(.uml.initcall.init)
#define __uml_postsetup_call	__used __section(.uml.postsetup.init)
#define __uml_postsetup_call	__used __section(.uml.postsetup.init)
#define __uml_exit_call		__used __section(.uml.exitcall.exit)
#define __uml_exit_call		__used __section(.uml.exitcall.exit)


+0 −12
Original line number Original line Diff line number Diff line
@@ -40,17 +40,6 @@ static void set_stklim(void)
	}
	}
}
}


static __init void do_uml_initcalls(void)
{
	initcall_t *call;

	call = &__uml_initcall_start;
	while (call < &__uml_initcall_end) {
		(*call)();
		call++;
	}
}

static void last_ditch_exit(int sig)
static void last_ditch_exit(int sig)
{
{
	uml_cleanup();
	uml_cleanup();
@@ -151,7 +140,6 @@ int __init main(int argc, char **argv, char **envp)
	scan_elf_aux(envp);
	scan_elf_aux(envp);
#endif
#endif


	do_uml_initcalls();
	change_sig(SIGPIPE, 0);
	change_sig(SIGPIPE, 0);
	ret = linux_main(argc, argv);
	ret = linux_main(argc, argv);