ubuntu-host driver lacks lseek ops

Bug #1934110 reported by Colin Ian King
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
High
Colin Ian King
Groovy
Won't Fix
High
Unassigned
Hirsute
Fix Released
High
Unassigned

Bug Description

[ SRU Justification ][GROOVY][HIRSUTE][IMPISH]

== Impact ==

The ubuntu-host driver lacks procfs lseek ops and lseeking on the procfs esm-token file will jump to a NULL address causing the following splat:

  942.470568] BUG: kernel NULL pointer dereference, address: 0000000000000000
[ 942.471157] #PF: supervisor instruction fetch in kernel mode
[ 942.471724] #PF: error_code(0x0010) - not-present page
[ 942.472297] PGD 0 P4D 0
[ 942.472867] Oops: 0010 [#1] SMP PTI
[ 942.473435] CPU: 2 PID: 5661 Comm: stress-ng Not tainted 5.13.0-9-generic #9
[ 942.474012] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
[ 942.474599] RIP: 0010:0x0
[ 942.475194] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
[ 942.475792] RSP: 0018:ffffaacf80ff7eb8 EFLAGS: 00010246
[ 942.476383] RAX: 0000000000000000 RBX: ffff9eaa8a175240 RCX: 0000000000000001
[ 942.476986] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff9eaa838d5800
[ 942.477600] RBP: ffffaacf80ff7ed0 R08: 0000000000004000 R09: 0000000000000004
[ 942.478203] R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000000
[ 942.478800] R13: 0000000000000000 R14: ffffffffffffffea R15: ffff9eaa838d5800
[ 942.479399] FS: 00007f998d487f00(0000) GS:ffff9eaaffc80000(0000) knlGS:0000000000000000
[ 942.480006] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 942.480607] CR2: ffffffffffffffd6 CR3: 000000010a774002 CR4: 0000000000370ee0
[ 942.481219] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 942.481855] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 942.482458] Call Trace:
[ 942.483052] proc_reg_llseek+0x4e/0x80
[ 942.483646] ? __fdget_pos+0x43/0x50
[ 942.484234] ksys_lseek+0x84/0xc0
[ 942.484815] __x64_sys_lseek+0x1a/0x20
[ 942.485412] do_syscall_64+0x61/0xb0
[ 942.485966] ? asm_exc_page_fault+0x8/0x30
[ 942.486476] entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 942.486994] RIP: 0033:0x7f998d5c1cdb
[ 942.487512] Code: ff ff c3 0f 1f 40 00 48 8b 15 89 81 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb ba 0f 1f 00 f3 0f 1e fa b8 08 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 05 c3 0f 1f 40 00 48 8b 15 59 81 0d 00 f7 d8
[ 942.488593] RSP: 002b:00007ffdf61c5328 EFLAGS: 00000246 ORIG_RAX: 0000000000000008
[ 942.489148] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f998d5c1cdb
[ 942.489710] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000004
[ 942.490252] RBP: 0000000000000004 R08: 000001785e4740dd R09: 0000562dbebb9e50
[ 942.490801] R10: 00007ffdf61c5300 R11: 0000000000000246 R12: 00007ffdf61c63f0
[ 942.491354] R13: 00007ffdf61c53f0 R14: 0000000000000003 R15: 00000000000001e9

== Fix ==

Add the default_llseek ops:

