<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/arch/um, branch v6.6.78</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>um: Always dump trace for specified task in show_stack</title>
<updated>2024-12-09T09:32:54+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-11-06T10:39:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e7b5a40b9b3878698f5c550e6413dd19113acda8'/>
<id>e7b5a40b9b3878698f5c550e6413dd19113acda8</id>
<content type='text'>
[ Upstream commit 0f659ff362eac69777c4c191b7e5ccb19d76c67d ]

Currently, show_stack() always dumps the trace of the current task.
However, it should dump the trace of the specified task if one is
provided. Otherwise, things like running "echo t &gt; sysrq-trigger"
won't work as expected.

Fixes: 970e51feaddb ("um: Add support for CONFIG_STACKTRACE")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20241106103933.1132365-1-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0f659ff362eac69777c4c191b7e5ccb19d76c67d ]

Currently, show_stack() always dumps the trace of the current task.
However, it should dump the trace of the specified task if one is
provided. Otherwise, things like running "echo t &gt; sysrq-trigger"
won't work as expected.

Fixes: 970e51feaddb ("um: Add support for CONFIG_STACKTRACE")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20241106103933.1132365-1-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: Fix the return value of elf_core_copy_task_fpregs</title>
<updated>2024-12-09T09:32:54+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-09-13T02:33:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d3ca120303a73116ef5e8feba550d122d46898de'/>
<id>d3ca120303a73116ef5e8feba550d122d46898de</id>
<content type='text'>
[ Upstream commit 865e3845eeaa21e9a62abc1361644e67124f1ec0 ]

This function is expected to return a boolean value, which should be
true on success and false on failure.

Fixes: d1254b12c93e ("uml: fix x86_64 core dump crash")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20240913023302.130300-1-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 865e3845eeaa21e9a62abc1361644e67124f1ec0 ]

This function is expected to return a boolean value, which should be
true on success and false on failure.

Fixes: d1254b12c93e ("uml: fix x86_64 core dump crash")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20240913023302.130300-1-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: Fix potential integer overflow during physmem setup</title>
<updated>2024-12-09T09:32:54+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-09-16T04:59:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a875c023155ea92b75d6323977003e64d92ae7fc'/>
<id>a875c023155ea92b75d6323977003e64d92ae7fc</id>
<content type='text'>
[ Upstream commit a98b7761f697e590ed5d610d87fa12be66f23419 ]

This issue happens when the real map size is greater than LONG_MAX,
which can be easily triggered on UML/i386.

Fixes: fe205bdd1321 ("um: Print minimum physical memory requirement")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20240916045950.508910-3-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit a98b7761f697e590ed5d610d87fa12be66f23419 ]

This issue happens when the real map size is greater than LONG_MAX,
which can be easily triggered on UML/i386.

Fixes: fe205bdd1321 ("um: Print minimum physical memory requirement")
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Link: https://patch.msgid.link/20240916045950.508910-3-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: vector: Do not use drvdata in release</title>
<updated>2024-12-09T09:32:49+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-11-04T16:32:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8204dd589c4f25a7618eece5da3f0871e02af8ae'/>
<id>8204dd589c4f25a7618eece5da3f0871e02af8ae</id>
<content type='text'>
commit 51b39d741970742a5c41136241a9c48ac607cf82 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the vector_device instance. Otherwise, removing a vector device
will result in a crash:

RIP: 0033:vector_device_release+0xf/0x50
RSP: 00000000e187bc40  EFLAGS: 00010202
RAX: 0000000060028f61 RBX: 00000000600f1baf RCX: 00000000620074e0
RDX: 000000006220b9c0 RSI: 0000000060551c80 RDI: 0000000000000000
RBP: 00000000e187bc50 R08: 00000000603ad594 R09: 00000000e187bb70
R10: 000000000000135a R11: 00000000603ad422 R12: 00000000623ae028
R13: 000000006287a200 R14: 0000000062006d30 R15: 00000000623700b6
Kernel panic - not syncing: Segfault with no mm
CPU: 0 UID: 0 PID: 16 Comm: kworker/0:1 Not tainted 6.12.0-rc6-g59b723cd2adb #1
Workqueue: events mc_work_proc
Stack:
 60028f61 623ae028 e187bc80 60276fcd
 6220b9c0 603f5820 623ae028 00000000
 e187bcb0 603a2bcd 623ae000 62370010
