Commit 4e583ff9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull UML updates from Richard Weinberger:

 - Various cleanups and fixes: xterm, serial line, time travel

 - Set ARCH_HAS_GCOV_PROFILE_ALL

* tag 'for-linus-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
  um: Fix out-of-bounds read in LDT setup
  um: chan_user: Fix winch_tramp() return value
  um: virtio_uml: Fix broken device handling in time-travel
  um: line: Use separate IRQs per line
  um: Enable ARCH_HAS_GCOV_PROFILE_ALL
  um: Use asm-generic/dma-mapping.h
  um: daemon: Make default socket configurable
  um: xterm: Make default terminal emulator configurable
parents a01fe7ec 2a4a62a1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ config UML
	bool
	default y
	select ARCH_EPHEMERAL_INODES
	select ARCH_HAS_GCOV_PROFILE_ALL
	select ARCH_HAS_KCOV
	select ARCH_HAS_STRNCPY_FROM_USER
	select ARCH_HAS_STRNLEN_USER
+15 −0
Original line number Diff line number Diff line
@@ -64,6 +64,13 @@ config XTERM_CHAN
	  its own xterm.
	  It is safe to say 'Y' here.

config XTERM_CHAN_DEFAULT_EMULATOR
	string "xterm channel default terminal emulator"
	depends on XTERM_CHAN
	default "xterm"
	help
	  This option allows changing the default terminal emulator.

config NOCONFIG_CHAN
	bool
	default !(XTERM_CHAN && TTY_CHAN && PTY_CHAN && PORT_CHAN && NULL_CHAN)
@@ -231,6 +238,14 @@ config UML_NET_DAEMON

	  If unsure, say N.

config UML_NET_DAEMON_DEFAULT_SOCK
	string "Default socket for daemon transport"
	default "/tmp/uml.ctl"
	depends on UML_NET_DAEMON
	help
	  This option allows setting the default socket for the daemon
	  transport, normally it defaults to /tmp/uml.ctl.

config UML_NET_VECTOR
	bool "Vector I/O high performance network devices"
	depends on UML_NET
+2 −0
Original line number Diff line number Diff line
@@ -70,4 +70,6 @@ obj-$(CONFIG_UML_PCI_OVER_VIRTIO) += virt-pci.o
USER_OBJS := fd.o null.o pty.o tty.o xterm.o slip_common.o pcap_user.o vde_user.o vector_user.o
CFLAGS_null.o = -DDEV_NULL=$(DEV_NULL_PATH)

CFLAGS_xterm.o += '-DCONFIG_XTERM_CHAN_DEFAULT_EMULATOR="$(CONFIG_XTERM_CHAN_DEFAULT_EMULATOR)"'

include arch/um/scripts/Makefile.rules
+5 −5
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ static void line_timer_cb(struct work_struct *work)
	struct line *line = container_of(work, struct line, task.work);

	if (!line->throttled)
		chan_interrupt(line, line->driver->read_irq);
		chan_interrupt(line, line->read_irq);
}

int enable_chan(struct line *line)
@@ -195,9 +195,9 @@ void free_irqs(void)
		chan = list_entry(ele, struct chan, free_list);

		if (chan->input && chan->enabled)
			um_free_irq(chan->line->driver->read_irq, chan);
			um_free_irq(chan->line->read_irq, chan);
		if (chan->output && chan->enabled)
			um_free_irq(chan->line->driver->write_irq, chan);
			um_free_irq(chan->line->write_irq, chan);
		chan->enabled = 0;
	}
}
@@ -215,9 +215,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq)
		spin_unlock_irqrestore(&irqs_to_free_lock, flags);
	} else {
		if (chan->input && chan->enabled)
			um_free_irq(chan->line->driver->read_irq, chan);
			um_free_irq(chan->line->read_irq, chan);
		if (chan->output && chan->enabled)
			um_free_irq(chan->line->driver->write_irq, chan);
			um_free_irq(chan->line->write_irq, chan);
		chan->enabled = 0;
	}
	if (chan->ops->close != NULL)
+5 −4
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
		       unsigned long *stack_out)
{
	struct winch_data data;
	int fds[2], n, err;
	int fds[2], n, err, pid;
	char c;

	err = os_pipe(fds, 1, 1);
@@ -238,8 +238,9 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
	 * problem with /dev/net/tun, which if held open by this
	 * thread, prevents the TUN/TAP device from being reused.
	 */
	err = run_helper_thread(winch_thread, &data, CLONE_FILES, stack_out);
	if (err < 0) {
	pid = run_helper_thread(winch_thread, &data, CLONE_FILES, stack_out);
	if (pid < 0) {
		err = pid;
		printk(UM_KERN_ERR "fork of winch_thread failed - errno = %d\n",
		       -err);
		goto out_close;
@@ -263,7 +264,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
		goto out_close;
	}

	return err;
	return pid;

 out_close:
	close(fds[1]);
Loading