diff --git a/ubuntu/ubuntu-host/ubuntu-host.c b/ubuntu/ubuntu-host/ubuntu-host.c
index 1abd402..a4c0636 100644
--- a/ubuntu/ubuntu-host/ubuntu-host.c
+++ b/ubuntu/ubuntu-host/ubuntu-host.c
@@ -38,6 +38,8 @@ static ssize_t esm_token_write(struct file *f, const char __user *buf,
 static const struct proc_ops esm_token_fops = {
        .proc_read = esm_token_read,
        .proc_write = esm_token_write,
+ .proc_lseek = default_llseek,
+
 };

== Test plan ==

modrobe ubuntu-host
stress-ng --procfs 0 -t 60

without the fix we hit the splat. With the fix it's OK.

== Where problems could occur ==

This one liner adds the missing proc_lseek op. It is hard to see where it can cause a regression since it affects the driver no other way. I doubt any code is relying on the current semantics of lseek not working.

Changed in linux (Ubuntu):
status: New → In Progress
importance: Undecided → High
assignee: nobody → Colin Ian King (colin-king)
description: updated
Stefan Bader (smb)
Changed in linux (Ubuntu Groovy):
importance: Undecided → High
status: New → In Progress
Changed in linux (Ubuntu Hirsute):
importance: Undecided → High
status: New → In Progress
Changed in linux (Ubuntu Groovy):
status: In Progress → Fix Committed
Changed in linux (Ubuntu Hirsute):
status: In Progress → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-hirsute' to 'verification-done-hirsute'. If the problem still exists, change the tag 'verification-needed-hirsute' to 'verification-failed-hirsute'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-hirsute
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-focal' to 'verification-done-focal'. If the problem still exists, change the tag 'verification-needed-focal' to 'verification-failed-focal'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-focal
Revision history for this message
Brian Murray (brian-murray) wrote :

The Groovy Gorilla has reached end of life, so this bug will not be fixed for that release

Changed in linux (Ubuntu Groovy):
status: Fix Committed → Won't Fix
Revision history for this message
Colin Ian King (colin-king) wrote :

Tested on Hirsute 5.11.0-26-generic, no crash observed, marking as verified.

tags: added: verification-done-hirsute
removed: verification-needed-hirsute
Revision history for this message
Colin Ian King (colin-king) wrote :

Removing focal tag as this SRU does not apply to focal, it does not have this driver.

tags: removed: verification-needed-focal
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (48.1 KiB)

This bug was fixed in the package linux - 5.11.0-31.33

---------------
linux (5.11.0-31.33) hirsute; urgency=medium

  * hirsute/linux: 5.11.0-31.33 -proposed tracker (LP: #1939553)

  * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301)
    - SAUCE: shiftfs: fix sendfile() invocations

linux (5.11.0-26.28) hirsute; urgency=medium

  * Packaging resync (LP: #1786013)
    - update dkms package versions

  * large_dir in ext4 broken (LP: #1933074)
    - SAUCE: ext4: fix directory index node split corruption

  * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293)
    - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test"

  * icmp_redirect.sh in net from ubuntu_kernel_selftests failed on F-OEM-5.6 /
    F-OEM-5.10 / F-OEM-5.13 / F / G / H (LP: #1880645)
    - selftests: icmp_redirect: support expected failures

  * Mute/mic LEDs no function on some HP platfroms (LP: #1934878)
    - ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 450 G8
    - ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 445 G8
    - ALSA: hda/realtek: fix mute/micmute LEDs for HP ProBook 630 G8

  * [SRU][OEM-5.10/H] Fix HDMI output issue on Intel TGL GPU (LP: #1934864)
    - drm/i915: Fix HAS_LSPCON macro for platforms between GEN9 and GEN10

  * mute/micmute LEDs no function on HP EliteBook 830 G8 Notebook PC
    (LP: #1934239)
    - ALSA: hda/realtek: fix mute/micmute LEDs for HP EliteBook 830 G8 Notebook PC

  * ubuntu-host driver lacks lseek ops (LP: #1934110)
    - ubuntu-host: add generic lseek op

  * ubuntu_kernel_selftests ftrace fails on arm64 F / aws-5.8 / amd64 F
    azure-5.8 (LP: #1927749)
    - selftests/ftrace: fix event-no-pid on 1-core machine

  * Hirsute update: upstream stable patchset 2021-06-29 (LP: #1934012)
    - proc: Track /proc/$pid/attr/ opener mm_struct
    - ASoC: max98088: fix ni clock divider calculation
    - ASoC: amd: fix for pcm_read() error
    - spi: Fix spi device unregister flow
    - spi: spi-zynq-qspi: Fix stack violation bug
    - bpf: Forbid trampoline attach for functions with variable arguments
    - net/nfc/rawsock.c: fix a permission check bug
    - usb: cdns3: Fix runtime PM imbalance on error
    - ASoC: Intel: bytcr_rt5640: Add quirk for the Glavey TM800A550L tablet
    - ASoC: Intel: bytcr_rt5640: Add quirk for the Lenovo Miix 3-830 tablet
    - vfio-ccw: Reset FSM state to IDLE inside FSM
    - vfio-ccw: Serialize FSM IDLE state with I/O completion
    - ASoC: sti-sas: add missing MODULE_DEVICE_TABLE
    - spi: sprd: Add missing MODULE_DEVICE_TABLE
    - usb: chipidea: udc: assign interrupt number to USB gadget structure
    - isdn: mISDN: netjet: Fix crash in nj_probe:
    - bonding: init notify_work earlier to avoid uninitialized use
    - netlink: disable IRQs for netlink_lock_table()
    - net: mdiobus: get rid of a BUG_ON()
    - cgroup: disable controllers at parse time
    - wq: handle VM suspension in stall detection
    - net/qla3xxx: fix schedule while atomic in ql_sem_spinlock
    - RDS tcp loopback connection can hang
    - net:sfc: fix non-freed irq in legacy irq mode
    - scsi: bnx2fc: Return failure if io_req is already in ABTS processing
    - scsi:...

Changed in linux (Ubuntu Hirsute):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 5.13.0-14.14

---------------
linux (5.13.0-14.14) impish; urgency=medium

  * impish/linux: 5.13.0-14.14 -proposed tracker (LP: #1938565)

  * Miscellaneous Ubuntu changes
    - SAUCE: Revert "UBUNTU: SAUCE: random: Make getrandom() ready earlier"
    - SAUCE: random: properly make getrandom() ready earlier

  * Miscellaneous upstream changes
    - seq_buf: Fix overflow in seq_buf_putmem_hex()
    - bpf: Fix integer overflow in argument calculation for bpf_map_area_alloc
    - ext4: cleanup in-core orphan list if ext4_truncate() failed to get a
      transaction handle
    - ext4: fix kernel infoleak via ext4_extent_header
    - ext4: fix overflow in ext4_iomap_alloc()
    - ext4: return error code when ext4_fill_flex_info() fails
    - ext4: correct the cache_nr in tracepoint ext4_es_shrink_exit
    - ext4: remove check for zero nr_to_scan in ext4_es_scan()
    - ext4: fix avefreec in find_group_orlov
    - ext4: use ext4_grp_locked_error in mb_find_extent

 -- Andrea Righi <email address hidden> Mon, 02 Aug 2021 14:23:08 +0200

Changed in linux (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-focal' to 'verification-done-focal'. If the problem still exists, change the tag 'verification-needed-focal' to 'verification-failed-focal'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-focal
Revision history for this message
Stefan Bader (smb) wrote :

This is a Hirsute/5.11 change which already got released. The verification request seems to be triggered somehow by the hwe-5.11 kernel. This seems wrong.

tags: removed: verification-needed-focal
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.