Call Trace:
 [&lt;60028f61&gt;] ? vector_device_release+0x0/0x50
 [&lt;60276fcd&gt;] device_release+0x70/0xba
 [&lt;603a2bcd&gt;] kobject_put+0xba/0xe7
 [&lt;60277265&gt;] put_device+0x19/0x1c
 [&lt;60281266&gt;] platform_device_put+0x26/0x29
 [&lt;60281e5f&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;60029422&gt;] vector_remove+0x52/0x58
 [&lt;60031316&gt;] ? mconsole_reply+0x0/0x50
 [&lt;600310c8&gt;] mconsole_remove+0x160/0x1cc
 [&lt;603b19f4&gt;] ? strlen+0x0/0x15
 [&lt;60066611&gt;] ? __dequeue_entity+0x1a9/0x206
 [&lt;600666a7&gt;] ? set_next_entity+0x39/0x63
 [&lt;6006666e&gt;] ? set_next_entity+0x0/0x63
 [&lt;60038fa6&gt;] ? um_set_signals+0x0/0x43
 [&lt;6003070c&gt;] mc_work_proc+0x77/0x91
 [&lt;60057664&gt;] process_scheduled_works+0x1b3/0x2dd
 [&lt;60055f32&gt;] ? assign_work+0x0/0x58
 [&lt;60057f0a&gt;] worker_thread+0x1e9/0x293
 [&lt;6005406f&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005d65d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;6005d748&gt;] ? kthread_exit+0x0/0x3a
 [&lt;60057d21&gt;] ? worker_thread+0x0/0x293
 [&lt;6005dbf1&gt;] kthread+0x126/0x12b
 [&lt;600219c5&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-5-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 51b39d741970742a5c41136241a9c48ac607cf82 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the vector_device instance. Otherwise, removing a vector device
will result in a crash:

RIP: 0033:vector_device_release+0xf/0x50
RSP: 00000000e187bc40  EFLAGS: 00010202
RAX: 0000000060028f61 RBX: 00000000600f1baf RCX: 00000000620074e0
RDX: 000000006220b9c0 RSI: 0000000060551c80 RDI: 0000000000000000
RBP: 00000000e187bc50 R08: 00000000603ad594 R09: 00000000e187bb70
R10: 000000000000135a R11: 00000000603ad422 R12: 00000000623ae028
R13: 000000006287a200 R14: 0000000062006d30 R15: 00000000623700b6
Kernel panic - not syncing: Segfault with no mm
CPU: 0 UID: 0 PID: 16 Comm: kworker/0:1 Not tainted 6.12.0-rc6-g59b723cd2adb #1
Workqueue: events mc_work_proc
Stack:
 60028f61 623ae028 e187bc80 60276fcd
 6220b9c0 603f5820 623ae028 00000000
 e187bcb0 603a2bcd 623ae000 62370010
Call Trace:
 [&lt;60028f61&gt;] ? vector_device_release+0x0/0x50
 [&lt;60276fcd&gt;] device_release+0x70/0xba
 [&lt;603a2bcd&gt;] kobject_put+0xba/0xe7
 [&lt;60277265&gt;] put_device+0x19/0x1c
 [&lt;60281266&gt;] platform_device_put+0x26/0x29
 [&lt;60281e5f&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;60029422&gt;] vector_remove+0x52/0x58
 [&lt;60031316&gt;] ? mconsole_reply+0x0/0x50
 [&lt;600310c8&gt;] mconsole_remove+0x160/0x1cc
 [&lt;603b19f4&gt;] ? strlen+0x0/0x15
 [&lt;60066611&gt;] ? __dequeue_entity+0x1a9/0x206
 [&lt;600666a7&gt;] ? set_next_entity+0x39/0x63
 [&lt;6006666e&gt;] ? set_next_entity+0x0/0x63
 [&lt;60038fa6&gt;] ? um_set_signals+0x0/0x43
 [&lt;6003070c&gt;] mc_work_proc+0x77/0x91
 [&lt;60057664&gt;] process_scheduled_works+0x1b3/0x2dd
 [&lt;60055f32&gt;] ? assign_work+0x0/0x58
 [&lt;60057f0a&gt;] worker_thread+0x1e9/0x293
 [&lt;6005406f&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005d65d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;6005d748&gt;] ? kthread_exit+0x0/0x3a
 [&lt;60057d21&gt;] ? worker_thread+0x0/0x293
 [&lt;6005dbf1&gt;] kthread+0x126/0x12b
 [&lt;600219c5&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-5-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: net: Do not use drvdata in release</title>
<updated>2024-12-09T09:32:49+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-11-04T16:32:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=cdbd5a1dcdc2c27ac076f91b03b9add3fefa1a82'/>
<id>cdbd5a1dcdc2c27ac076f91b03b9add3fefa1a82</id>
<content type='text'>
commit d1db692a9be3b4bd3473b64fcae996afaffe8438 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the uml_net instance. Otherwise, removing a network device will
result in a crash:

RIP: 0033:net_device_release+0x10/0x6f
RSP: 00000000e20c7c40  EFLAGS: 00010206
RAX: 000000006002e4e7 RBX: 00000000600f1baf RCX: 00000000624074e0
RDX: 0000000062778000 RSI: 0000000060551c80 RDI: 00000000627af028
RBP: 00000000e20c7c50 R08: 00000000603ad594 R09: 00000000e20c7b70
R10: 000000000000135a R11: 00000000603ad422 R12: 0000000000000000
R13: 0000000062c7af00 R14: 0000000062406d60 R15: 00000000627700b6
Kernel panic - not syncing: Segfault with no mm
CPU: 0 UID: 0 PID: 29 Comm: kworker/0:2 Not tainted 6.12.0-rc6-g59b723cd2adb #1
Workqueue: events mc_work_proc
Stack:
 627af028 62c7af00 e20c7c80 60276fcd
 62778000 603f5820 627af028 00000000
 e20c7cb0 603a2bcd 627af000 62770010
Call Trace:
 [&lt;60276fcd&gt;] device_release+0x70/0xba
 [&lt;603a2bcd&gt;] kobject_put+0xba/0xe7
 [&lt;60277265&gt;] put_device+0x19/0x1c
 [&lt;60281266&gt;] platform_device_put+0x26/0x29
 [&lt;60281e5f&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;6002ec9c&gt;] net_remove+0x63/0x69
 [&lt;60031316&gt;] ? mconsole_reply+0x0/0x50
 [&lt;600310c8&gt;] mconsole_remove+0x160/0x1cc
 [&lt;60087d40&gt;] ? __remove_hrtimer+0x38/0x74
 [&lt;60087ff8&gt;] ? hrtimer_try_to_cancel+0x8c/0x98
 [&lt;6006b3cf&gt;] ? dl_server_stop+0x3f/0x48
 [&lt;6006b390&gt;] ? dl_server_stop+0x0/0x48
 [&lt;600672e8&gt;] ? dequeue_entities+0x327/0x390
 [&lt;60038fa6&gt;] ? um_set_signals+0x0/0x43
 [&lt;6003070c&gt;] mc_work_proc+0x77/0x91
 [&lt;60057664&gt;] process_scheduled_works+0x1b3/0x2dd
 [&lt;60055f32&gt;] ? assign_work+0x0/0x58
 [&lt;60057f0a&gt;] worker_thread+0x1e9/0x293
 [&lt;6005406f&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005d65d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;6005d748&gt;] ? kthread_exit+0x0/0x3a
 [&lt;60057d21&gt;] ? worker_thread+0x0/0x293
 [&lt;6005dbf1&gt;] kthread+0x126/0x12b
 [&lt;600219c5&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-4-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit d1db692a9be3b4bd3473b64fcae996afaffe8438 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the uml_net instance. Otherwise, removing a network device will
result in a crash:

RIP: 0033:net_device_release+0x10/0x6f
RSP: 00000000e20c7c40  EFLAGS: 00010206
RAX: 000000006002e4e7 RBX: 00000000600f1baf RCX: 00000000624074e0
RDX: 0000000062778000 RSI: 0000000060551c80 RDI: 00000000627af028
RBP: 00000000e20c7c50 R08: 00000000603ad594 R09: 00000000e20c7b70
R10: 000000000000135a R11: 00000000603ad422 R12: 0000000000000000
R13: 0000000062c7af00 R14: 0000000062406d60 R15: 00000000627700b6
Kernel panic - not syncing: Segfault with no mm
CPU: 0 UID: 0 PID: 29 Comm: kworker/0:2 Not tainted 6.12.0-rc6-g59b723cd2adb #1
Workqueue: events mc_work_proc
Stack:
 627af028 62c7af00 e20c7c80 60276fcd
 62778000 603f5820 627af028 00000000
 e20c7cb0 603a2bcd 627af000 62770010
Call Trace:
 [&lt;60276fcd&gt;] device_release+0x70/0xba
 [&lt;603a2bcd&gt;] kobject_put+0xba/0xe7
 [&lt;60277265&gt;] put_device+0x19/0x1c
 [&lt;60281266&gt;] platform_device_put+0x26/0x29
 [&lt;60281e5f&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;6002ec9c&gt;] net_remove+0x63/0x69
 [&lt;60031316&gt;] ? mconsole_reply+0x0/0x50
 [&lt;600310c8&gt;] mconsole_remove+0x160/0x1cc
 [&lt;60087d40&gt;] ? __remove_hrtimer+0x38/0x74
 [&lt;60087ff8&gt;] ? hrtimer_try_to_cancel+0x8c/0x98
 [&lt;6006b3cf&gt;] ? dl_server_stop+0x3f/0x48
 [&lt;6006b390&gt;] ? dl_server_stop+0x0/0x48
 [&lt;600672e8&gt;] ? dequeue_entities+0x327/0x390
 [&lt;60038fa6&gt;] ? um_set_signals+0x0/0x43
 [&lt;6003070c&gt;] mc_work_proc+0x77/0x91
 [&lt;60057664&gt;] process_scheduled_works+0x1b3/0x2dd
 [&lt;60055f32&gt;] ? assign_work+0x0/0x58
 [&lt;60057f0a&gt;] worker_thread+0x1e9/0x293
 [&lt;6005406f&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005d65d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;6005d748&gt;] ? kthread_exit+0x0/0x3a
 [&lt;60057d21&gt;] ? worker_thread+0x0/0x293
 [&lt;6005dbf1&gt;] kthread+0x126/0x12b
 [&lt;600219c5&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-4-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: ubd: Do not use drvdata in release</title>
<updated>2024-12-09T09:32:49+00:00</updated>
<author>
<name>Tiwei Bie</name>
<email>tiwei.btw@antgroup.com</email>
</author>
<published>2024-11-04T16:32:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2d194d951895df214e066d08146e77cb6e02c1d4'/>
<id>2d194d951895df214e066d08146e77cb6e02c1d4</id>
<content type='text'>
commit 5bee35e5389f450a7eea7318deb9073e9414d3b1 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the ubd instance. Otherwise, removing a ubd device will result
in a crash:

RIP: 0033:blk_mq_free_tag_set+0x1f/0xba
RSP: 00000000e2083bf0  EFLAGS: 00010246
RAX: 000000006021463a RBX: 0000000000000348 RCX: 0000000062604d00
RDX: 0000000004208060 RSI: 00000000605241a0 RDI: 0000000000000348
RBP: 00000000e2083c10 R08: 0000000062414010 R09: 00000000601603f7
R10: 000000000000133a R11: 000000006038c4bd R12: 0000000000000000
R13: 0000000060213a5c R14: 0000000062405d20 R15: 00000000604f7aa0
Kernel panic - not syncing: Segfault with no mm
CPU: 0 PID: 17 Comm: kworker/0:1 Not tainted 6.8.0-rc3-00107-gba3f67c11638 #1
Workqueue: events mc_work_proc
Stack:
 00000000 604f7ef0 62c5d000 62405d20
 e2083c30 6002c776 6002c755 600e47ff
 e2083c60 6025ffe3 04208060 603d36e0
Call Trace:
 [&lt;6002c776&gt;] ubd_device_release+0x21/0x55
 [&lt;6002c755&gt;] ? ubd_device_release+0x0/0x55
 [&lt;600e47ff&gt;] ? kfree+0x0/0x100
 [&lt;6025ffe3&gt;] device_release+0x70/0xba
 [&lt;60381d6a&gt;] kobject_put+0xb5/0xe2
 [&lt;6026027b&gt;] put_device+0x19/0x1c
 [&lt;6026a036&gt;] platform_device_put+0x26/0x29
 [&lt;6026ac5a&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;6002c52e&gt;] ubd_remove+0xb8/0xd6
 [&lt;6002bb74&gt;] ? mconsole_reply+0x0/0x50
 [&lt;6002b926&gt;] mconsole_remove+0x160/0x1cc
 [&lt;6002bbbc&gt;] ? mconsole_reply+0x48/0x50
 [&lt;6003379c&gt;] ? um_set_signals+0x3b/0x43
 [&lt;60061c55&gt;] ? update_min_vruntime+0x14/0x70
 [&lt;6006251f&gt;] ? dequeue_task_fair+0x164/0x235
 [&lt;600620aa&gt;] ? update_cfs_group+0x0/0x40
 [&lt;603a0e77&gt;] ? __schedule+0x0/0x3ed
 [&lt;60033761&gt;] ? um_set_signals+0x0/0x43
 [&lt;6002af6a&gt;] mc_work_proc+0x77/0x91
 [&lt;600520b4&gt;] process_scheduled_works+0x1af/0x2c3
 [&lt;6004ede3&gt;] ? assign_work+0x0/0x58
 [&lt;600527a1&gt;] worker_thread+0x2f7/0x37a
 [&lt;6004ee3b&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005765d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;60058e07&gt;] ? kthread_exit+0x0/0x3a
 [&lt;600524aa&gt;] ? worker_thread+0x0/0x37a
 [&lt;60058f9f&gt;] kthread+0x130/0x135
 [&lt;6002068e&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-3-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5bee35e5389f450a7eea7318deb9073e9414d3b1 upstream.

The drvdata is not available in release. Let's just use container_of()
to get the ubd instance. Otherwise, removing a ubd device will result
in a crash:

RIP: 0033:blk_mq_free_tag_set+0x1f/0xba
RSP: 00000000e2083bf0  EFLAGS: 00010246
RAX: 000000006021463a RBX: 0000000000000348 RCX: 0000000062604d00
RDX: 0000000004208060 RSI: 00000000605241a0 RDI: 0000000000000348
RBP: 00000000e2083c10 R08: 0000000062414010 R09: 00000000601603f7
R10: 000000000000133a R11: 000000006038c4bd R12: 0000000000000000
R13: 0000000060213a5c R14: 0000000062405d20 R15: 00000000604f7aa0
Kernel panic - not syncing: Segfault with no mm
CPU: 0 PID: 17 Comm: kworker/0:1 Not tainted 6.8.0-rc3-00107-gba3f67c11638 #1
Workqueue: events mc_work_proc
Stack:
 00000000 604f7ef0 62c5d000 62405d20
 e2083c30 6002c776 6002c755 600e47ff
 e2083c60 6025ffe3 04208060 603d36e0
Call Trace:
 [&lt;6002c776&gt;] ubd_device_release+0x21/0x55
 [&lt;6002c755&gt;] ? ubd_device_release+0x0/0x55
 [&lt;600e47ff&gt;] ? kfree+0x0/0x100
 [&lt;6025ffe3&gt;] device_release+0x70/0xba
 [&lt;60381d6a&gt;] kobject_put+0xb5/0xe2
 [&lt;6026027b&gt;] put_device+0x19/0x1c
 [&lt;6026a036&gt;] platform_device_put+0x26/0x29
 [&lt;6026ac5a&gt;] platform_device_unregister+0x2c/0x2e
 [&lt;6002c52e&gt;] ubd_remove+0xb8/0xd6
 [&lt;6002bb74&gt;] ? mconsole_reply+0x0/0x50
 [&lt;6002b926&gt;] mconsole_remove+0x160/0x1cc
 [&lt;6002bbbc&gt;] ? mconsole_reply+0x48/0x50
 [&lt;6003379c&gt;] ? um_set_signals+0x3b/0x43
 [&lt;60061c55&gt;] ? update_min_vruntime+0x14/0x70
 [&lt;6006251f&gt;] ? dequeue_task_fair+0x164/0x235
 [&lt;600620aa&gt;] ? update_cfs_group+0x0/0x40
 [&lt;603a0e77&gt;] ? __schedule+0x0/0x3ed
 [&lt;60033761&gt;] ? um_set_signals+0x0/0x43
 [&lt;6002af6a&gt;] mc_work_proc+0x77/0x91
 [&lt;600520b4&gt;] process_scheduled_works+0x1af/0x2c3
 [&lt;6004ede3&gt;] ? assign_work+0x0/0x58
 [&lt;600527a1&gt;] worker_thread+0x2f7/0x37a
 [&lt;6004ee3b&gt;] ? set_pf_worker+0x0/0x64
 [&lt;6005765d&gt;] ? arch_local_irq_save+0x0/0x2d
 [&lt;60058e07&gt;] ? kthread_exit+0x0/0x3a
 [&lt;600524aa&gt;] ? worker_thread+0x0/0x37a
 [&lt;60058f9f&gt;] kthread+0x130/0x135
 [&lt;6002068e&gt;] new_thread_handler+0x85/0xb6

Cc: stable@vger.kernel.org
Signed-off-by: Tiwei Bie &lt;tiwei.btw@antgroup.com&gt;
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Link: https://patch.msgid.link/20241104163203.435515-3-tiwei.btw@antgroup.com
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify</title>
<updated>2024-12-09T09:31:56+00:00</updated>
<author>
<name>Usama Arif</name>
<email>usamaarif642@gmail.com</email>
</author>
<published>2024-10-23T17:14:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1103d3b5a5025aba1ea1fcee287c8858b175bec4'/>
<id>1103d3b5a5025aba1ea1fcee287c8858b175bec4</id>
<content type='text'>
[ Upstream commit b2473a359763e27567993e7d8f37de82f57a0829 ]

 __pa() is only intended to be used for linear map addresses and using
it for initial_boot_params which is in fixmap for arm64 will give an
incorrect value. Hence save the physical address when it is known at
boot time when calling early_init_dt_scan for arm64 and use it at kexec
time instead of converting the virtual address using __pa().

Note that arm64 doesn't need the FDT region reserved in the DT as the
kernel explicitly reserves the passed in FDT. Therefore, only a debug
warning is fixed with this change.

Reported-by: Breno Leitao &lt;leitao@debian.org&gt;
Suggested-by: Mark Rutland &lt;mark.rutland@arm.com&gt;
Signed-off-by: Usama Arif &lt;usamaarif642@gmail.com&gt;
Fixes: ac10be5cdbfa ("arm64: Use common of_kexec_alloc_and_setup_fdt()")
Link: https://lore.kernel.org/r/20241023171426.452688-1-usamaarif642@gmail.com
Signed-off-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit b2473a359763e27567993e7d8f37de82f57a0829 ]

 __pa() is only intended to be used for linear map addresses and using
it for initial_boot_params which is in fixmap for arm64 will give an
incorrect value. Hence save the physical address when it is known at
boot time when calling early_init_dt_scan for arm64 and use it at kexec
time instead of converting the virtual address using __pa().

Note that arm64 doesn't need the FDT region reserved in the DT as the
kernel explicitly reserves the passed in FDT. Therefore, only a debug
warning is fixed with this change.

Reported-by: Breno Leitao &lt;leitao@debian.org&gt;
Suggested-by: Mark Rutland &lt;mark.rutland@arm.com&gt;
Signed-off-by: Usama Arif &lt;usamaarif642@gmail.com&gt;
Fixes: ac10be5cdbfa ("arm64: Use common of_kexec_alloc_and_setup_fdt()")
Link: https://lore.kernel.org/r/20241023171426.452688-1-usamaarif642@gmail.com
Signed-off-by: Rob Herring (Arm) &lt;robh@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: Unconditionally call unflatten_device_tree()</title>
<updated>2024-12-09T09:31:55+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@kernel.org</email>
</author>
<published>2024-02-17T01:05:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ccf190dba6409ec67644d76df0ff7c5871f1a775'/>
<id>ccf190dba6409ec67644d76df0ff7c5871f1a775</id>
<content type='text'>
[ Upstream commit 221a819aa3ca5bbbc91ce425b3e8d9463b121d09 ]

Call this function unconditionally so that we can populate an empty DTB
on platforms that don't boot with a command line provided DTB.  There's
no harm in calling unflatten_device_tree() unconditionally. If there
isn't a valid initial_boot_params dtb then unflatten_device_tree()
returns early.

Cc: Rob Herring &lt;robh+dt@kernel.org&gt;
Cc: Frank Rowand &lt;frowand.list@gmail.com&gt;
Cc: Richard Weinberger &lt;richard@nod.at&gt;
Cc: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: linux-um@lists.infradead.org
Signed-off-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
Link: https://lore.kernel.org/r/20240217010557.2381548-4-sboyd@kernel.org
Signed-off-by: Rob Herring &lt;robh@kernel.org&gt;
Stable-dep-of: b2473a359763 ("of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify")
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 221a819aa3ca5bbbc91ce425b3e8d9463b121d09 ]

Call this function unconditionally so that we can populate an empty DTB
on platforms that don't boot with a command line provided DTB.  There's
no harm in calling unflatten_device_tree() unconditionally. If there
isn't a valid initial_boot_params dtb then unflatten_device_tree()
returns early.

Cc: Rob Herring &lt;robh+dt@kernel.org&gt;
Cc: Frank Rowand &lt;frowand.list@gmail.com&gt;
Cc: Richard Weinberger &lt;richard@nod.at&gt;
Cc: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: linux-um@lists.infradead.org
Signed-off-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
Link: https://lore.kernel.org/r/20240217010557.2381548-4-sboyd@kernel.org
Signed-off-by: Rob Herring &lt;robh@kernel.org&gt;
Stable-dep-of: b2473a359763 ("of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify")
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: line: always fill *error_out in setup_one_line()</title>
<updated>2024-09-12T09:11:35+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2024-07-03T15:22:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ec5b47a370177d79ae7773858042c107e21f8ecc'/>
<id>ec5b47a370177d79ae7773858042c107e21f8ecc</id>
<content type='text'>
[ Upstream commit 824ac4a5edd3f7494ab1996826c4f47f8ef0f63d ]

The pointer isn't initialized by callers, but I have
encountered cases where it's still printed; initialize
it in all possible cases in setup_one_line().

Link: https://patch.msgid.link/20240703172235.ad863568b55f.Iaa1eba4db8265d7715ba71d5f6bb8c7ff63d27e9@changeid
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 824ac4a5edd3f7494ab1996826c4f47f8ef0f63d ]

The pointer isn't initialized by callers, but I have
encountered cases where it's still printed; initialize
it in all possible cases in setup_one_line().

Link: https://patch.msgid.link/20240703172235.ad863568b55f.Iaa1eba4db8265d7715ba71d5f6bb8c7ff63d27e9@changeid
Acked-By: Anton Ivanov &lt;anton.ivanov@cambridgegreys.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>um: time-travel: fix signal blocking race/hang</title>
<updated>2024-08-03T06:54:35+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2024-07-03T11:01:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0aa0284818d2ce7e6c69d2b8581f48a7674186ad'/>
<id>0aa0284818d2ce7e6c69d2b8581f48a7674186ad</id>
<content type='text'>
[ Upstream commit 2cf3a3c4b84def5406b830452b1cb8bbfffe0ebe ]

When signals are hard-blocked in order to do time-travel
socket processing, we set signals_blocked and then handle
SIGIO signals by setting the SIGIO bit in signals_pending.
When unblocking, we first set signals_blocked to 0, and
then handle all pending signals. We have to set it first,
so that we can again properly block/unblock inside the
unblock, if the time-travel handlers need to be processed.

Unfortunately, this is racy. We can get into this situation:

// signals_pending = SIGIO_MASK

unblock_signals_hard()
   signals_blocked = 0;
   if (signals_pending &amp;&amp; signals_enabled) {
     block_signals();
     unblock_signals()
       ...
       sig_handler_common(SIGIO, NULL, NULL);
         sigio_handler()
           ...
           sigio_reg_handler()
             irq_do_timetravel_handler()
               reg-&gt;timetravel_handler() ==
               vu_req_interrupt_comm_handler()
                 vu_req_read_message()
                   vhost_user_recv_req()
                     vhost_user_recv()
                       vhost_user_recv_header()
                         // reads 12 bytes header of
                         // 20 bytes message
&lt;-- receive SIGIO here &lt;--
sig_handler()
   int enabled = signals_enabled; // 1
   if ((signals_blocked || !enabled) &amp;&amp; (sig == SIGIO)) {
     if (!signals_blocked &amp;&amp; time_travel_mode == TT_MODE_EXTERNAL)
       sigio_run_timetravel_handlers()
         _sigio_handler()
           sigio_reg_handler()
             ... as above ...
               vhost_user_recv_header()
                 // reads 8 bytes that were message payload
                 // as if it were header - but aborts since
                 // it then gets -EAGAIN
...
--&gt; end signal handler --&gt;
                       // continue in vhost_user_recv()
                       // full_read() for 8 bytes payload busy loops
                       // entire process hangs here

Conceptually, to fix this, we need to ensure that the
signal handler cannot run while we hard-unblock signals.
The thing that makes this more complex is that we can be
doing hard-block/unblock while unblocking. Introduce a
new signals_blocked_pending variable that we can keep at
non-zero as long as pending signals are being processed,
then we only need to ensure it's decremented safely and
the signal handler will only increment it if it's already
non-zero (or signals_blocked is set, of course.)

Note also that only the outermost call to hard-unblock is
allowed to decrement signals_blocked_pending, since it
could otherwise reach zero in an inner call, and leave
the same race happening if the timetravel_handler loops,
but that's basically required of it.

Fixes: d6b399a0e02a ("um: time-travel/signals: fix ndelay() in interrupt")
Link: https://patch.msgid.link/20240703110144.28034-2-johannes@sipsolutions.net
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 2cf3a3c4b84def5406b830452b1cb8bbfffe0ebe ]

When signals are hard-blocked in order to do time-travel
socket processing, we set signals_blocked and then handle
SIGIO signals by setting the SIGIO bit in signals_pending.
When unblocking, we first set signals_blocked to 0, and
then handle all pending signals. We have to set it first,
so that we can again properly block/unblock inside the
unblock, if the time-travel handlers need to be processed.

Unfortunately, this is racy. We can get into this situation:

// signals_pending = SIGIO_MASK

unblock_signals_hard()
   signals_blocked = 0;
   if (signals_pending &amp;&amp; signals_enabled) {
     block_signals();
     unblock_signals()
       ...
       sig_handler_common(SIGIO, NULL, NULL);
         sigio_handler()
           ...
           sigio_reg_handler()
             irq_do_timetravel_handler()
               reg-&gt;timetravel_handler() ==
               vu_req_interrupt_comm_handler()
                 vu_req_read_message()
                   vhost_user_recv_req()
                     vhost_user_recv()
                       vhost_user_recv_header()
                         // reads 12 bytes header of
                         // 20 bytes message
&lt;-- receive SIGIO here &lt;--
sig_handler()
   int enabled = signals_enabled; // 1
   if ((signals_blocked || !enabled) &amp;&amp; (sig == SIGIO)) {
     if (!signals_blocked &amp;&amp; time_travel_mode == TT_MODE_EXTERNAL)
       sigio_run_timetravel_handlers()
         _sigio_handler()
           sigio_reg_handler()
             ... as above ...
               vhost_user_recv_header()
                 // reads 8 bytes that were message payload
                 // as if it were header - but aborts since
                 // it then gets -EAGAIN
...
--&gt; end signal handler --&gt;
                       // continue in vhost_user_recv()
                       // full_read() for 8 bytes payload busy loops
                       // entire process hangs here

Conceptually, to fix this, we need to ensure that the
signal handler cannot run while we hard-unblock signals.
The thing that makes this more complex is that we can be
doing hard-block/unblock while unblocking. Introduce a
new signals_blocked_pending variable that we can keep at
non-zero as long as pending signals are being processed,
then we only need to ensure it's decremented safely and
the signal handler will only increment it if it's already
non-zero (or signals_blocked is set, of course.)

Note also that only the outermost call to hard-unblock is
allowed to decrement signals_blocked_pending, since it
could otherwise reach zero in an inner call, and leave
the same race happening if the timetravel_handler loops,
but that's basically required of it.

Fixes: d6b399a0e02a ("um: time-travel/signals: fix ndelay() in interrupt")
Link: https://patch.msgid.link/20240703110144.28034-2-johannes@sipsolutions.net
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
