Weird RIP printed in BUGs [was: 6.0 tty regression, NULL pointer deref in flush_to_ldisc]
From: Jiri Slaby
Date: Mon Aug 29 2022 - 05:16:43 EST
Hi,
On 29. 08. 22, 10:37, Hans de Goede wrote:
[ 28.626537] BUG: kernel NULL pointer dereference, address: 0000000000000000
[ 28.626555] #PF: supervisor instruction fetch in kernel mode
[ 28.626563] #PF: error_code(0x0010) - not-present page
[ 28.626569] PGD 0 P4D 0
[ 28.626580] Oops: 0010 [#1] PREEMPT SMP PTI
[ 28.626589] CPU: 2 PID: 8 Comm: kworker/u8:0 Tainted: G C E 6.0.0-rc2+ #102
[ 28.626598] Hardware name: MPMAN Converter9/Converter9, BIOS 5.6.5 07/28/2015
[ 28.626604] Workqueue: events_unbound flush_to_ldisc
[ 28.626617] RIP: 0010:0x0
[ 28.626633] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
Irrelevant to the original report, this new message format (the old
being "Bad RIP value") confuses me. It always makes me think how can RIP
be -42. So can we either:
1) print regs->ip value (0x0000000000000000) instead of prologue value
(regs->ip - 42 = 0xffffffffffffffd6) here? Even though we really pass
"regs->ip - 42" to copy_code()), or
2) don't print "RIP" in that message. So only "at 0xffffffffffffffd6"
? (I can send a patch for whichever is preferred, if anything.)
thanks,
--
js
suse labs