From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Helge Deller <deller@gmx.de>
Subject: [PATCH 3.10 29/52] parisc: fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address
Date: Tue, 10 Dec 2013 00:01:02 -0800 [thread overview]
Message-ID: <20131210075956.270356938@linuxfoundation.org> (raw)
In-Reply-To: <20131210075954.196229872@linuxfoundation.org>
3.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Helge Deller <deller@gmx.de>
commit 0576da2c08e3d332f1b0653030d28ab804585ab6 upstream.
locale-gen on Debian showed a strange problem on parisc:
mmap2(NULL, 536870912, PROT_NONE, MAP_SHARED, 3, 0) = 0x42a54000
mmap2(0x42a54000, 103860, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 3, 0) = -1 EINVAL (Invalid argument)
Basically it was just trying to re-mmap() a file at the same address
which it was given by a previous mmap() call. But this remapping failed
with EINVAL.
The problem is, that when MAP_FIXED and MAP_SHARED flags were used, we didn't
included the mapping-based offset when we verified the alignment of the given
fixed address against the offset which we calculated it in the previous call.
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/parisc/kernel/sys_parisc.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
--- a/arch/parisc/kernel/sys_parisc.c
+++ b/arch/parisc/kernel/sys_parisc.c
@@ -61,8 +61,15 @@ static int get_offset(struct address_spa
return (unsigned long) mapping >> 8;
}
-static unsigned long get_shared_area(struct address_space *mapping,
- unsigned long addr, unsigned long len, unsigned long pgoff)
+static unsigned long shared_align_offset(struct file *filp, unsigned long pgoff)
+{
+ struct address_space *mapping = filp ? filp->f_mapping : NULL;
+
+ return (get_offset(mapping) + pgoff) << PAGE_SHIFT;
+}
+
+static unsigned long get_shared_area(struct file *filp, unsigned long addr,
+ unsigned long len, unsigned long pgoff)
{
struct vm_unmapped_area_info info;
@@ -71,7 +78,7 @@ static unsigned long get_shared_area(str
info.low_limit = PAGE_ALIGN(addr);
info.high_limit = TASK_SIZE;
info.align_mask = PAGE_MASK & (SHMLBA - 1);
- info.align_offset = (get_offset(mapping) + pgoff) << PAGE_SHIFT;
+ info.align_offset = shared_align_offset(filp, pgoff);
return vm_unmapped_area(&info);
}
@@ -82,20 +89,18 @@ unsigned long arch_get_unmapped_area(str
return -ENOMEM;
if (flags & MAP_FIXED) {
if ((flags & MAP_SHARED) &&
- (addr - (pgoff << PAGE_SHIFT)) & (SHMLBA - 1))
+ (addr - shared_align_offset(filp, pgoff)) & (SHMLBA - 1))
return -EINVAL;
return addr;
}
if (!addr)
addr = TASK_UNMAPPED_BASE;
- if (filp) {
- addr = get_shared_area(filp->f_mapping, addr, len, pgoff);
- } else if(flags & MAP_SHARED) {
- addr = get_shared_area(NULL, addr, len, pgoff);
- } else {
+ if (filp || (flags & MAP_SHARED))
+ addr = get_shared_area(filp, addr, len, pgoff);
+ else
addr = get_unshared_area(addr, len);
- }
+
return addr;
}
next prev parent reply other threads:[~2013-12-10 8:01 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-10 8:00 [PATCH 3.10 00/52] 3.10.24-stable review Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 01/52] ALSA: hda - Fix silent output on ASUS W7J laptop Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 02/52] ALSA: hda - Another fixup for ASUS laptop with ALC660 codec Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 03/52] ALSA: hda - Fix headset mic input after muted internal mic (Dell/Realtek) Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 04/52] ALSA: hda - Fix silent output on MacBook Air 2,1 Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 05/52] ALSA: hda - Add mono speaker quirk for Dell Inspiron 5439 Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 06/52] crypto: s390 - Fix aes-xts parameter corruption Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 07/52] crypto: scatterwalk - Set the chain pointer indication bit Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 08/52] crypto: ccm - Fix handling of zero plaintext when computing mac Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 09/52] crypto: authenc - Find proper IV address in ablkcipher callback Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 10/52] ARM: fix booting low-vectors machines Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 11/52] ARM: footbridge: fix VGA initialisation Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 12/52] ARM: footbridge: fix EBSA285 LEDs Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 13/52] ARM: at91: sama5d3: reduce TWI internal clock frequency Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 14/52] ARM: mvebu: use the virtual CPU registers to access coherency registers Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 15/52] ASoC: wm8990: Mark the register map as dirty when powering down Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 16/52] ASoC: wm8731: fix dsp mode configuration Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 17/52] vfs: fix subtle use-after-free of pipe_inode_info Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 18/52] can: sja1000: fix {pre,post}_irq() handling and IRQ handler return value Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 19/52] can: c_can: dont call pm_runtime_get_sync() from interrupt context Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 20/52] SCSI: bfa: Fix crash when symb name set for offline vport Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 21/52] SCSI: enclosure: fix WARN_ON in dual path device removing Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 22/52] SCSI: libsas: fix usage of ata_tf_to_fis Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 23/52] SCSI: hpsa: do not discard scsi status on aborted commands Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 24/52] SCSI: hpsa: return 0 from driver probe function on success, not 1 Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 25/52] net: smc91: fix crash regression on the versatile Greg Kroah-Hartman
2013-12-10 8:00 ` [PATCH 3.10 26/52] NFSv4: Update list of irrecoverable errors on DELEGRETURN Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 27/52] time: Fix 1ns/tick drift w/ GENERIC_TIME_VSYSCALL_OLD Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 28/52] powerpc/gpio: Fix the wrong GPIO input data on MPC8572/MPC8536 Greg Kroah-Hartman
2013-12-10 8:01 ` Greg Kroah-Hartman [this message]
2013-12-10 8:01 ` [PATCH 3.10 30/52] xen/gnttab: leave lazy MMU mode in the case of a m2p override failure Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 31/52] Update of blkg_stat and blkg_rwstat may happen in bh context. While u64_stats_fetch_retry is only preempt_disable on 32bit UP system. This is not enough to avoid preemption by bh and may read strange 64 bit value Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 32/52] irq: Enable all irqs unconditionally in irq_resume Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 33/52] net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 34/52] x86-64, build: Always pass in -mno-sse Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 35/52] SCSI: Disable WRITE SAME for RAID and virtual host adapter drivers Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 36/52] iwlwifi: dvm: dont override mac80211s queue setting Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 37/52] tg3: avoid double-freeing of rx data memory Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 38/52] HID: usbhid: quirk for Synaptics Large Touchccreen Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 39/52] HID: usbhid: quirk for SiS Touchscreen Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 40/52] lib/genalloc.c: fix overflow of ending address of memory chunk Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 41/52] Input: allow deselecting serio drivers even without CONFIG_EXPERT Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 42/52] Input: mousedev - allow disabling " Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 43/52] mei: me: add Lynx Point Wellsburg work station device id Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 44/52] mei: add 9 series PCH mei device ids Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 45/52] USB: pl2303: fixed handling of CS5 setting Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 46/52] USB: ftdi_sio: fixed handling of unsupported CSIZE setting Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 47/52] USB: mos7840: correct handling of CS5 setting Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 48/52] USB: spcp8x5: " Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 49/52] USB: cdc-acm: Added support for the Lenovo RD02-D400 USB Modem Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 50/52] drivers/char/i8k.c: add Dell XPLS L421X Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 51/52] ARM: mvebu: fix second and third PCIe unit of Armada XP mv78260 Greg Kroah-Hartman
2013-12-10 8:01 ` [PATCH 3.10 52/52] ARM: mvebu: second PCIe unit of Armada XP mv78230 is only x1 capable Greg Kroah-Hartman
2013-12-10 17:03 ` [PATCH 3.10 00/52] 3.10.24-stable review Guenter Roeck
2013-12-11 1:17 ` Greg Kroah-Hartman
2013-12-11 1:50 ` Shuah Khan
2013-12-11 21:22 ` Satoru Takeuchi
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=20131210075956.270356938@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=deller@gmx.de \
--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;
as well as URLs for NNTP newsgroup(s).