Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.kernel > #72737

Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel

Path csiph.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!bofh.it!news.nic.it!robomod
From Ben Hutchings <ben@decadent.org.uk>
Newsgroups linux.debian.bugs.dist, linux.debian.maint.boot, linux.debian.kernel
Subject Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel
Date Wed, 25 Aug 2021 01:20:02 +0200
Message-ID <CPNS2-2uu-3@gated-at.bofh.it> (permalink)
References <BLq9Q-i2-3@gated-at.bofh.it> <CguAx-vn-1@gated-at.bofh.it> <Ciao1-4ER-1@gated-at.bofh.it> <CidlT-6tz-1@gated-at.bofh.it> <CPIfD-7lg-7@gated-at.bofh.it> <CPIfD-7lg-5@gated-at.bofh.it> <CPKAO-jN-7@gated-at.bofh.it> <BLq9Q-i2-3@gated-at.bofh.it> <CPKAO-jN-7@gated-at.bofh.it>
X-Mailbox-Line From debian-bugs-dist-request@lists.debian.org Tue Aug 24 23:15:12 2021
Old-Return-Path <debbugs@buxtehude.debian.org>
X-Spam-Flag NO
X-Spam-Score -3.95
Reply-To Ben Hutchings <ben@decadent.org.uk>, 983357@bugs.debian.org
Resent-To debian-bugs-dist@lists.debian.org
Resent-Cc Debian Kernel Team <debian-kernel@lists.debian.org>
X-Debian-Pr-Message followup 983357
X-Debian-Pr-Package linux
X-Debian-Pr-Source linux
MIME-Version 1.0
Content-Type multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="s8otYbMMR6UL90Nk"
Content-Disposition inline
X-Sa-Exim-Connect-IP 91.181.7.168
X-Sa-Exim-Mail-From ben@decadent.org.uk
X-Sa-Exim-Scanned No (on maynard); SAEximRunCond expanded to false
X-Crossassassin-Score 2
X-Debian-Message from BTS
X-Mailing-List <debian-bugs-dist@lists.debian.org> archive/latest/1674976
List-ID <debian-bugs-dist.lists.debian.org>
List-URL <https://lists.debian.org/debian-bugs-dist/>
Approved robomod@news.nic.it
Lines 120
Organization linux.* mail to news gateway
Sender robomod@news.nic.it
X-Original-Cc Chuck Zmudzinski <brchuckz@netscape.net>, 988776@bugs.debian.org, Michael Biebl <biebl@debian.org>, Cyril Brulebois <kibi@debian.org>, 983357@bugs.debian.org, md@linux.it, debian-boot@lists.debian.org, systemd@packages.debian.org
X-Original-Date Wed, 25 Aug 2021 01:12:45 +0200
X-Original-Message-ID <YSV87dz74SuTOuhE@decadent.org.uk>
X-Original-References <87czwrj1bj.fsf@vps.thesusis.net> <87eee24ztk.fsf@vps.thesusis.net> <YKspZuOhQpzQP+X2@mraw.org> <fcfa39d0-0f9e-135d-2ca3-673c2e954ce7@debian.org> <62480c25-ec5c-d90b-1c79-8c6ec408da26@netscape.net> <4d381f7ecb825268bc40ce0f6212b226688fe838.camel@decadent.org.uk> <871r6iy6r7.fsf@vps.thesusis.net> <87czwrj1bj.fsf@vps.thesusis.net> <871r6iy6r7.fsf@vps.thesusis.net>
Xref csiph.com linux.debian.bugs.dist:1068244 linux.debian.maint.boot:66948 linux.debian.kernel:72737

Cross-posted to 3 groups.

Show key headers only | View raw


[Multipart message — attachments visible in raw view] - view raw

