/* Ask for all the pages supported by this device */
result = scsi_vpd_inquiry(sdev, buf, 0, buf_len);
if (result)
+
+From 1e2ee49f7f1b79f0b14884fe6a602f0411b39552 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods@redhat.com>
+Date: Tue, 6 May 2014 12:50:10 -0700
+Subject: fanotify: fix -EOVERFLOW with large files on 64-bit
+
+On 64-bit systems, O_LARGEFILE is automatically added to flags inside
+the open() syscall (also openat(), blkdev_open(), etc). Userspace
+therefore defines O_LARGEFILE to be 0 - you can use it, but it's a
+no-op. Everything should be O_LARGEFILE by default.
+
+But: when fanotify does create_fd() it uses dentry_open(), which skips
+all that. And userspace can't set O_LARGEFILE in fanotify_init()
+because it's defined to 0. So if fanotify gets an event regarding a
+large file, the read() will just fail with -EOVERFLOW.
+
+This patch adds O_LARGEFILE to fanotify_init()'s event_f_flags on 64-bit
+systems, using the same test as open()/openat()/etc.
+
+Addresses https://bugzilla.redhat.com/show_bug.cgi?id=696821
+
+Signed-off-by: Will Woods <wwoods@redhat.com>
+Acked-by: Eric Paris <eparis@redhat.com>
+Reviewed-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
+index 4e565c8..732648b 100644
+--- a/fs/notify/fanotify/fanotify_user.c
++++ b/fs/notify/fanotify/fanotify_user.c
+@@ -698,6 +698,8 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
+ }
+ group->overflow_event = &oevent->fse;
+
++ if (force_o_largefile())
++ event_f_flags |= O_LARGEFILE;
+ group->fanotify_data.f_flags = event_f_flags;
+ #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
+ spin_lock_init(&group->fanotify_data.access_lock);
+--- a/drivers/pnp/pnpbios/bioscalls.c 2014-03-31 05:40:15.000000000 +0200
++++ b/drivers/pnp/pnpbios/bioscalls.c 2015-08-30 20:34:09.000000000 +0200
+@@ -21,7 +21,7 @@
+
+ #include "pnpbios.h"
+
+-static struct {
++__visible struct {
+ u16 offset;
+ u16 segment;
+ } pnp_bios_callpoint;
+@@ -37,10 +37,11 @@
+ * kernel begins at offset 3GB...
+ */
+
+-asmlinkage void pnp_bios_callfunc(void);
++asmlinkage __visible void pnp_bios_callfunc(void);
+
+ __asm__(".text \n"
+ __ALIGN_STR "\n"
++ ".globl pnp_bios_callfunc\n"
+ "pnp_bios_callfunc:\n"
+ " pushl %edx \n"
+ " pushl %ecx \n"
+@@ -66,9 +67,9 @@
+ * after PnP BIOS oopses.
+ */
+
+-u32 pnp_bios_fault_esp;
+-u32 pnp_bios_fault_eip;
+-u32 pnp_bios_is_utter_crap = 0;
++__visible u32 pnp_bios_fault_esp;
++__visible u32 pnp_bios_fault_eip;
++__visible u32 pnp_bios_is_utter_crap = 0;
+
+ static spinlock_t pnp_bios_lock;
+