linux/drivers
Kirill A. Shutemov 58b18a2a3e drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration
commit 461c7fa126 upstream.

Reduced testcase:

    #include <fcntl.h>
    #include <unistd.h>
    #include <sys/mman.h>
    #include <numaif.h>

    #define SIZE 0x2000

    int main()
    {
        int fd;
        void *p;

        fd = open("/dev/sg0", O_RDWR);
        p = mmap(NULL, SIZE, PROT_EXEC, MAP_PRIVATE | MAP_LOCKED, fd, 0);
        mbind(p, SIZE, 0, NULL, 0, MPOL_MF_MOVE);
        return 0;
    }

We shouldn't try to migrate pages in sg VMA as we don't have a way to
update Sg_scatter_hold::pages accordingly from mm core.

Let's mark the VMA as VM_IO to indicate to mm core that the VMA is not
migratable.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Doug Gilbert <dgilbert@interlog.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Shiraz Hashim <shashim@codeaurora.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: syzkaller <syzkaller@googlegroups.com>
Cc: Kostya Serebryany <kcc@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2016-02-25 00:18:44 +00:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi ACPI: Use correct IRQ when uninstalling ACPI interrupt handler 2015-12-13 17:48:55 +00:00
amba ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
ata libata: fix sff host state machine locking while polling 2016-02-25 00:18:41 +00:00
atm atm: fore200e.c: Cleaning up uninitialized variables 2014-06-02 17:11:03 -07:00
auxdisplay auxdisplay: ks0108: fix refcount 2015-09-28 10:21:35 +01:00
base firmware: actually return NULL on failed request_firmware_nowait() 2016-02-02 19:48:28 +00:00
bcma bcma: gpio: register 32 GPIOs on BCM5357 2014-03-27 14:20:04 -04:00
block zram: try vmalloc() after kmalloc() 2016-02-02 19:09:48 +00:00
bluetooth Bluetooth: Add support of Toshiba Broadcom based devices 2016-02-02 17:38:33 +00:00
bus bus: omap_l3_noc: Correct returning IRQ_HANDLED unconditionally in the irq handler 2015-02-04 10:57:52 +00:00
cdrom Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-06-11 08:41:17 -07:00
char ipmi: move timer init to before irq is setup 2016-01-18 22:27:25 +00:00
clk clk: st: avoid uninitialized variable use 2016-02-02 19:27:05 +00:00
clocksource clocksource/drivers/vt8500: Increase the minimum delta 2016-02-02 19:09:28 +00:00
connector connector: bump skb->users before callback invocation 2016-01-28 10:14:29 +00:00
cpufreq intel_pstate: Fix overflow in busy_scaled due to long delay 2015-10-19 12:16:31 +01:00
cpuidle cpuidle: remove state_count field from struct cpuidle_device 2015-04-27 16:16:34 +01:00
crypto crypto: talitos - Fix timing leak in ESP ICV verification 2016-01-05 11:22:18 +00:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: remove checks for CONFIG_EXYNOS_ASV 2014-05-24 22:33:51 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: dw: fix cyclic transfer callbacks 2016-02-02 19:09:38 +00:00
edac EDAC: Robustify workqueues destruction 2016-02-02 17:38:36 +00:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: palmas: Use devm_extcon_dev_allocate for extcon_dev 2014-04-29 09:52:12 +09:00
firewire firewire: ohci: fix JMicron JMB38x IT context discovery 2015-12-13 17:49:09 +00:00
firmware firmware: dmi_scan: Fix UUID endianness for SMBIOS >= 2.6 2016-01-25 10:44:07 +00:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: gpio-kempld: Fix get_direction return value 2015-06-03 13:27:19 +01:00
gpu drm/i915/dp: fall back to 18 bpp when sink capability is unknown 2016-02-25 00:18:37 +00:00
hid HID: usbhid: fix recursive deadlock 2016-02-03 10:27:53 +00:00
hsi hsi: omap_ssi_port: Prevent warning if cawake_gpio is not defined. 2015-12-13 17:49:33 +00:00
hv Drivers: hv: vmbus: Don't wait after requesting offers 2015-05-05 11:09:38 +01:00
hwmon hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most chips 2015-10-06 11:52:27 +01:00
hwspinlock A single patch from Vincent extending OMAP's hwspinlock support to OMAP5. 2013-05-07 14:01:27 -07:00
i2c i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs 2016-01-25 10:43:32 +00:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2014-07-21 22:44:24 -07:00
idle intel_idle: fix IVT idle state table setting 2014-04-21 23:36:07 +02:00
iio iio: pressure: mpl115: fix temperature offset sign 2016-02-25 00:18:39 +00:00
infiniband iw_cxgb3: Fix incorrectly returning error on success 2016-02-16 10:55:27 +00:00
input Input: elantech - mark protocols v2 and v3 as semi-mt 2016-02-02 19:09:29 +00:00
iommu iommu/vt-d: Fix ATSR handling for Root-Complex integrated endpoints 2015-12-13 17:48:45 +00:00
ipack ipack: convert bus code to use dev_groups 2013-10-16 18:40:57 -07:00
irqchip irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB 2016-01-11 10:50:17 +00:00
isdn ser_gigaset: fix deallocation of platform device structure 2016-01-25 10:43:51 +00:00
leds leds / PM: fix hibernation on arm when gpio-led used with CPU led trigger 2015-07-09 14:36:01 +01:00
lguest lguest: fix out-by-one error in address checking. 2015-06-03 14:30:03 +01:00
macintosh windfarm: decrement client count when unregistering 2015-09-30 13:20:39 +01:00
mailbox drivers/mailbox/omap: make mbox->irq signed for error handling 2014-01-23 16:36:53 -08:00
mcb mcb: Add support for shared PCI IRQs 2014-05-27 17:38:11 -07:00
md dm snapshot: fix hung bios when copy error occurs 2016-02-02 19:09:21 +00:00
media [media] usbvision: fix crash on detecting device with invalid configuration 2016-02-16 10:55:25 +00:00
memory memory: mvebu-devbus: add a devbus, keep-config property 2014-04-29 13:17:10 +00:00
memstick memstick: mspro_block: add missing curly braces 2015-05-06 11:33:10 +01:00
message mptfusion: enable no_write_same for vmware scsi disks 2014-10-30 09:40:12 -07:00
mfd mfd: twl6040: Fix deferred probe handling for clk32k 2015-12-13 17:49:39 +00:00
misc mei: make device disabled on stop unconditionally 2015-03-18 15:06:06 +00:00
mmc mmc: debugfs: correct wrong voltage value 2016-02-03 00:04:01 +00:00
mtd mtd: nand: remove unused and buggy get_platform_nandchip() helper function 2016-02-02 19:35:00 +00:00
net ath9k_htc: check for underflow in ath9k_htc_rx_msg() 2016-02-02 19:27:47 +00:00
nfc NFC: microread: Potential overflows in microread_target_discovered() 2014-10-05 13:41:05 -07:00
ntb ntb: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-04-07 10:59:20 -07:00
nubus kernel/printk: use symbolic defines for console loglevels 2014-06-04 16:54:17 -07:00
of of/fdt: fix error checking for earlycon address 2015-12-13 17:49:40 +00:00
oprofile oprofile, nmi-timer: Fix CPU hotplug callback registration 2014-03-20 13:43:46 +01:00
parisc parisc iommu: fix panic due to trying to allocate too large region 2016-01-18 22:27:29 +00:00
parport parport: fix menu breakage 2014-07-25 18:00:23 -07:00
pci PCI/AER: Flush workqueue on device remove to avoid use-after-free 2016-02-25 00:18:35 +00:00
pcmcia Disable write buffering on Toshiba ToPIC95 2015-07-15 10:00:33 +01:00
phy phy: twl4030-usb: remove incorrect pm_runtime_get_sync() in probe function. 2015-07-15 10:01:23 +01:00
pinctrl pinctrl: bcm2835: Fix memory leak in error path 2016-02-02 19:38:16 +00:00
platform intel_scu_ipcutil: underflow in scu_reg_access() 2016-02-25 00:18:39 +00:00
pnp ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage 2015-07-15 10:01:34 +01:00
power power: test_power: correctly handle empty writes 2016-02-02 19:47:55 +00:00
powercap powercap / RAPL: fix BIOS lock check 2016-01-25 10:43:36 +00:00
pps drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr 2013-11-13 12:09:35 +09:00
ps3 ps3-vuart: don't use PREPARE_WORK 2014-03-07 10:24:48 -05:00
ptp ptp: ptp_pch depends on x86_32 2014-06-17 15:43:48 -07:00
pwm pwm: Fix period and polarity in pwm_get() for non-perfect matches 2014-10-05 13:40:52 -07:00
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-07-30 17:16:13 -07:00
regulator regulator: pbias: Fix broken pbias disable functionality 2015-09-28 10:21:40 +01:00
remoteproc remoteproc: avoid stack overflow in debugfs file 2016-01-05 12:08:23 +00:00
reset reset: sunxi: fix spinlock initialization 2015-01-22 16:33:34 +00:00
rpmsg A small pull request consisting of: 2013-05-07 14:02:00 -07:00
rtc rtc: ds1307: Fix alarm programming for mcp794xx 2015-12-13 17:49:45 +00:00
s390 qeth: initialize net_device with carrier off 2016-02-16 10:55:27 +00:00
sbus bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 2014-08-14 10:09:44 +08:00
scsi drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration 2016-02-25 00:18:44 +00:00
sfi SFI / ACPI: Fix warnings reported during builds with W=1 2013-12-07 01:24:33 +01:00
sh SH Driver Update for v3.16 2014-06-06 11:44:09 -07:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc: qcom: fix of_device_id table 2014-05-26 21:27:09 +02:00
spi spi: fix parent-device reference leak 2016-01-25 10:43:39 +00:00
spmi spmi: pm: drop bus-level PM suspend/resume routines 2014-03-08 22:15:52 -08:00
ssb Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
staging staging/speakup: Use tty_ldisc_ref() for paste kworker 2016-02-17 10:22:43 +00:00
target target: Fix WRITE_SAME/DISCARD conversion to linux 512b sectors 2016-02-25 00:18:38 +00:00
tc TC: Handle device_register() errors. 2014-06-26 10:48:23 +01:00
thermal thermal: exynos: Fix unbalanced regulator disable on probe failure 2015-12-13 17:49:07 +00:00
tty n_tty: Fix unsafe reference to "other" ldisc 2016-02-17 10:22:43 +00:00
uio Revert "uio: fix vma io range check in mmap" 2014-06-17 16:07:08 -07:00
usb USB: option: fix Cinterion AHxx enumeration 2016-02-17 10:22:36 +00:00
uwb uwb: init beacon cache entry before registering uwb device 2014-10-05 13:40:58 -07:00
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-16 14:34:28 +00:00
vhost vhost: actually track log eventfd file 2015-08-25 10:13:39 +01:00
video video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented 2016-01-25 10:43:33 +00:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio_pci: fix use after free on release 2016-02-17 10:22:39 +00:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme_tsi148: Utilize to_pci_dev() macro 2014-04-16 14:08:37 -07:00
w1 w1_therm reference count family data 2015-07-09 14:36:07 +01:00
watchdog watchdog: omap: assert the counter being stopped before reprogramming 2015-07-15 10:01:29 +01:00
xen xen/pciback: Don't allow MSI-X ops if PCI_COMMAND_MEMORY is not set. 2016-01-25 10:43:47 +00:00
zorro zorro/UAPI: Use proper types (endianness/size) in <linux/zorro.h> 2013-11-26 11:09:09 +01:00
Kconfig soc: Introduce drivers/soc place-holder for SOC specific drivers 2014-05-23 11:37:46 -05:00
Makefile Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00