On Tue, Aug 24, 2021 at 03:27:19PM -0400, Phillip Susi wrote:
> 
> Ben Hutchings <ben@decadent.org.uk> writes:
> 
> > I think a proper fix would be one of:
> >
> > a. If the Xen virtual keyboard driver is advertising capabilities it
> >    doesn't have, stop it doing that.
> > b. Change the implementation of modalias attributes to allow longer
> >    values.
> >
> > It's not clear to me whether the Xen driver is advertising correctly or
> > not.  If it is, then the solution should be b, but that may be too
> > disruptive a change to the kernel.  So a reasonable workaround might
> > be:
> >
> > c. Change the input subsystem to limit the length of the
> >    capabilities part of the modalias.
> 
> The problem with a) is that the Xen keyboard is not a physical keyboard
> and so it has no way of knowing what keys it actually has.  It is a fake
> input device designed to pass through whatever input the Xen hypervisor
> sends down.  As such, any key could come in.  If it doesn't advertise
> that it has all of these keys, then they would not be accepted by
> libinput when the hypervisor sends them down.

Right, that's what I feared.

xen-kbdfront is setting the bits for keys in the ranges [KEY_ESC,
KEY_UNKNOWN) and [KEY_OK, KEY_MAX), which I think works out to 654
keys and 2362 bytes in the modalias.

> This seems to be the heart of the problem: libinput was designed
> assuming that all keyboards can and must report what keys are actually
> present, and then libinput tries to cram that information into the
> modalias rather than some other sysfs attribute as it should ( or not at
> all... I still don't see how this information is actually supposed to be
> useful to userspace ).

I think modaliases aren't intended to be interpreted by user-space,
other than processing wildcards when matching to modules.

For input devices, the same information is available through other
variables in the uevent, in a more compact form.  The information *is*
useful for user-space; e.g. in initramfs-tools we recognise keyboard
devices and add their drivers to the initramfs but ignore other input
devices.

> As for b), the problem isn't with the modalias attribute itself, but
> when the kernel tries to copy it into the environment block for the udev
> callout.  The environment block is only a single page, and so limited to
> 4 KB.  And that's for everything else that goes into the environment,
> not just the modalias.

Text-based sysfs attributes are limited to a page, but udev receives
uevents through netlink, not sysfs.

The current limit on the environment of a uevent appears to be 2 KB
(UEVENT_BUFFER_SIZE defined in <linux/kobject.h>).  That seems like it
*might* be easier to change, so long as user-space doesn't have a
similar limit.

I looked into systemd/udev, and it seems to use an 8 KB buffer for
receiving uevents:

https://sources.debian.org/src/systemd/247.9-1/src/libsystemd/sd-device/device-monitor.c/?hl=390#L390

But as a first step I think increasing the kernel buffer size to 4 KB
would be enough.  Perhaps someone could test whether this patch to the
domU kernel makes udev happier:

--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -30,7 +30,7 @@
 
 #define UEVENT_HELPER_PATH_LEN		256
 #define UEVENT_NUM_ENVP			64	/* number of env pointers */
-#define UEVENT_BUFFER_SIZE		2048	/* buffer for the variables */
+#define UEVENT_BUFFER_SIZE		4096	/* buffer for the variables */
 
 #ifdef CONFIG_UEVENT_HELPER
 /* path to the userspace helper executed on an event */
--- END ---

?

Ben.

-- 
Ben Hutchings
Design a system any fool can use, and only a fool will want to use it.

Back to linux.debian.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Bug#983357: Netinst crashes xen domU when loading kernel Phillip Susi <phill@thesusis.net> - 2021-05-19 15:40 +0200
  Bug#983357: Netinst crashes xen domU when loading kernel Cyril Brulebois <kibi@debian.org> - 2021-05-24 06:30 +0200
    Bug#983357: Netinst crashes xen domU when loading kernel Michael Biebl <biebl@debian.org> - 2021-05-24 09:40 +0200
      Bug#983357: Netinst crashes xen domU when loading kernel Phillip Susi <phill@thesusis.net> - 2021-05-25 21:50 +0200
      Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Ben Hutchings <ben@decadent.org.uk> - 2021-08-24 19:20 +0200
        Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Phillip Susi <phill@thesusis.net> - 2021-08-24 21:50 +0200
          Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Ben Hutchings <ben@decadent.org.uk> - 2021-08-25 01:20 +0200
            Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Ben Hutchings <ben@decadent.org.uk> - 2021-08-25 19:00 +0200
            Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Phillip Susi <phill@thesusis.net> - 2021-08-25 22:30 +0200
        Bug#983357: Bug#988776: Bug#983357: Netinst crashes xen domU when loading kernel Ben Hutchings <ben@decadent.org.uk> - 2021-08-25 17:00 +0200

csiph-web