]> git.pld-linux.org Git - packages/kernel.git/blob - kernel-small_fixes.patch
- rel 2; disable broken AUDITSYSCALL, https://lkml.org/lkml/2014/5/28/679
[packages/kernel.git] / kernel-small_fixes.patch
1 --- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100
2 +++ linux-2.6.33/scripts/mod/modpost.c  2010-03-07 14:26:47.242168558 +0100
3 @@ -15,7 +15,8 @@
4  #include <stdio.h>
5  #include <ctype.h>
6  #include "modpost.h"
7 -#include "../../include/generated/autoconf.h"
8 +// PLD architectures don't use CONFIG_SYMBOL_PREFIX
9 +//#include "../../include/generated/autoconf.h"
10  #include "../../include/linux/license.h"
11  
12  /* Some toolchains use a `_' prefix for all user symbols. */
13
14 --- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~       2011-07-22 04:17:23.000000000 +0200
15 +++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh        2011-08-25 21:26:04.799150642 +0200
16 @@ -9,6 +9,12 @@
17                         $cc -print-file-name=lib${lib}.${ext} | grep -q /
18                         if [ $? -eq 0 ]; then
19                                 echo "-l${lib}"
20 +                               for libt in tinfow tinfo ; do
21 +                                       $cc -print-file-name=lib${libt}.${ext} | grep -q /
22 +                                       if [ $? -eq 0 ]; then
23 +                                               echo "-l${libt}"
24 +                                       fi
25 +                               done
26                                 exit
27                         fi
28                 done
29
30 diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
31 index 7a0c800..ec5ebbb 100644
32 --- a/drivers/net/ethernet/realtek/r8169.c
33 +++ b/drivers/net/ethernet/realtek/r8169.c
34 @@ -6927,6 +6927,14 @@ rtl_init_one(struct pci_dev *pdev, const
35         for (i = 0; i < ETH_ALEN; i++)
36                 dev->dev_addr[i] = RTL_R8(MAC0 + i);
37  
38 +       if (!is_valid_ether_addr(dev->dev_addr)) {
39 +               /* Report it and use a random ethernet address instead */
40 +               netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
41 +               random_ether_addr(dev->dev_addr);
42 +               netdev_info(dev, "Using random MAC address: %pM\n",
43 +                               dev->dev_addr);
44 +       }
45 +
46         SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops);
47         dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
48  
49 [PATCH] SCSI: Don't attempt to send extended INQUIRY command if skip_vpd_pages is set
50
51 If a device has the skip_vpd_pages flag set we should simply fail the
52 scsi_get_vpd_page() call.
53
54 Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
55 Acked-by: Alan Stern <stern@rowland.harvard.edu>
56 Tested-by: Stuart Foster <smf.linux@ntlworld.com>
57 Cc: stable@vger.kernel.org
58
59 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
60 index 3b1ea34..eaa808e 100644
61 --- a/drivers/scsi/scsi.c
62 +++ b/drivers/scsi/scsi.c
63 @@ -1031,6 +1031,9 @@
64  {
65         int i, result;
66  
67 +       if (sdev->skip_vpd_pages)
68 +           goto fail;
69 +
70         /* Ask for all the pages supported by this device */
71         result = scsi_vpd_inquiry(sdev, buf, 0, buf_len);
72         if (result)
73
74 David Vrabel identified a regression when using automatic NUMA balancing
75 under Xen whereby page table entries were getting corrupted due to the
76 use of native PTE operations. Quoting him
77
78         Xen PV guest page tables require that their entries use machine
79         addresses if the preset bit (_PAGE_PRESENT) is set, and (for
80         successful migration) non-present PTEs must use pseudo-physical
81         addresses.  This is because on migration MFNs in present PTEs are
82         translated to PFNs (canonicalised) so they may be translated back
83         to the new MFN in the destination domain (uncanonicalised).
84
85         pte_mknonnuma(), pmd_mknonnuma(), pte_mknuma() and pmd_mknuma()
86         set and clear the _PAGE_PRESENT bit using pte_set_flags(),
87         pte_clear_flags(), etc.
88
89         In a Xen PV guest, these functions must translate MFNs to PFNs
90         when clearing _PAGE_PRESENT and translate PFNs to MFNs when setting
91         _PAGE_PRESENT.
92
93 His suggested fix converted p[te|md]_[set|clear]_flags to using
94 paravirt-friendly ops but this is overkill. He suggested an alternative of
95 using p[te|md]_modify in the NUMA page table operations but this is does
96 more work than necessary and would require looking up a VMA for protections.
97
98 This patch modifies the NUMA page table operations to use paravirt friendly
99 operations to set/clear the flags of interest. Unfortunately this will take
100 a performance hit when updating the PTEs on CONFIG_PARAVIRT but I do not
101 see a way around it that does not break Xen.
102
103 Cc: stable@vger.kernel.org
104 Signed-off-by: Mel Gorman <mgorman@suse.de>
105 Acked-by: David Vrabel <david.vrabel@citrix.com>
106 Tested-by: David Vrabel <david.vrabel@citrix.com>
107 ---
108  include/asm-generic/pgtable.h | 31 +++++++++++++++++++++++--------
109  1 file changed, 23 insertions(+), 8 deletions(-)
110
111 diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
112 index 34c7bdc..38a7437 100644
113 --- a/include/asm-generic/pgtable.h
114 +++ b/include/asm-generic/pgtable.h
115 @@ -680,24 +680,35 @@ static inline int pmd_numa(pmd_t pmd)
116  #ifndef pte_mknonnuma
117  static inline pte_t pte_mknonnuma(pte_t pte)
118  {
119 -       pte = pte_clear_flags(pte, _PAGE_NUMA);
120 -       return pte_set_flags(pte, _PAGE_PRESENT|_PAGE_ACCESSED);
121 +       pteval_t val = pte_val(pte);
122 +
123 +       val &= ~_PAGE_NUMA;
124 +       val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
125 +       return __pte(val);
126  }
127  #endif
128  
129  #ifndef pmd_mknonnuma
130  static inline pmd_t pmd_mknonnuma(pmd_t pmd)
131  {
132 -       pmd = pmd_clear_flags(pmd, _PAGE_NUMA);
133 -       return pmd_set_flags(pmd, _PAGE_PRESENT|_PAGE_ACCESSED);
134 +       pmdval_t val = pmd_val(pmd);
135 +
136 +       val &= ~_PAGE_NUMA;
137 +       val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
138 +
139 +       return __pmd(val);
140  }
141  #endif
142  
143  #ifndef pte_mknuma
144  static inline pte_t pte_mknuma(pte_t pte)
145  {
146 -       pte = pte_set_flags(pte, _PAGE_NUMA);
147 -       return pte_clear_flags(pte, _PAGE_PRESENT);
148 +       pteval_t val = pte_val(pte);
149 +
150 +       val &= ~_PAGE_PRESENT;
151 +       val |= _PAGE_NUMA;
152 +
153 +       return __pte(val);
154  }
155  #endif
156  
157 @@ -716,8 +727,12 @@ static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
158  #ifndef pmd_mknuma
159  static inline pmd_t pmd_mknuma(pmd_t pmd)
160  {
161 -       pmd = pmd_set_flags(pmd, _PAGE_NUMA);
162 -       return pmd_clear_flags(pmd, _PAGE_PRESENT);
163 +       pmdval_t val = pmd_val(pmd);
164 +
165 +       val &= ~_PAGE_PRESENT;
166 +       val |= _PAGE_NUMA;
167 +
168 +       return __pmd(val);
169  }
170  #endif
171  
172 -- 
173 1.8.4.5
174
175 --
176 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
177 the body of a message to majordomo@vger.kernel.org
178 More majordomo info at  http://vger.kernel.org/majordomo-info.html
179 Please read the FAQ at  http://www.tux.org/lkml/
180 From 1e2ee49f7f1b79f0b14884fe6a602f0411b39552 Mon Sep 17 00:00:00 2001
181 From: Will Woods <wwoods@redhat.com>
182 Date: Tue, 6 May 2014 12:50:10 -0700
183 Subject: fanotify: fix -EOVERFLOW with large files on 64-bit
184
185 On 64-bit systems, O_LARGEFILE is automatically added to flags inside
186 the open() syscall (also openat(), blkdev_open(), etc).  Userspace
187 therefore defines O_LARGEFILE to be 0 - you can use it, but it's a
188 no-op.  Everything should be O_LARGEFILE by default.
189
190 But: when fanotify does create_fd() it uses dentry_open(), which skips
191 all that.  And userspace can't set O_LARGEFILE in fanotify_init()
192 because it's defined to 0.  So if fanotify gets an event regarding a
193 large file, the read() will just fail with -EOVERFLOW.
194
195 This patch adds O_LARGEFILE to fanotify_init()'s event_f_flags on 64-bit
196 systems, using the same test as open()/openat()/etc.
197
198 Addresses https://bugzilla.redhat.com/show_bug.cgi?id=696821
199
200 Signed-off-by: Will Woods <wwoods@redhat.com>
201 Acked-by: Eric Paris <eparis@redhat.com>
202 Reviewed-by: Jan Kara <jack@suse.cz>
203 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
204 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
205
206 diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
207 index 4e565c8..732648b 100644
208 --- a/fs/notify/fanotify/fanotify_user.c
209 +++ b/fs/notify/fanotify/fanotify_user.c
210 @@ -698,6 +698,8 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags)
211         }
212         group->overflow_event = &oevent->fse;
213  
214 +       if (force_o_largefile())
215 +               event_f_flags |= O_LARGEFILE;
216         group->fanotify_data.f_flags = event_f_flags;
217  #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
218         spin_lock_init(&group->fanotify_data.access_lock);
219 -- 
220 cgit v0.10.1
221
222 From 50c6e282bdf5e8dabf8d7cf7b162545a55645fd9 Mon Sep 17 00:00:00 2001
223 From: Christoph Hellwig <hch@lst.de>
224 Date: Sun, 4 May 2014 13:03:32 +0200
225 Subject: posix_acl: handle NULL ACL in posix_acl_equiv_mode
226
227 Various filesystems don't bother checking for a NULL ACL in
228 posix_acl_equiv_mode, and thus can dereference a NULL pointer when it
229 gets passed one. This usually happens from the NFS server, as the ACL tools
230 never pass a NULL ACL, but instead of one representing the mode bits.
231
232 Instead of adding boilerplat to all filesystems put this check into one place,
233 which will allow us to remove the check from other filesystems as well later
234 on.
235
236 Signed-off-by: Christoph Hellwig <hch@lst.de>
237 Reported-by: Ben Greear <greearb@candelatech.com>
238 Reported-by: Marco Munderloh <munderl@tnt.uni-hannover.de>,
239 Cc: Chuck Lever <chuck.lever@oracle.com>
240 Cc: stable@vger.kernel.org
241 Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
242
243 diff --git a/fs/posix_acl.c b/fs/posix_acl.c
244 index 9e363e4..0855f77 100644
245 --- a/fs/posix_acl.c
246 +++ b/fs/posix_acl.c
247 @@ -246,6 +246,12 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p)
248         umode_t mode = 0;
249         int not_equiv = 0;
250  
251 +       /*
252 +        * A null ACL can always be presented as mode bits.
253 +        */
254 +       if (!acl)
255 +               return 0;
256 +
257         FOREACH_ACL_ENTRY(pa, acl, pe) {
258                 switch (pa->e_tag) {
259                         case ACL_USER_OBJ:
260 -- 
261 cgit v0.10.1
262
This page took 0.046344 seconds and 3 git commands to generate.