Skip to content

Commit 2254005

Browse files
committed
Merge tag 'parisc-for-6.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc fixes from Helge Deller: "On parisc we still sometimes need writeable stacks, e.g. if programs aren't compiled with gcc-14. To avoid issues with the upcoming systemd-254 we therefore have to disable prctl(PR_SET_MDWE) for now (for parisc only). The other two patches are minor: a bugfix for the soft power-off on qemu with 64-bit kernel and prefer strscpy() over strlcpy(): - Fix power soft-off on qemu - Disable prctl(PR_SET_MDWE) since parisc sometimes still needs writeable stacks - Use strscpy instead of strlcpy in show_cpuinfo()" * tag 'parisc-for-6.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: prctl: Disable prctl(PR_SET_MDWE) on parisc parisc/power: Fix power soft-off when running on qemu parisc: Replace strlcpy() with strscpy()
2 parents b8f1fa2 + 7938381 commit 2254005

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

arch/parisc/kernel/processor.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ show_cpuinfo (struct seq_file *m, void *v)
383383
char cpu_name[60], *p;
384384

385385
/* strip PA path from CPU name to not confuse lscpu */
386-
strlcpy(cpu_name, per_cpu(cpu_data, 0).dev->name, sizeof(cpu_name));
386+
strscpy(cpu_name, per_cpu(cpu_data, 0).dev->name, sizeof(cpu_name));
387387
p = strrchr(cpu_name, '[');
388388
if (p)
389389
*(--p) = 0;

drivers/parisc/power.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ static struct notifier_block parisc_panic_block = {
176176
static int qemu_power_off(struct sys_off_data *data)
177177
{
178178
/* this turns the system off via SeaBIOS */
179-
*(int *)data->cb_data = 0;
179+
gsc_writel(0, (unsigned long) data->cb_data);
180180
pdc_soft_power_button(1);
181181
return NOTIFY_DONE;
182182
}

kernel/sys.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,10 @@ static inline int prctl_set_mdwe(unsigned long bits, unsigned long arg3,
23942394
if (bits & PR_MDWE_NO_INHERIT && !(bits & PR_MDWE_REFUSE_EXEC_GAIN))
23952395
return -EINVAL;
23962396

2397+
/* PARISC cannot allow mdwe as it needs writable stacks */
2398+
if (IS_ENABLED(CONFIG_PARISC))
2399+
return -EINVAL;
2400+
23972401
current_bits = get_current_mdwe();
23982402
if (current_bits && current_bits != bits)
23992403
return -EPERM; /* Cannot unset the flags */

0 commit comments

Comments
 (0)