mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
	Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 19/58] m68k/atari: ARAnyM - Fix NatFeat module support
Date: Mon,  2 Sep 2013 09:54:04 +0100	[thread overview]
Message-ID: <1378112083-9475-20-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1378112083-9475-1-git-send-email-luis.henriques@canonical.com>

3.5.7.21 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Geert Uytterhoeven <geert@linux-m68k.org>

commit e8184e10f89736a23ea6eea8e24cd524c5c513d2 upstream.

As pointed out by Andreas Schwab, pointers passed to ARAnyM NatFeat calls
should be physical addresses, not virtual addresses.

Fortunately on Atari, physical and virtual kernel addresses are the same,
as long as normal kernel memory is concerned, so this usually worked fine
without conversion.

But for modules, pointers to literal strings are located in vmalloc()ed
memory. Depending on the version of ARAnyM, this causes the nf_get_id()
call to just fail, or worse, crash ARAnyM itself with e.g.

    Gotcha! Illegal memory access. Atari PC = $968c

This is a big issue for distro kernels, who want to have all drivers as
loadable modules in an initrd.

Add a wrapper for nf_get_id() that copies the literal to the stack to
work around this issue.

Reported-by: Thorsten Glaser <tg@debian.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/m68k/emu/natfeat.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/arch/m68k/emu/natfeat.c b/arch/m68k/emu/natfeat.c
index 2291a7d..fa277ae 100644
--- a/arch/m68k/emu/natfeat.c
+++ b/arch/m68k/emu/natfeat.c
@@ -18,9 +18,11 @@
 #include <asm/machdep.h>
 #include <asm/natfeat.h>
 
+extern long nf_get_id2(const char *feature_name);
+
 asm("\n"
-"	.global nf_get_id,nf_call\n"
-"nf_get_id:\n"
+"	.global nf_get_id2,nf_call\n"
+"nf_get_id2:\n"
 "	.short	0x7300\n"
 "	rts\n"
 "nf_call:\n"
@@ -29,12 +31,25 @@ asm("\n"
 "1:	moveq.l	#0,%d0\n"
 "	rts\n"
 "	.section __ex_table,\"a\"\n"
-"	.long	nf_get_id,1b\n"
+"	.long	nf_get_id2,1b\n"
 "	.long	nf_call,1b\n"
 "	.previous");
-EXPORT_SYMBOL_GPL(nf_get_id);
 EXPORT_SYMBOL_GPL(nf_call);
 
+long nf_get_id(const char *feature_name)
+{
+	/* feature_name may be in vmalloc()ed memory, so make a copy */
+	char name_copy[32];
+	size_t n;
+
+	n = strlcpy(name_copy, feature_name, sizeof(name_copy));
+	if (n >= sizeof(name_copy))
+		return 0;
+
+	return nf_get_id2(name_copy);
+}
+EXPORT_SYMBOL_GPL(nf_get_id);
+
 void nfprint(const char *fmt, ...)
 {
 	static char buf[256];
-- 
1.8.3.2


  parent reply	other threads:[~2013-09-02  9:09 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02  8:53 [ 3.5.y.z extended stable ] Linux 3.5.7.21 stable review Luis Henriques
2013-09-02  8:53 ` [PATCH 01/58] drm/i915/lvds: ditch ->prepare special case Luis Henriques
2013-09-02  8:53 ` [PATCH 02/58] ALSA: usb: Parse UAC2 extension unit like for UAC1 Luis Henriques
2013-09-02  8:53 ` [PATCH 03/58] serial: mxs: fix buffer overflow Luis Henriques
2013-09-02  8:53 ` [PATCH 04/58] fs/proc/task_mmu.c: fix buffer overflow in add_page_map() Luis Henriques
2013-09-02  8:53 ` [PATCH 05/58] af_key: initialize satype in key_notify_policy_flush() Luis Henriques
2013-09-02  8:53 ` [PATCH 06/58] vm: add no-mmu vm_iomap_memory() stub Luis Henriques
2013-09-02  8:53 ` [PATCH 07/58] iwl4965: set power mode early Luis Henriques
2013-09-02  8:53 ` [PATCH 08/58] iwl4965: reset firmware after rfkill off Luis Henriques
2013-09-02  8:53 ` [PATCH 09/58] ASoC: cs42l52: Reorder Min/Max and update to SX_TLV for Beep Volume Luis Henriques
2013-09-02  8:53 ` [PATCH 10/58] can: pcan_usb: fix wrong memcpy() bytes length Luis Henriques
2013-09-02  8:53 ` [PATCH 11/58] ALSA: 6fire: make buffers DMA-able (pcm) Luis Henriques
2013-09-02  8:53 ` [PATCH 12/58] ALSA: 6fire: make buffers DMA-able (midi) Luis Henriques
2013-09-02  8:53 ` [PATCH 13/58] jbd2: Fix use after free after error in jbd2_journal_dirty_metadata() Luis Henriques
2013-09-02  8:53 ` [PATCH 14/58] USB-Serial: Fix error handling of usb_wwan Luis Henriques
2013-09-02  8:54 ` [PATCH 15/58] USB: mos7840: fix big-endian probe Luis Henriques
2013-09-02  8:54 ` [PATCH 16/58] USB: adutux: fix big-endian device-type reporting Luis Henriques
2013-09-02  8:54 ` [PATCH 17/58] USB: ti_usb_3410_5052: fix big-endian firmware handling Luis Henriques
2013-09-02  8:54 ` [PATCH 18/58] ARM: 7809/1: perf: fix event validation for software group leaders Luis Henriques
2013-09-02  8:54 ` Luis Henriques [this message]
2013-09-02  8:54 ` [PATCH 20/58] m68k: Truncate base in do_div() Luis Henriques
2013-09-02  8:54 ` [PATCH 21/58] usb: add two quirky touchscreen Luis Henriques
2013-09-02  8:54 ` [PATCH 22/58] USB: mos7720: fix broken control requests Luis Henriques
2013-09-02  8:54 ` [PATCH 23/58] USB: keyspan: fix null-deref at disconnect and release Luis Henriques
2013-09-02  8:54 ` [PATCH 24/58] MIPS: Expose missing pci_io{map,unmap} declarations Luis Henriques
2013-09-02  8:54 ` [PATCH 25/58] microblaze: Update microblaze defconfigs Luis Henriques
2013-09-02  8:54 ` [PATCH 26/58] sound: Fix make allmodconfig on MIPS Luis Henriques
2013-09-02  8:54 ` [PATCH 27/58] sound: Fix make allmodconfig on MIPS correctly Luis Henriques
2013-09-02  8:54 ` [PATCH 28/58] alpha: makefile: don't enforce small data model for kernel builds Luis Henriques
2013-09-02  8:54 ` [PATCH 29/58] MIPS: Rewrite pfn_valid to work in modules, too Luis Henriques
2013-09-02  8:54 ` [PATCH 30/58] xtensa: fix linker script transformation for .text.unlikely Luis Henriques
2013-09-02  8:54 ` [PATCH 31/58] wusbcore: fix kernel panic when disconnecting a wireless USB->serial device Luis Henriques
2013-09-02  8:54 ` [PATCH 32/58] ARM: 7810/1: perf: Fix array out of bounds access in armpmu_map_hw_event() Luis Henriques
2013-09-02  8:54 ` [PATCH 33/58] iwlwifi: dvm: fix calling ieee80211_chswitch_done() with NULL Luis Henriques
2013-09-02  8:54 ` [PATCH 34/58] iwlwifi: pcie: disable L1 Active after pci_enable_device Luis Henriques
2013-09-02  8:54 ` [PATCH 35/58] zd1201: do not use stack as URB transfer_buffer Luis Henriques
2013-09-02  8:54 ` [PATCH 36/58] Hostap: copying wrong data prism2_ioctl_giwaplist() Luis Henriques
2013-09-02  8:54 ` [PATCH 37/58] ARM: at91/DT: fix at91sam9n12ek memory node Luis Henriques
2013-09-02  8:54 ` [PATCH 38/58] drm/i915: Invalidate TLBs for the rings after a reset Luis Henriques
2013-09-02  8:54 ` [PATCH 39/58] libata: apply behavioral quirks to sil3826 PMP Luis Henriques
2013-09-02  8:54 ` [PATCH 40/58] ARM: davinci: nand: specify ecc strength Luis Henriques
2013-09-02  8:54 ` [PATCH 41/58] ARM: 7816/1: CONFIG_KUSER_HELPERS: fix help text Luis Henriques
2013-09-02  8:54 ` [PATCH 42/58] sata_fsl: save irqs while coalescing Luis Henriques
2013-09-02  8:54 ` [PATCH 43/58] xen/events: initialize local per-cpu mask for all possible events Luis Henriques
2013-09-02  8:54 ` [PATCH 44/58] of: fdt: fix memory initialization for expanded DT Luis Henriques
2013-09-02  8:54 ` [PATCH 45/58] [SCSI] zfcp: fix lock imbalance by reworking request queue locking Luis Henriques
2013-09-02  8:54 ` [PATCH 46/58] [SCSI] zfcp: fix schedule-inside-lock in scsi_device list loops Luis Henriques
2013-09-02  8:54 ` [PATCH 47/58] nilfs2: remove double bio_put() in nilfs_end_bio_write() for BIO_EOPNOTSUPP error Luis Henriques
2013-09-02  8:54 ` [PATCH 48/58] nilfs2: fix issue with counting number of bio requests for BIO_EOPNOTSUPP error detection Luis Henriques
2013-09-02  8:54 ` [PATCH 49/58] Bluetooth: Add support for Atheros [0cf3:3121] Luis Henriques
2013-09-02  8:54 ` [PATCH 50/58] efivars: explicitly calculate length of VariableName Luis Henriques
2013-09-02  8:54 ` [PATCH 51/58] workqueue: fix possible stall on try_to_grab_pending() of a delayed work item Luis Henriques
2013-09-02  8:54 ` [PATCH 52/58] x86/xen: do not identity map UNUSABLE regions in the machine E820 Luis Henriques
2013-09-02  8:54 ` [PATCH 53/58] jfs: fix readdir cookie incompatibility with NFSv4 Luis Henriques
2013-09-02  8:54 ` [PATCH 54/58] powerpc: Don't Oops when accessing /proc/powerpc/lparcfg without hypervisor Luis Henriques
2013-09-02  8:54 ` [PATCH 55/58] powerpc: Work around gcc miscompilation of __pa() on 64-bit Luis Henriques
2013-09-02  8:54 ` [PATCH 56/58] powerpc/hvsi: Increase handshake timeout from 200ms to 400ms Luis Henriques
2013-09-02  8:54 ` [PATCH 57/58] drivers/base/memory.c: fix show_mem_removable() to handle missing sections Luis Henriques
2013-09-02  8:54 ` [PATCH 58/58] x86 get_unmapped_area: Access mmap_legacy_base through mm_struct member Luis Henriques

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1378112083-9475-20-git-send-email-luis.henriques@canonical.com \
    --to=luis.henriques@canonical.com \
    --cc=geert@linux-m68k.org \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®