Contents of /trunk/kernel-alx/patches-3.4/0134-3.4.35-all-fixes.patch
Parent Directory | Revision Log
Revision 2110 -
(show annotations)
(download)
Tue Mar 12 12:15:23 2013 UTC (11 years, 6 months ago) by niro
File size: 46737 byte(s)
Tue Mar 12 12:15:23 2013 UTC (11 years, 6 months ago) by niro
File size: 46737 byte(s)
-sync with upstream
1 | diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt |
2 | index c1601e5..753d18a 100644 |
3 | --- a/Documentation/kernel-parameters.txt |
4 | +++ b/Documentation/kernel-parameters.txt |
5 | @@ -557,6 +557,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. |
6 | UART at the specified I/O port or MMIO address, |
7 | switching to the matching ttyS device later. The |
8 | options are the same as for ttyS, above. |
9 | + hvc<n> Use the hypervisor console device <n>. This is for |
10 | + both Xen and PowerPC hypervisors. |
11 | |
12 | If the device connected to the port is not a TTY but a braille |
13 | device, prepend "brl," before the device type, for instance |
14 | @@ -742,6 +744,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. |
15 | |
16 | earlyprintk= [X86,SH,BLACKFIN] |
17 | earlyprintk=vga |
18 | + earlyprintk=xen |
19 | earlyprintk=serial[,ttySn[,baudrate]] |
20 | earlyprintk=ttySn[,baudrate] |
21 | earlyprintk=dbgp[debugController#] |
22 | @@ -759,6 +762,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. |
23 | The VGA output is eventually overwritten by the real |
24 | console. |
25 | |
26 | + The xen output can only be used by Xen PV guests. |
27 | + |
28 | ekgdboc= [X86,KGDB] Allow early kernel console debugging |
29 | ekgdboc=kbd |
30 | |
31 | diff --git a/arch/x86/kernel/head.c b/arch/x86/kernel/head.c |
32 | index 48d9d4e..992f442 100644 |
33 | --- a/arch/x86/kernel/head.c |
34 | +++ b/arch/x86/kernel/head.c |
35 | @@ -5,8 +5,6 @@ |
36 | #include <asm/setup.h> |
37 | #include <asm/bios_ebda.h> |
38 | |
39 | -#define BIOS_LOWMEM_KILOBYTES 0x413 |
40 | - |
41 | /* |
42 | * The BIOS places the EBDA/XBDA at the top of conventional |
43 | * memory, and usually decreases the reported amount of |
44 | @@ -16,17 +14,30 @@ |
45 | * chipset: reserve a page before VGA to prevent PCI prefetch |
46 | * into it (errata #56). Usually the page is reserved anyways, |
47 | * unless you have no PS/2 mouse plugged in. |
48 | + * |
49 | + * This functions is deliberately very conservative. Losing |
50 | + * memory in the bottom megabyte is rarely a problem, as long |
51 | + * as we have enough memory to install the trampoline. Using |
52 | + * memory that is in use by the BIOS or by some DMA device |
53 | + * the BIOS didn't shut down *is* a big problem. |
54 | */ |
55 | + |
56 | +#define BIOS_LOWMEM_KILOBYTES 0x413 |
57 | +#define LOWMEM_CAP 0x9f000U /* Absolute maximum */ |
58 | +#define INSANE_CUTOFF 0x20000U /* Less than this = insane */ |
59 | + |
60 | void __init reserve_ebda_region(void) |
61 | { |
62 | unsigned int lowmem, ebda_addr; |
63 | |
64 | - /* To determine the position of the EBDA and the */ |
65 | - /* end of conventional memory, we need to look at */ |
66 | - /* the BIOS data area. In a paravirtual environment */ |
67 | - /* that area is absent. We'll just have to assume */ |
68 | - /* that the paravirt case can handle memory setup */ |
69 | - /* correctly, without our help. */ |
70 | + /* |
71 | + * To determine the position of the EBDA and the |
72 | + * end of conventional memory, we need to look at |
73 | + * the BIOS data area. In a paravirtual environment |
74 | + * that area is absent. We'll just have to assume |
75 | + * that the paravirt case can handle memory setup |
76 | + * correctly, without our help. |
77 | + */ |
78 | if (paravirt_enabled()) |
79 | return; |
80 | |
81 | @@ -37,19 +48,23 @@ void __init reserve_ebda_region(void) |
82 | /* start of EBDA area */ |
83 | ebda_addr = get_bios_ebda(); |
84 | |
85 | - /* Fixup: bios puts an EBDA in the top 64K segment */ |
86 | - /* of conventional memory, but does not adjust lowmem. */ |
87 | - if ((lowmem - ebda_addr) <= 0x10000) |
88 | - lowmem = ebda_addr; |
89 | + /* |
90 | + * Note: some old Dells seem to need 4k EBDA without |
91 | + * reporting so, so just consider the memory above 0x9f000 |
92 | + * to be off limits (bugzilla 2990). |
93 | + */ |
94 | + |
95 | + /* If the EBDA address is below 128K, assume it is bogus */ |
96 | + if (ebda_addr < INSANE_CUTOFF) |
97 | + ebda_addr = LOWMEM_CAP; |
98 | |
99 | - /* Fixup: bios does not report an EBDA at all. */ |
100 | - /* Some old Dells seem to need 4k anyhow (bugzilla 2990) */ |
101 | - if ((ebda_addr == 0) && (lowmem >= 0x9f000)) |
102 | - lowmem = 0x9f000; |
103 | + /* If lowmem is less than 128K, assume it is bogus */ |
104 | + if (lowmem < INSANE_CUTOFF) |
105 | + lowmem = LOWMEM_CAP; |
106 | |
107 | - /* Paranoia: should never happen, but... */ |
108 | - if ((lowmem == 0) || (lowmem >= 0x100000)) |
109 | - lowmem = 0x9f000; |
110 | + /* Use the lower of the lowmem and EBDA markers as the cutoff */ |
111 | + lowmem = min(lowmem, ebda_addr); |
112 | + lowmem = min(lowmem, LOWMEM_CAP); /* Absolute cap */ |
113 | |
114 | /* reserve all memory between lowmem and the 1MB mark */ |
115 | memblock_reserve(lowmem, 0x100000 - lowmem); |
116 | diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c |
117 | index 3705bb0..1e40637 100644 |
118 | --- a/arch/x86/platform/efi/efi.c |
119 | +++ b/arch/x86/platform/efi/efi.c |
120 | @@ -84,9 +84,10 @@ int efi_enabled(int facility) |
121 | } |
122 | EXPORT_SYMBOL(efi_enabled); |
123 | |
124 | +static bool disable_runtime = false; |
125 | static int __init setup_noefi(char *arg) |
126 | { |
127 | - clear_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); |
128 | + disable_runtime = true; |
129 | return 0; |
130 | } |
131 | early_param("noefi", setup_noefi); |
132 | @@ -733,7 +734,7 @@ void __init efi_init(void) |
133 | if (!efi_is_native()) |
134 | pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); |
135 | else { |
136 | - if (efi_runtime_init()) |
137 | + if (disable_runtime || efi_runtime_init()) |
138 | return; |
139 | set_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); |
140 | } |
141 | diff --git a/block/genhd.c b/block/genhd.c |
142 | index 9cf5583..60108d9 100644 |
143 | --- a/block/genhd.c |
144 | +++ b/block/genhd.c |
145 | @@ -25,7 +25,7 @@ static DEFINE_MUTEX(block_class_lock); |
146 | struct kobject *block_depr; |
147 | |
148 | /* for extended dynamic devt allocation, currently only one major is used */ |
149 | -#define MAX_EXT_DEVT (1 << MINORBITS) |
150 | +#define NR_EXT_DEVT (1 << MINORBITS) |
151 | |
152 | /* For extended devt allocation. ext_devt_mutex prevents look up |
153 | * results from going away underneath its user. |
154 | @@ -420,17 +420,18 @@ int blk_alloc_devt(struct hd_struct *part, dev_t *devt) |
155 | do { |
156 | if (!idr_pre_get(&ext_devt_idr, GFP_KERNEL)) |
157 | return -ENOMEM; |
158 | + mutex_lock(&ext_devt_mutex); |
159 | rc = idr_get_new(&ext_devt_idr, part, &idx); |
160 | + if (!rc && idx >= NR_EXT_DEVT) { |
161 | + idr_remove(&ext_devt_idr, idx); |
162 | + rc = -EBUSY; |
163 | + } |
164 | + mutex_unlock(&ext_devt_mutex); |
165 | } while (rc == -EAGAIN); |
166 | |
167 | if (rc) |
168 | return rc; |
169 | |
170 | - if (idx > MAX_EXT_DEVT) { |
171 | - idr_remove(&ext_devt_idr, idx); |
172 | - return -EBUSY; |
173 | - } |
174 | - |
175 | *devt = MKDEV(BLOCK_EXT_MAJOR, blk_mangle_minor(idx)); |
176 | return 0; |
177 | } |
178 | @@ -644,7 +645,6 @@ void del_gendisk(struct gendisk *disk) |
179 | disk_part_iter_exit(&piter); |
180 | |
181 | invalidate_partition(disk, 0); |
182 | - blk_free_devt(disk_to_dev(disk)->devt); |
183 | set_capacity(disk, 0); |
184 | disk->flags &= ~GENHD_FL_UP; |
185 | |
186 | @@ -662,6 +662,7 @@ void del_gendisk(struct gendisk *disk) |
187 | if (!sysfs_deprecated) |
188 | sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk))); |
189 | device_del(disk_to_dev(disk)); |
190 | + blk_free_devt(disk_to_dev(disk)->devt); |
191 | } |
192 | EXPORT_SYMBOL(del_gendisk); |
193 | |
194 | diff --git a/block/partition-generic.c b/block/partition-generic.c |
195 | index 6df5d69..7b8b8d1 100644 |
196 | --- a/block/partition-generic.c |
197 | +++ b/block/partition-generic.c |
198 | @@ -249,11 +249,11 @@ void delete_partition(struct gendisk *disk, int partno) |
199 | if (!part) |
200 | return; |
201 | |
202 | - blk_free_devt(part_devt(part)); |
203 | rcu_assign_pointer(ptbl->part[partno], NULL); |
204 | rcu_assign_pointer(ptbl->last_lookup, NULL); |
205 | kobject_put(part->holder_dir); |
206 | device_del(part_to_dev(part)); |
207 | + blk_free_devt(part_devt(part)); |
208 | |
209 | hd_struct_put(part); |
210 | } |
211 | diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c |
212 | index aa0a904..189c704 100644 |
213 | --- a/drivers/acpi/sleep.c |
214 | +++ b/drivers/acpi/sleep.c |
215 | @@ -186,6 +186,14 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { |
216 | }, |
217 | { |
218 | .callback = init_nvs_nosave, |
219 | + .ident = "Sony Vaio VGN-FW41E_H", |
220 | + .matches = { |
221 | + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), |
222 | + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW41E_H"), |
223 | + }, |
224 | + }, |
225 | + { |
226 | + .callback = init_nvs_nosave, |
227 | .ident = "Sony Vaio VGN-FW21E", |
228 | .matches = { |
229 | DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), |
230 | diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c |
231 | index 3c809bf..88f6908 100644 |
232 | --- a/drivers/ata/ata_piix.c |
233 | +++ b/drivers/ata/ata_piix.c |
234 | @@ -331,6 +331,23 @@ static const struct pci_device_id piix_pci_tbl[] = { |
235 | { 0x8086, 0x8c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
236 | /* SATA Controller IDE (DH89xxCC) */ |
237 | { 0x8086, 0x2326, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
238 | + /* SATA Controller IDE (Avoton) */ |
239 | + { 0x8086, 0x1f20, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, |
240 | + /* SATA Controller IDE (Avoton) */ |
241 | + { 0x8086, 0x1f21, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, |
242 | + /* SATA Controller IDE (Avoton) */ |
243 | + { 0x8086, 0x1f30, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
244 | + /* SATA Controller IDE (Avoton) */ |
245 | + { 0x8086, 0x1f31, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
246 | + /* SATA Controller IDE (Wellsburg) */ |
247 | + { 0x8086, 0x8d00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, |
248 | + /* SATA Controller IDE (Wellsburg) */ |
249 | + { 0x8086, 0x8d08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
250 | + /* SATA Controller IDE (Wellsburg) */ |
251 | + { 0x8086, 0x8d60, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, |
252 | + /* SATA Controller IDE (Wellsburg) */ |
253 | + { 0x8086, 0x8d68, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
254 | + |
255 | { } /* terminate list */ |
256 | }; |
257 | |
258 | diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c |
259 | index c6decb9..73d8c92 100644 |
260 | --- a/drivers/block/xen-blkback/blkback.c |
261 | +++ b/drivers/block/xen-blkback/blkback.c |
262 | @@ -623,7 +623,6 @@ static int dispatch_rw_block_io(struct xen_blkif *blkif, |
263 | goto fail_response; |
264 | } |
265 | |
266 | - preq.dev = req->u.rw.handle; |
267 | preq.sector_number = req->u.rw.sector_number; |
268 | preq.nr_sects = 0; |
269 | |
270 | diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c |
271 | index 4f66171..a155254 100644 |
272 | --- a/drivers/block/xen-blkback/xenbus.c |
273 | +++ b/drivers/block/xen-blkback/xenbus.c |
274 | @@ -367,6 +367,7 @@ static int xen_blkbk_remove(struct xenbus_device *dev) |
275 | be->blkif = NULL; |
276 | } |
277 | |
278 | + kfree(be->mode); |
279 | kfree(be); |
280 | dev_set_drvdata(&dev->dev, NULL); |
281 | return 0; |
282 | @@ -502,6 +503,7 @@ static void backend_changed(struct xenbus_watch *watch, |
283 | = container_of(watch, struct backend_info, backend_watch); |
284 | struct xenbus_device *dev = be->dev; |
285 | int cdrom = 0; |
286 | + unsigned long handle; |
287 | char *device_type; |
288 | |
289 | DPRINTK(""); |
290 | @@ -521,10 +523,10 @@ static void backend_changed(struct xenbus_watch *watch, |
291 | return; |
292 | } |
293 | |
294 | - if ((be->major || be->minor) && |
295 | - ((be->major != major) || (be->minor != minor))) { |
296 | - pr_warn(DRV_PFX "changing physical device (from %x:%x to %x:%x) not supported.\n", |
297 | - be->major, be->minor, major, minor); |
298 | + if (be->major | be->minor) { |
299 | + if (be->major != major || be->minor != minor) |
300 | + pr_warn(DRV_PFX "changing physical device (from %x:%x to %x:%x) not supported.\n", |
301 | + be->major, be->minor, major, minor); |
302 | return; |
303 | } |
304 | |
305 | @@ -542,36 +544,33 @@ static void backend_changed(struct xenbus_watch *watch, |
306 | kfree(device_type); |
307 | } |
308 | |
309 | - if (be->major == 0 && be->minor == 0) { |
310 | - /* Front end dir is a number, which is used as the handle. */ |
311 | - |
312 | - char *p = strrchr(dev->otherend, '/') + 1; |
313 | - long handle; |
314 | - err = strict_strtoul(p, 0, &handle); |
315 | - if (err) |
316 | - return; |
317 | + /* Front end dir is a number, which is used as the handle. */ |
318 | + err = strict_strtoul(strrchr(dev->otherend, '/') + 1, 0, &handle); |
319 | + if (err) |
320 | + return; |
321 | |
322 | - be->major = major; |
323 | - be->minor = minor; |
324 | + be->major = major; |
325 | + be->minor = minor; |
326 | |
327 | - err = xen_vbd_create(be->blkif, handle, major, minor, |
328 | - (NULL == strchr(be->mode, 'w')), cdrom); |
329 | - if (err) { |
330 | - be->major = 0; |
331 | - be->minor = 0; |
332 | - xenbus_dev_fatal(dev, err, "creating vbd structure"); |
333 | - return; |
334 | - } |
335 | + err = xen_vbd_create(be->blkif, handle, major, minor, |
336 | + !strchr(be->mode, 'w'), cdrom); |
337 | |
338 | + if (err) |
339 | + xenbus_dev_fatal(dev, err, "creating vbd structure"); |
340 | + else { |
341 | err = xenvbd_sysfs_addif(dev); |
342 | if (err) { |
343 | xen_vbd_free(&be->blkif->vbd); |
344 | - be->major = 0; |
345 | - be->minor = 0; |
346 | xenbus_dev_fatal(dev, err, "creating sysfs entries"); |
347 | - return; |
348 | } |
349 | + } |
350 | |
351 | + if (err) { |
352 | + kfree(be->mode); |
353 | + be->mode = NULL; |
354 | + be->major = 0; |
355 | + be->minor = 0; |
356 | + } else { |
357 | /* We're potentially connected now */ |
358 | xen_update_blkif_status(be->blkif); |
359 | } |
360 | diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c |
361 | index 68109e9..04ebeaf 100644 |
362 | --- a/drivers/firewire/core-device.c |
363 | +++ b/drivers/firewire/core-device.c |
364 | @@ -999,6 +999,10 @@ static void fw_device_init(struct work_struct *work) |
365 | ret = idr_pre_get(&fw_device_idr, GFP_KERNEL) ? |
366 | idr_get_new(&fw_device_idr, device, &minor) : |
367 | -ENOMEM; |
368 | + if (minor >= 1 << MINORBITS) { |
369 | + idr_remove(&fw_device_idr, minor); |
370 | + minor = -ENOSPC; |
371 | + } |
372 | up_write(&fw_device_rwsem); |
373 | |
374 | if (ret < 0) |
375 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
376 | index 1a92a27..ff73d60 100644 |
377 | --- a/drivers/hid/hid-core.c |
378 | +++ b/drivers/hid/hid-core.c |
379 | @@ -1922,6 +1922,7 @@ static const struct hid_device_id hid_ignore_list[] = { |
380 | { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HYBRID) }, |
381 | { HID_USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_HEATCONTROL) }, |
382 | { HID_USB_DEVICE(USB_VENDOR_ID_MADCATZ, USB_DEVICE_ID_MADCATZ_BEATPAD) }, |
383 | + { HID_USB_DEVICE(USB_VENDOR_ID_MASTERKIT, USB_DEVICE_ID_MASTERKIT_MA901RADIO) }, |
384 | { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS) }, |
385 | { HID_USB_DEVICE(USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS) }, |
386 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1) }, |
387 | diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h |
388 | index 5583899..02f4664 100644 |
389 | --- a/drivers/hid/hid-ids.h |
390 | +++ b/drivers/hid/hid-ids.h |
391 | @@ -520,6 +520,9 @@ |
392 | #define USB_VENDOR_ID_MADCATZ 0x0738 |
393 | #define USB_DEVICE_ID_MADCATZ_BEATPAD 0x4540 |
394 | |
395 | +#define USB_VENDOR_ID_MASTERKIT 0x16c0 |
396 | +#define USB_DEVICE_ID_MASTERKIT_MA901RADIO 0x05df |
397 | + |
398 | #define USB_VENDOR_ID_MCC 0x09db |
399 | #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 |
400 | #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a |
401 | diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c |
402 | index ef0ae93..b573f80 100644 |
403 | --- a/drivers/iommu/amd_iommu_init.c |
404 | +++ b/drivers/iommu/amd_iommu_init.c |
405 | @@ -1572,8 +1572,6 @@ int __init amd_iommu_init_hardware(void) |
406 | if (amd_iommu_pd_alloc_bitmap == NULL) |
407 | goto free; |
408 | |
409 | - /* init the device table */ |
410 | - init_device_table(); |
411 | |
412 | /* |
413 | * let all alias entries point to itself |
414 | @@ -1655,6 +1653,7 @@ out: |
415 | */ |
416 | static int __init amd_iommu_init(void) |
417 | { |
418 | + struct amd_iommu *iommu; |
419 | int ret = 0; |
420 | |
421 | ret = amd_iommu_init_hardware(); |
422 | @@ -1673,6 +1672,12 @@ static int __init amd_iommu_init(void) |
423 | if (ret) |
424 | goto free; |
425 | |
426 | + /* init the device table */ |
427 | + init_device_table(); |
428 | + |
429 | + for_each_iommu(iommu) |
430 | + iommu_flush_all_caches(iommu); |
431 | + |
432 | amd_iommu_init_api(); |
433 | |
434 | x86_platform.iommu_shutdown = disable_iommus; |
435 | diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c |
436 | index cabc19c..cec1f8c 100644 |
437 | --- a/drivers/media/rc/rc-main.c |
438 | +++ b/drivers/media/rc/rc-main.c |
439 | @@ -778,8 +778,10 @@ static ssize_t show_protocols(struct device *device, |
440 | } else if (dev->raw) { |
441 | enabled = dev->raw->enabled_protocols; |
442 | allowed = ir_raw_get_allowed_protocols(); |
443 | - } else |
444 | + } else { |
445 | + mutex_unlock(&dev->lock); |
446 | return -ENODEV; |
447 | + } |
448 | |
449 | IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", |
450 | (long long)allowed, |
451 | diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c |
452 | index 63089cc..9284bca 100644 |
453 | --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c |
454 | +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c |
455 | @@ -938,6 +938,8 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah, |
456 | AR_PHY_CL_TAB_1, |
457 | AR_PHY_CL_TAB_2 }; |
458 | |
459 | + ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); |
460 | + |
461 | if (rtt) { |
462 | if (!ar9003_hw_rtt_restore(ah, chan)) |
463 | run_rtt_cal = true; |
464 | diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.c b/drivers/net/wireless/ath/ath9k/ar9003_phy.c |
465 | index 600aca9..f86ee0c 100644 |
466 | --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c |
467 | +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c |
468 | @@ -543,7 +543,7 @@ static void ar9003_hw_init_bb(struct ath_hw *ah, |
469 | udelay(synthDelay + BASE_ACTIVATE_DELAY); |
470 | } |
471 | |
472 | -static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) |
473 | +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) |
474 | { |
475 | switch (rx) { |
476 | case 0x5: |
477 | diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h |
478 | index f8e1fbb..d5c5dca 100644 |
479 | --- a/drivers/net/wireless/ath/ath9k/hw.h |
480 | +++ b/drivers/net/wireless/ath/ath9k/hw.h |
481 | @@ -1014,6 +1014,7 @@ int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); |
482 | int ar9003_paprd_init_table(struct ath_hw *ah); |
483 | bool ar9003_paprd_is_done(struct ath_hw *ah); |
484 | void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains); |
485 | +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); |
486 | |
487 | /* Hardware family op attach helpers */ |
488 | void ar5008_hw_attach_phy_ops(struct ath_hw *ah); |
489 | diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c |
490 | index d8bb993..2a6bf76 100644 |
491 | --- a/drivers/power/ab8500_btemp.c |
492 | +++ b/drivers/power/ab8500_btemp.c |
493 | @@ -1115,7 +1115,7 @@ static void __exit ab8500_btemp_exit(void) |
494 | platform_driver_unregister(&ab8500_btemp_driver); |
495 | } |
496 | |
497 | -subsys_initcall_sync(ab8500_btemp_init); |
498 | +device_initcall(ab8500_btemp_init); |
499 | module_exit(ab8500_btemp_exit); |
500 | |
501 | MODULE_LICENSE("GPL v2"); |
502 | diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/abx500_chargalg.c |
503 | index 804b88c..d8cd151 100644 |
504 | --- a/drivers/power/abx500_chargalg.c |
505 | +++ b/drivers/power/abx500_chargalg.c |
506 | @@ -1698,7 +1698,7 @@ static ssize_t abx500_chargalg_sysfs_charger(struct kobject *kobj, |
507 | static struct attribute abx500_chargalg_en_charger = \ |
508 | { |
509 | .name = "chargalg", |
510 | - .mode = S_IWUGO, |
511 | + .mode = S_IWUSR, |
512 | }; |
513 | |
514 | static struct attribute *abx500_chargalg_chg[] = { |
515 | diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c |
516 | index cf67ce5..3799cf1 100644 |
517 | --- a/drivers/staging/comedi/comedi_fops.c |
518 | +++ b/drivers/staging/comedi/comedi_fops.c |
519 | @@ -1577,7 +1577,7 @@ static unsigned int comedi_poll(struct file *file, poll_table * wait) |
520 | |
521 | mask = 0; |
522 | read_subdev = comedi_get_read_subdevice(dev_file_info); |
523 | - if (read_subdev) { |
524 | + if (read_subdev && read_subdev->async) { |
525 | poll_wait(file, &read_subdev->async->wait_head, wait); |
526 | if (!read_subdev->busy |
527 | || comedi_buf_read_n_available(read_subdev->async) > 0 |
528 | @@ -1587,7 +1587,7 @@ static unsigned int comedi_poll(struct file *file, poll_table * wait) |
529 | } |
530 | } |
531 | write_subdev = comedi_get_write_subdevice(dev_file_info); |
532 | - if (write_subdev) { |
533 | + if (write_subdev && write_subdev->async) { |
534 | poll_wait(file, &write_subdev->async->wait_head, wait); |
535 | comedi_buf_write_alloc(write_subdev->async, |
536 | write_subdev->async->prealloc_bufsz); |
537 | @@ -1629,7 +1629,7 @@ static ssize_t comedi_write(struct file *file, const char __user *buf, |
538 | } |
539 | |
540 | s = comedi_get_write_subdevice(dev_file_info); |
541 | - if (s == NULL) { |
542 | + if (s == NULL || s->async == NULL) { |
543 | retval = -EIO; |
544 | goto done; |
545 | } |
546 | @@ -1740,7 +1740,7 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes, |
547 | } |
548 | |
549 | s = comedi_get_read_subdevice(dev_file_info); |
550 | - if (s == NULL) { |
551 | + if (s == NULL || s->async == NULL) { |
552 | retval = -EIO; |
553 | goto done; |
554 | } |
555 | diff --git a/drivers/staging/comedi/drivers/ni_labpc.c b/drivers/staging/comedi/drivers/ni_labpc.c |
556 | index 721b2be..0517a23 100644 |
557 | --- a/drivers/staging/comedi/drivers/ni_labpc.c |
558 | +++ b/drivers/staging/comedi/drivers/ni_labpc.c |
559 | @@ -1264,7 +1264,9 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) |
560 | else |
561 | channel = CR_CHAN(cmd->chanlist[0]); |
562 | /* munge channel bits for differential / scan disabled mode */ |
563 | - if (labpc_ai_scan_mode(cmd) != MODE_SINGLE_CHAN && aref == AREF_DIFF) |
564 | + if ((labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN || |
565 | + labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN_INTERVAL) && |
566 | + aref == AREF_DIFF) |
567 | channel *= 2; |
568 | devpriv->command1_bits |= ADC_CHAN_BITS(channel); |
569 | devpriv->command1_bits |= thisboard->ai_range_code[range]; |
570 | @@ -1280,21 +1282,6 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) |
571 | devpriv->write_byte(devpriv->command1_bits, |
572 | dev->iobase + COMMAND1_REG); |
573 | } |
574 | - /* setup any external triggering/pacing (command4 register) */ |
575 | - devpriv->command4_bits = 0; |
576 | - if (cmd->convert_src != TRIG_EXT) |
577 | - devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; |
578 | - /* XXX should discard first scan when using interval scanning |
579 | - * since manual says it is not synced with scan clock */ |
580 | - if (labpc_use_continuous_mode(cmd) == 0) { |
581 | - devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; |
582 | - if (cmd->scan_begin_src == TRIG_EXT) |
583 | - devpriv->command4_bits |= EXT_SCAN_EN_BIT; |
584 | - } |
585 | - /* single-ended/differential */ |
586 | - if (aref == AREF_DIFF) |
587 | - devpriv->command4_bits |= ADC_DIFF_BIT; |
588 | - devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); |
589 | |
590 | devpriv->write_byte(cmd->chanlist_len, |
591 | dev->iobase + INTERVAL_COUNT_REG); |
592 | @@ -1374,6 +1361,22 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) |
593 | devpriv->command3_bits &= ~ADC_FNE_INTR_EN_BIT; |
594 | devpriv->write_byte(devpriv->command3_bits, dev->iobase + COMMAND3_REG); |
595 | |
596 | + /* setup any external triggering/pacing (command4 register) */ |
597 | + devpriv->command4_bits = 0; |
598 | + if (cmd->convert_src != TRIG_EXT) |
599 | + devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; |
600 | + /* XXX should discard first scan when using interval scanning |
601 | + * since manual says it is not synced with scan clock */ |
602 | + if (labpc_use_continuous_mode(cmd) == 0) { |
603 | + devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; |
604 | + if (cmd->scan_begin_src == TRIG_EXT) |
605 | + devpriv->command4_bits |= EXT_SCAN_EN_BIT; |
606 | + } |
607 | + /* single-ended/differential */ |
608 | + if (aref == AREF_DIFF) |
609 | + devpriv->command4_bits |= ADC_DIFF_BIT; |
610 | + devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); |
611 | + |
612 | /* startup acquisition */ |
613 | |
614 | /* command2 reg */ |
615 | diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c |
616 | index 4ecf9d6..79d9865 100644 |
617 | --- a/drivers/target/target_core_device.c |
618 | +++ b/drivers/target/target_core_device.c |
619 | @@ -1483,24 +1483,18 @@ static struct se_lun *core_dev_get_lun(struct se_portal_group *tpg, u32 unpacked |
620 | |
621 | struct se_lun_acl *core_dev_init_initiator_node_lun_acl( |
622 | struct se_portal_group *tpg, |
623 | + struct se_node_acl *nacl, |
624 | u32 mapped_lun, |
625 | - char *initiatorname, |
626 | int *ret) |
627 | { |
628 | struct se_lun_acl *lacl; |
629 | - struct se_node_acl *nacl; |
630 | |
631 | - if (strlen(initiatorname) >= TRANSPORT_IQN_LEN) { |
632 | + if (strlen(nacl->initiatorname) >= TRANSPORT_IQN_LEN) { |
633 | pr_err("%s InitiatorName exceeds maximum size.\n", |
634 | tpg->se_tpg_tfo->get_fabric_name()); |
635 | *ret = -EOVERFLOW; |
636 | return NULL; |
637 | } |
638 | - nacl = core_tpg_get_initiator_node_acl(tpg, initiatorname); |
639 | - if (!nacl) { |
640 | - *ret = -EINVAL; |
641 | - return NULL; |
642 | - } |
643 | lacl = kzalloc(sizeof(struct se_lun_acl), GFP_KERNEL); |
644 | if (!lacl) { |
645 | pr_err("Unable to allocate memory for struct se_lun_acl.\n"); |
646 | @@ -1511,7 +1505,8 @@ struct se_lun_acl *core_dev_init_initiator_node_lun_acl( |
647 | INIT_LIST_HEAD(&lacl->lacl_list); |
648 | lacl->mapped_lun = mapped_lun; |
649 | lacl->se_lun_nacl = nacl; |
650 | - snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname); |
651 | + snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", |
652 | + nacl->initiatorname); |
653 | |
654 | return lacl; |
655 | } |
656 | diff --git a/drivers/target/target_core_fabric_configfs.c b/drivers/target/target_core_fabric_configfs.c |
657 | index 817ba7c..6b79ee7 100644 |
658 | --- a/drivers/target/target_core_fabric_configfs.c |
659 | +++ b/drivers/target/target_core_fabric_configfs.c |
660 | @@ -356,9 +356,17 @@ static struct config_group *target_fabric_make_mappedlun( |
661 | ret = -EINVAL; |
662 | goto out; |
663 | } |
664 | + if (mapped_lun > (TRANSPORT_MAX_LUNS_PER_TPG-1)) { |
665 | + pr_err("Mapped LUN: %lu exceeds TRANSPORT_MAX_LUNS_PER_TPG" |
666 | + "-1: %u for Target Portal Group: %u\n", mapped_lun, |
667 | + TRANSPORT_MAX_LUNS_PER_TPG-1, |
668 | + se_tpg->se_tpg_tfo->tpg_get_tag(se_tpg)); |
669 | + ret = -EINVAL; |
670 | + goto out; |
671 | + } |
672 | |
673 | - lacl = core_dev_init_initiator_node_lun_acl(se_tpg, mapped_lun, |
674 | - config_item_name(acl_ci), &ret); |
675 | + lacl = core_dev_init_initiator_node_lun_acl(se_tpg, se_nacl, |
676 | + mapped_lun, &ret); |
677 | if (!lacl) { |
678 | ret = -EINVAL; |
679 | goto out; |
680 | diff --git a/drivers/target/target_core_internal.h b/drivers/target/target_core_internal.h |
681 | index 21c0563..17179b1 100644 |
682 | --- a/drivers/target/target_core_internal.h |
683 | +++ b/drivers/target/target_core_internal.h |
684 | @@ -61,7 +61,7 @@ struct se_lun *core_dev_add_lun(struct se_portal_group *, struct se_hba *, |
685 | int core_dev_del_lun(struct se_portal_group *, u32); |
686 | struct se_lun *core_get_lun_from_tpg(struct se_portal_group *, u32); |
687 | struct se_lun_acl *core_dev_init_initiator_node_lun_acl(struct se_portal_group *, |
688 | - u32, char *, int *); |
689 | + struct se_node_acl *, u32, int *); |
690 | int core_dev_add_initiator_node_lun_acl(struct se_portal_group *, |
691 | struct se_lun_acl *, u32, u32); |
692 | int core_dev_del_initiator_node_lun_acl(struct se_portal_group *, |
693 | diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c |
694 | index ba537b6..0e17fa3 100644 |
695 | --- a/drivers/target/target_core_tpg.c |
696 | +++ b/drivers/target/target_core_tpg.c |
697 | @@ -114,16 +114,10 @@ struct se_node_acl *core_tpg_get_initiator_node_acl( |
698 | struct se_node_acl *acl; |
699 | |
700 | spin_lock_irq(&tpg->acl_node_lock); |
701 | - list_for_each_entry(acl, &tpg->acl_node_list, acl_list) { |
702 | - if (!strcmp(acl->initiatorname, initiatorname) && |
703 | - !acl->dynamic_node_acl) { |
704 | - spin_unlock_irq(&tpg->acl_node_lock); |
705 | - return acl; |
706 | - } |
707 | - } |
708 | + acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname); |
709 | spin_unlock_irq(&tpg->acl_node_lock); |
710 | |
711 | - return NULL; |
712 | + return acl; |
713 | } |
714 | |
715 | /* core_tpg_add_node_to_devs(): |
716 | diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c |
717 | index 51e4c1e..1a9e2a9 100644 |
718 | --- a/drivers/vhost/vhost.c |
719 | +++ b/drivers/vhost/vhost.c |
720 | @@ -1074,7 +1074,7 @@ static int translate_desc(struct vhost_dev *dev, u64 addr, u32 len, |
721 | } |
722 | _iov = iov + ret; |
723 | size = reg->memory_size - addr + reg->guest_phys_addr; |
724 | - _iov->iov_len = min((u64)len, size); |
725 | + _iov->iov_len = min((u64)len - s, size); |
726 | _iov->iov_base = (void __user *)(unsigned long) |
727 | (reg->userspace_addr + addr - reg->guest_phys_addr); |
728 | s += size; |
729 | diff --git a/fs/direct-io.c b/fs/direct-io.c |
730 | index f4aadd1..29c4fda 100644 |
731 | --- a/fs/direct-io.c |
732 | +++ b/fs/direct-io.c |
733 | @@ -305,9 +305,9 @@ static ssize_t dio_complete(struct dio *dio, loff_t offset, ssize_t ret, bool is |
734 | dio->end_io(dio->iocb, offset, transferred, |
735 | dio->private, ret, is_async); |
736 | } else { |
737 | + inode_dio_done(dio->inode); |
738 | if (is_async) |
739 | aio_complete(dio->iocb, ret, 0); |
740 | - inode_dio_done(dio->inode); |
741 | } |
742 | |
743 | return ret; |
744 | diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c |
745 | index df76291..3e1018a 100644 |
746 | --- a/fs/ext4/balloc.c |
747 | +++ b/fs/ext4/balloc.c |
748 | @@ -326,7 +326,7 @@ err_out: |
749 | return 0; |
750 | } |
751 | /** |
752 | - * ext4_read_block_bitmap() |
753 | + * ext4_read_block_bitmap_nowait() |
754 | * @sb: super block |
755 | * @block_group: given block group |
756 | * |
757 | @@ -422,6 +422,8 @@ ext4_read_block_bitmap(struct super_block *sb, ext4_group_t block_group) |
758 | struct buffer_head *bh; |
759 | |
760 | bh = ext4_read_block_bitmap_nowait(sb, block_group); |
761 | + if (!bh) |
762 | + return NULL; |
763 | if (ext4_wait_block_bitmap(sb, block_group, bh)) { |
764 | put_bh(bh); |
765 | return NULL; |
766 | @@ -447,11 +449,16 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, |
767 | |
768 | free_clusters = percpu_counter_read_positive(fcc); |
769 | dirty_clusters = percpu_counter_read_positive(dcc); |
770 | - root_clusters = EXT4_B2C(sbi, ext4_r_blocks_count(sbi->s_es)); |
771 | + |
772 | + /* |
773 | + * r_blocks_count should always be multiple of the cluster ratio so |
774 | + * we are safe to do a plane bit shift only. |
775 | + */ |
776 | + root_clusters = ext4_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits; |
777 | |
778 | if (free_clusters - (nclusters + root_clusters + dirty_clusters) < |
779 | EXT4_FREECLUSTERS_WATERMARK) { |
780 | - free_clusters = EXT4_C2B(sbi, percpu_counter_sum_positive(fcc)); |
781 | + free_clusters = percpu_counter_sum_positive(fcc); |
782 | dirty_clusters = percpu_counter_sum_positive(dcc); |
783 | } |
784 | /* Check whether we have space after accounting for current |
785 | diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c |
786 | index e77c4fe..3122ece 100644 |
787 | --- a/fs/ext4/mballoc.c |
788 | +++ b/fs/ext4/mballoc.c |
789 | @@ -4126,7 +4126,7 @@ static void ext4_mb_add_n_trim(struct ext4_allocation_context *ac) |
790 | /* The max size of hash table is PREALLOC_TB_SIZE */ |
791 | order = PREALLOC_TB_SIZE - 1; |
792 | /* Add the prealloc space to lg */ |
793 | - rcu_read_lock(); |
794 | + spin_lock(&lg->lg_prealloc_lock); |
795 | list_for_each_entry_rcu(tmp_pa, &lg->lg_prealloc_list[order], |
796 | pa_inode_list) { |
797 | spin_lock(&tmp_pa->pa_lock); |
798 | @@ -4150,12 +4150,12 @@ static void ext4_mb_add_n_trim(struct ext4_allocation_context *ac) |
799 | if (!added) |
800 | list_add_tail_rcu(&pa->pa_inode_list, |
801 | &lg->lg_prealloc_list[order]); |
802 | - rcu_read_unlock(); |
803 | + spin_unlock(&lg->lg_prealloc_lock); |
804 | |
805 | /* Now trim the list to be not more than 8 elements */ |
806 | if (lg_prealloc_count > 8) { |
807 | ext4_mb_discard_lg_preallocations(sb, lg, |
808 | - order, lg_prealloc_count); |
809 | + order, lg_prealloc_count); |
810 | return; |
811 | } |
812 | return ; |
813 | diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c |
814 | index e88748e..e712a8c 100644 |
815 | --- a/fs/ext4/xattr.c |
816 | +++ b/fs/ext4/xattr.c |
817 | @@ -495,7 +495,7 @@ ext4_xattr_release_block(handle_t *handle, struct inode *inode, |
818 | error = ext4_handle_dirty_metadata(handle, inode, bh); |
819 | if (IS_SYNC(inode)) |
820 | ext4_handle_sync(handle); |
821 | - dquot_free_block(inode, 1); |
822 | + dquot_free_block(inode, EXT4_C2B(EXT4_SB(inode->i_sb), 1)); |
823 | ea_bdebug(bh, "refcount now=%d; releasing", |
824 | le32_to_cpu(BHDR(bh)->h_refcount)); |
825 | } |
826 | @@ -784,7 +784,8 @@ inserted: |
827 | else { |
828 | /* The old block is released after updating |
829 | the inode. */ |
830 | - error = dquot_alloc_block(inode, 1); |
831 | + error = dquot_alloc_block(inode, |
832 | + EXT4_C2B(EXT4_SB(sb), 1)); |
833 | if (error) |
834 | goto cleanup; |
835 | error = ext4_journal_get_write_access(handle, |
836 | @@ -880,7 +881,7 @@ cleanup: |
837 | return error; |
838 | |
839 | cleanup_dquot: |
840 | - dquot_free_block(inode, 1); |
841 | + dquot_free_block(inode, EXT4_C2B(EXT4_SB(sb), 1)); |
842 | goto cleanup; |
843 | |
844 | bad_block: |
845 | diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c |
846 | index bc43832..d48478a 100644 |
847 | --- a/fs/fuse/dir.c |
848 | +++ b/fs/fuse/dir.c |
849 | @@ -645,7 +645,14 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry) |
850 | |
851 | spin_lock(&fc->lock); |
852 | fi->attr_version = ++fc->attr_version; |
853 | - drop_nlink(inode); |
854 | + /* |
855 | + * If i_nlink == 0 then unlink doesn't make sense, yet this can |
856 | + * happen if userspace filesystem is careless. It would be |
857 | + * difficult to enforce correct nlink usage so just ignore this |
858 | + * condition here |
859 | + */ |
860 | + if (inode->i_nlink > 0) |
861 | + drop_nlink(inode); |
862 | spin_unlock(&fc->lock); |
863 | fuse_invalidate_attr(inode); |
864 | fuse_invalidate_attr(dir); |
865 | diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c |
866 | index 537731e..abd785e 100644 |
867 | --- a/fs/nfsd/nfs4state.c |
868 | +++ b/fs/nfsd/nfs4state.c |
869 | @@ -1053,6 +1053,8 @@ free_client(struct nfs4_client *clp) |
870 | put_group_info(clp->cl_cred.cr_group_info); |
871 | kfree(clp->cl_principal); |
872 | kfree(clp->cl_name.data); |
873 | + idr_remove_all(&clp->cl_stateids); |
874 | + idr_destroy(&clp->cl_stateids); |
875 | kfree(clp); |
876 | } |
877 | |
878 | diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c |
879 | index 6577432..340bd02 100644 |
880 | --- a/fs/ocfs2/aops.c |
881 | +++ b/fs/ocfs2/aops.c |
882 | @@ -593,9 +593,9 @@ static void ocfs2_dio_end_io(struct kiocb *iocb, |
883 | level = ocfs2_iocb_rw_locked_level(iocb); |
884 | ocfs2_rw_unlock(inode, level); |
885 | |
886 | + inode_dio_done(inode); |
887 | if (is_async) |
888 | aio_complete(iocb, ret, 0); |
889 | - inode_dio_done(inode); |
890 | } |
891 | |
892 | /* |
893 | diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c |
894 | index f169da4..b7e74b5 100644 |
895 | --- a/fs/ocfs2/suballoc.c |
896 | +++ b/fs/ocfs2/suballoc.c |
897 | @@ -642,7 +642,7 @@ ocfs2_block_group_alloc_discontig(handle_t *handle, |
898 | * cluster groups will be staying in cache for the duration of |
899 | * this operation. |
900 | */ |
901 | - ac->ac_allow_chain_relink = 0; |
902 | + ac->ac_disable_chain_relink = 1; |
903 | |
904 | /* Claim the first region */ |
905 | status = ocfs2_block_group_claim_bits(osb, handle, ac, min_bits, |
906 | @@ -1823,7 +1823,7 @@ static int ocfs2_search_chain(struct ocfs2_alloc_context *ac, |
907 | * Do this *after* figuring out how many bits we're taking out |
908 | * of our target group. |
909 | */ |
910 | - if (ac->ac_allow_chain_relink && |
911 | + if (!ac->ac_disable_chain_relink && |
912 | (prev_group_bh) && |
913 | (ocfs2_block_group_reasonably_empty(bg, res->sr_bits))) { |
914 | status = ocfs2_relink_block_group(handle, alloc_inode, |
915 | @@ -1928,7 +1928,6 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_alloc_context *ac, |
916 | |
917 | victim = ocfs2_find_victim_chain(cl); |
918 | ac->ac_chain = victim; |
919 | - ac->ac_allow_chain_relink = 1; |
920 | |
921 | status = ocfs2_search_chain(ac, handle, bits_wanted, min_bits, |
922 | res, &bits_left); |
923 | @@ -1947,7 +1946,7 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_alloc_context *ac, |
924 | * searching each chain in order. Don't allow chain relinking |
925 | * because we only calculate enough journal credits for one |
926 | * relink per alloc. */ |
927 | - ac->ac_allow_chain_relink = 0; |
928 | + ac->ac_disable_chain_relink = 1; |
929 | for (i = 0; i < le16_to_cpu(cl->cl_next_free_rec); i ++) { |
930 | if (i == victim) |
931 | continue; |
932 | diff --git a/fs/ocfs2/suballoc.h b/fs/ocfs2/suballoc.h |
933 | index b8afabf..a36d0aa 100644 |
934 | --- a/fs/ocfs2/suballoc.h |
935 | +++ b/fs/ocfs2/suballoc.h |
936 | @@ -49,7 +49,7 @@ struct ocfs2_alloc_context { |
937 | |
938 | /* these are used by the chain search */ |
939 | u16 ac_chain; |
940 | - int ac_allow_chain_relink; |
941 | + int ac_disable_chain_relink; |
942 | group_search_t *ac_group_search; |
943 | |
944 | u64 ac_last_group; |
945 | diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c |
946 | index 0ba9ea1..2e3ea30 100644 |
947 | --- a/fs/ocfs2/xattr.c |
948 | +++ b/fs/ocfs2/xattr.c |
949 | @@ -7189,7 +7189,7 @@ int ocfs2_init_security_and_acl(struct inode *dir, |
950 | struct buffer_head *dir_bh = NULL; |
951 | |
952 | ret = ocfs2_init_security_get(inode, dir, qstr, NULL); |
953 | - if (!ret) { |
954 | + if (ret) { |
955 | mlog_errno(ret); |
956 | goto leave; |
957 | } |
958 | diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c |
959 | index 82c585f..4a66a5c 100644 |
960 | --- a/fs/pstore/platform.c |
961 | +++ b/fs/pstore/platform.c |
962 | @@ -88,6 +88,27 @@ static const char *get_reason_str(enum kmsg_dump_reason reason) |
963 | } |
964 | } |
965 | |
966 | +bool pstore_cannot_block_path(enum kmsg_dump_reason reason) |
967 | +{ |
968 | + /* |
969 | + * In case of NMI path, pstore shouldn't be blocked |
970 | + * regardless of reason. |
971 | + */ |
972 | + if (in_nmi()) |
973 | + return true; |
974 | + |
975 | + switch (reason) { |
976 | + /* In panic case, other cpus are stopped by smp_send_stop(). */ |
977 | + case KMSG_DUMP_PANIC: |
978 | + /* Emergency restart shouldn't be blocked by spin lock. */ |
979 | + case KMSG_DUMP_EMERG: |
980 | + return true; |
981 | + default: |
982 | + return false; |
983 | + } |
984 | +} |
985 | +EXPORT_SYMBOL_GPL(pstore_cannot_block_path); |
986 | + |
987 | /* |
988 | * callback from kmsg_dump. (s2,l2) has the most recently |
989 | * written bytes, older bytes are in (s1,l1). Save as much |
990 | @@ -111,10 +132,12 @@ static void pstore_dump(struct kmsg_dumper *dumper, |
991 | |
992 | why = get_reason_str(reason); |
993 | |
994 | - if (in_nmi()) { |
995 | - is_locked = spin_trylock(&psinfo->buf_lock); |
996 | - if (!is_locked) |
997 | - pr_err("pstore dump routine blocked in NMI, may corrupt error record\n"); |
998 | + if (pstore_cannot_block_path(reason)) { |
999 | + is_locked = spin_trylock_irqsave(&psinfo->buf_lock, flags); |
1000 | + if (!is_locked) { |
1001 | + pr_err("pstore dump routine blocked in %s path, may corrupt error record\n" |
1002 | + , in_nmi() ? "NMI" : why); |
1003 | + } |
1004 | } else |
1005 | spin_lock_irqsave(&psinfo->buf_lock, flags); |
1006 | oopscount++; |
1007 | @@ -145,9 +168,9 @@ static void pstore_dump(struct kmsg_dumper *dumper, |
1008 | total += l1_cpy + l2_cpy; |
1009 | part++; |
1010 | } |
1011 | - if (in_nmi()) { |
1012 | + if (pstore_cannot_block_path(reason)) { |
1013 | if (is_locked) |
1014 | - spin_unlock(&psinfo->buf_lock); |
1015 | + spin_unlock_irqrestore(&psinfo->buf_lock, flags); |
1016 | } else |
1017 | spin_unlock_irqrestore(&psinfo->buf_lock, flags); |
1018 | } |
1019 | diff --git a/include/linux/auto_fs.h b/include/linux/auto_fs.h |
1020 | index da64e15..6cdabb4 100644 |
1021 | --- a/include/linux/auto_fs.h |
1022 | +++ b/include/linux/auto_fs.h |
1023 | @@ -31,25 +31,16 @@ |
1024 | #define AUTOFS_MIN_PROTO_VERSION AUTOFS_PROTO_VERSION |
1025 | |
1026 | /* |
1027 | - * Architectures where both 32- and 64-bit binaries can be executed |
1028 | - * on 64-bit kernels need this. This keeps the structure format |
1029 | - * uniform, and makes sure the wait_queue_token isn't too big to be |
1030 | - * passed back down to the kernel. |
1031 | - * |
1032 | - * This assumes that on these architectures: |
1033 | - * mode 32 bit 64 bit |
1034 | - * ------------------------- |
1035 | - * int 32 bit 32 bit |
1036 | - * long 32 bit 64 bit |
1037 | - * |
1038 | - * If so, 32-bit user-space code should be backwards compatible. |
1039 | + * The wait_queue_token (autofs_wqt_t) is part of a structure which is passed |
1040 | + * back to the kernel via ioctl from userspace. On architectures where 32- and |
1041 | + * 64-bit userspace binaries can be executed it's important that the size of |
1042 | + * autofs_wqt_t stays constant between 32- and 64-bit Linux kernels so that we |
1043 | + * do not break the binary ABI interface by changing the structure size. |
1044 | */ |
1045 | - |
1046 | -#if defined(__sparc__) || defined(__mips__) || defined(__x86_64__) \ |
1047 | - || defined(__powerpc__) || defined(__s390__) |
1048 | -typedef unsigned int autofs_wqt_t; |
1049 | -#else |
1050 | +#if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */ |
1051 | typedef unsigned long autofs_wqt_t; |
1052 | +#else |
1053 | +typedef unsigned int autofs_wqt_t; |
1054 | #endif |
1055 | |
1056 | /* Packet types */ |
1057 | diff --git a/include/linux/pstore.h b/include/linux/pstore.h |
1058 | index e1461e1..318cca1 100644 |
1059 | --- a/include/linux/pstore.h |
1060 | +++ b/include/linux/pstore.h |
1061 | @@ -54,12 +54,18 @@ struct pstore_info { |
1062 | |
1063 | #ifdef CONFIG_PSTORE |
1064 | extern int pstore_register(struct pstore_info *); |
1065 | +extern bool pstore_cannot_block_path(enum kmsg_dump_reason reason); |
1066 | #else |
1067 | static inline int |
1068 | pstore_register(struct pstore_info *psi) |
1069 | { |
1070 | return -ENODEV; |
1071 | } |
1072 | +static inline bool |
1073 | +pstore_cannot_block_path(enum kmsg_dump_reason reason) |
1074 | +{ |
1075 | + return false; |
1076 | +} |
1077 | #endif |
1078 | |
1079 | #endif /*_LINUX_PSTORE_H*/ |
1080 | diff --git a/include/linux/quota.h b/include/linux/quota.h |
1081 | index c09fa04..ffd8607 100644 |
1082 | --- a/include/linux/quota.h |
1083 | +++ b/include/linux/quota.h |
1084 | @@ -417,6 +417,7 @@ struct quota_module_name { |
1085 | #define INIT_QUOTA_MODULE_NAMES {\ |
1086 | {QFMT_VFS_OLD, "quota_v1"},\ |
1087 | {QFMT_VFS_V0, "quota_v2"},\ |
1088 | + {QFMT_VFS_V1, "quota_v2"},\ |
1089 | {0, NULL}} |
1090 | |
1091 | #endif /* __KERNEL__ */ |
1092 | diff --git a/kernel/cgroup.c b/kernel/cgroup.c |
1093 | index a5dccd4..a4c47d1b 100644 |
1094 | --- a/kernel/cgroup.c |
1095 | +++ b/kernel/cgroup.c |
1096 | @@ -378,12 +378,20 @@ static void __put_css_set(struct css_set *cg, int taskexit) |
1097 | struct cgroup *cgrp = link->cgrp; |
1098 | list_del(&link->cg_link_list); |
1099 | list_del(&link->cgrp_link_list); |
1100 | + |
1101 | + /* |
1102 | + * We may not be holding cgroup_mutex, and if cgrp->count is |
1103 | + * dropped to 0 the cgroup can be destroyed at any time, hence |
1104 | + * rcu_read_lock is used to keep it alive. |
1105 | + */ |
1106 | + rcu_read_lock(); |
1107 | if (atomic_dec_and_test(&cgrp->count) && |
1108 | notify_on_release(cgrp)) { |
1109 | if (taskexit) |
1110 | set_bit(CGRP_RELEASABLE, &cgrp->flags); |
1111 | check_for_release(cgrp); |
1112 | } |
1113 | + rcu_read_unlock(); |
1114 | |
1115 | kfree(link); |
1116 | } |
1117 | diff --git a/kernel/cpuset.c b/kernel/cpuset.c |
1118 | index 5fc1570..8fe6f6b6 100644 |
1119 | --- a/kernel/cpuset.c |
1120 | +++ b/kernel/cpuset.c |
1121 | @@ -2479,8 +2479,16 @@ void cpuset_print_task_mems_allowed(struct task_struct *tsk) |
1122 | |
1123 | dentry = task_cs(tsk)->css.cgroup->dentry; |
1124 | spin_lock(&cpuset_buffer_lock); |
1125 | - snprintf(cpuset_name, CPUSET_NAME_LEN, |
1126 | - dentry ? (const char *)dentry->d_name.name : "/"); |
1127 | + |
1128 | + if (!dentry) { |
1129 | + strcpy(cpuset_name, "/"); |
1130 | + } else { |
1131 | + spin_lock(&dentry->d_lock); |
1132 | + strlcpy(cpuset_name, (const char *)dentry->d_name.name, |
1133 | + CPUSET_NAME_LEN); |
1134 | + spin_unlock(&dentry->d_lock); |
1135 | + } |
1136 | + |
1137 | nodelist_scnprintf(cpuset_nodelist, CPUSET_NODELIST_LEN, |
1138 | tsk->mems_allowed); |
1139 | printk(KERN_INFO "%s cpuset=%s mems_allowed=%s\n", |
1140 | diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c |
1141 | index 69185ae..e885be1 100644 |
1142 | --- a/kernel/posix-timers.c |
1143 | +++ b/kernel/posix-timers.c |
1144 | @@ -639,6 +639,13 @@ static struct k_itimer *__lock_timer(timer_t timer_id, unsigned long *flags) |
1145 | { |
1146 | struct k_itimer *timr; |
1147 | |
1148 | + /* |
1149 | + * timer_t could be any type >= int and we want to make sure any |
1150 | + * @timer_id outside positive int range fails lookup. |
1151 | + */ |
1152 | + if ((unsigned long long)timer_id > INT_MAX) |
1153 | + return NULL; |
1154 | + |
1155 | rcu_read_lock(); |
1156 | timr = idr_find(&posix_timers_id, (int)timer_id); |
1157 | if (timr) { |
1158 | diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c |
1159 | index a650694..9f9aa32 100644 |
1160 | --- a/kernel/sysctl_binary.c |
1161 | +++ b/kernel/sysctl_binary.c |
1162 | @@ -1194,9 +1194,10 @@ static ssize_t bin_dn_node_address(struct file *file, |
1163 | |
1164 | /* Convert the decnet address to binary */ |
1165 | result = -EIO; |
1166 | - nodep = strchr(buf, '.') + 1; |
1167 | + nodep = strchr(buf, '.'); |
1168 | if (!nodep) |
1169 | goto out; |
1170 | + ++nodep; |
1171 | |
1172 | area = simple_strtoul(buf, NULL, 10); |
1173 | node = simple_strtoul(nodep, NULL, 10); |
1174 | diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c |
1175 | index 6b194d8..4a86e64 100644 |
1176 | --- a/kernel/trace/ftrace.c |
1177 | +++ b/kernel/trace/ftrace.c |
1178 | @@ -3841,37 +3841,51 @@ static void ftrace_init_module(struct module *mod, |
1179 | ftrace_process_locs(mod, start, end); |
1180 | } |
1181 | |
1182 | -static int ftrace_module_notify(struct notifier_block *self, |
1183 | - unsigned long val, void *data) |
1184 | +static int ftrace_module_notify_enter(struct notifier_block *self, |
1185 | + unsigned long val, void *data) |
1186 | { |
1187 | struct module *mod = data; |
1188 | |
1189 | - switch (val) { |
1190 | - case MODULE_STATE_COMING: |
1191 | + if (val == MODULE_STATE_COMING) |
1192 | ftrace_init_module(mod, mod->ftrace_callsites, |
1193 | mod->ftrace_callsites + |
1194 | mod->num_ftrace_callsites); |
1195 | - break; |
1196 | - case MODULE_STATE_GOING: |
1197 | + return 0; |
1198 | +} |
1199 | + |
1200 | +static int ftrace_module_notify_exit(struct notifier_block *self, |
1201 | + unsigned long val, void *data) |
1202 | +{ |
1203 | + struct module *mod = data; |
1204 | + |
1205 | + if (val == MODULE_STATE_GOING) |
1206 | ftrace_release_mod(mod); |
1207 | - break; |
1208 | - } |
1209 | |
1210 | return 0; |
1211 | } |
1212 | #else |
1213 | -static int ftrace_module_notify(struct notifier_block *self, |
1214 | - unsigned long val, void *data) |
1215 | +static int ftrace_module_notify_enter(struct notifier_block *self, |
1216 | + unsigned long val, void *data) |
1217 | +{ |
1218 | + return 0; |
1219 | +} |
1220 | +static int ftrace_module_notify_exit(struct notifier_block *self, |
1221 | + unsigned long val, void *data) |
1222 | { |
1223 | return 0; |
1224 | } |
1225 | #endif /* CONFIG_MODULES */ |
1226 | |
1227 | -struct notifier_block ftrace_module_nb = { |
1228 | - .notifier_call = ftrace_module_notify, |
1229 | +struct notifier_block ftrace_module_enter_nb = { |
1230 | + .notifier_call = ftrace_module_notify_enter, |
1231 | .priority = INT_MAX, /* Run before anything that can use kprobes */ |
1232 | }; |
1233 | |
1234 | +struct notifier_block ftrace_module_exit_nb = { |
1235 | + .notifier_call = ftrace_module_notify_exit, |
1236 | + .priority = INT_MIN, /* Run after anything that can remove kprobes */ |
1237 | +}; |
1238 | + |
1239 | extern unsigned long __start_mcount_loc[]; |
1240 | extern unsigned long __stop_mcount_loc[]; |
1241 | |
1242 | @@ -3903,9 +3917,13 @@ void __init ftrace_init(void) |
1243 | __start_mcount_loc, |
1244 | __stop_mcount_loc); |
1245 | |
1246 | - ret = register_module_notifier(&ftrace_module_nb); |
1247 | + ret = register_module_notifier(&ftrace_module_enter_nb); |
1248 | + if (ret) |
1249 | + pr_warning("Failed to register trace ftrace module enter notifier\n"); |
1250 | + |
1251 | + ret = register_module_notifier(&ftrace_module_exit_nb); |
1252 | if (ret) |
1253 | - pr_warning("Failed to register trace ftrace module notifier\n"); |
1254 | + pr_warning("Failed to register trace ftrace module exit notifier\n"); |
1255 | |
1256 | set_ftrace_early_filters(); |
1257 | |
1258 | diff --git a/lib/idr.c b/lib/idr.c |
1259 | index 4046e29..e90d2d0 100644 |
1260 | --- a/lib/idr.c |
1261 | +++ b/lib/idr.c |
1262 | @@ -625,7 +625,14 @@ void *idr_get_next(struct idr *idp, int *nextidp) |
1263 | return p; |
1264 | } |
1265 | |
1266 | - id += 1 << n; |
1267 | + /* |
1268 | + * Proceed to the next layer at the current level. Unlike |
1269 | + * idr_for_each(), @id isn't guaranteed to be aligned to |
1270 | + * layer boundary at this point and adding 1 << n may |
1271 | + * incorrectly skip IDs. Make sure we jump to the |
1272 | + * beginning of the next layer using round_up(). |
1273 | + */ |
1274 | + id = round_up(id + 1, 1 << n); |
1275 | while (n < fls(id)) { |
1276 | n += IDR_BITS; |
1277 | p = *--paa; |
1278 | diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c |
1279 | index fd9b288..aec7dbb 100644 |
1280 | --- a/net/sunrpc/svc_xprt.c |
1281 | +++ b/net/sunrpc/svc_xprt.c |
1282 | @@ -817,7 +817,6 @@ static void svc_age_temp_xprts(unsigned long closure) |
1283 | struct svc_serv *serv = (struct svc_serv *)closure; |
1284 | struct svc_xprt *xprt; |
1285 | struct list_head *le, *next; |
1286 | - LIST_HEAD(to_be_aged); |
1287 | |
1288 | dprintk("svc_age_temp_xprts\n"); |
1289 | |
1290 | @@ -838,25 +837,15 @@ static void svc_age_temp_xprts(unsigned long closure) |
1291 | if (atomic_read(&xprt->xpt_ref.refcount) > 1 || |
1292 | test_bit(XPT_BUSY, &xprt->xpt_flags)) |
1293 | continue; |
1294 | - svc_xprt_get(xprt); |
1295 | - list_move(le, &to_be_aged); |
1296 | + list_del_init(le); |
1297 | set_bit(XPT_CLOSE, &xprt->xpt_flags); |
1298 | set_bit(XPT_DETACHED, &xprt->xpt_flags); |
1299 | - } |
1300 | - spin_unlock_bh(&serv->sv_lock); |
1301 | - |
1302 | - while (!list_empty(&to_be_aged)) { |
1303 | - le = to_be_aged.next; |
1304 | - /* fiddling the xpt_list node is safe 'cos we're XPT_DETACHED */ |
1305 | - list_del_init(le); |
1306 | - xprt = list_entry(le, struct svc_xprt, xpt_list); |
1307 | - |
1308 | dprintk("queuing xprt %p for closing\n", xprt); |
1309 | |
1310 | /* a thread will dequeue and close it soon */ |
1311 | svc_xprt_enqueue(xprt); |
1312 | - svc_xprt_put(xprt); |
1313 | } |
1314 | + spin_unlock_bh(&serv->sv_lock); |
1315 | |
1316 | mod_timer(&serv->sv_temptimer, jiffies + svc_conn_age_period * HZ); |
1317 | } |
1318 | diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c |
1319 | index 02a6e3f..fa2ce0c 100644 |
1320 | --- a/sound/pci/hda/patch_hdmi.c |
1321 | +++ b/sound/pci/hda/patch_hdmi.c |
1322 | @@ -1244,6 +1244,9 @@ static int generic_hdmi_build_jack(struct hda_codec *codec, int pin_idx) |
1323 | |
1324 | if (pcmdev > 0) |
1325 | sprintf(hdmi_str + strlen(hdmi_str), ",pcm=%d", pcmdev); |
1326 | + if (!is_jack_detectable(codec, per_pin->pin_nid)) |
1327 | + strncat(hdmi_str, " Phantom", |
1328 | + sizeof(hdmi_str) - strlen(hdmi_str) - 1); |
1329 | |
1330 | return snd_hda_jack_add_kctl(codec, per_pin->pin_nid, hdmi_str, 0); |
1331 | } |
1332 | diff --git a/tools/perf/Makefile b/tools/perf/Makefile |
1333 | index c3dd3d4..2db7ba0 100644 |
1334 | --- a/tools/perf/Makefile |
1335 | +++ b/tools/perf/Makefile |
1336 | @@ -241,13 +241,13 @@ $(OUTPUT)util/parse-events-flex.c: util/parse-events.l |
1337 | $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/parse-events-flex.h -t util/parse-events.l > $(OUTPUT)util/parse-events-flex.c |
1338 | |
1339 | $(OUTPUT)util/parse-events-bison.c: util/parse-events.y |
1340 | - $(QUIET_BISON)$(BISON) -v util/parse-events.y -d -o $(OUTPUT)util/parse-events-bison.c |
1341 | + $(QUIET_BISON)$(BISON) -v util/parse-events.y -d -o $(OUTPUT)util/parse-events-bison.c -p parse_events_ |
1342 | |
1343 | $(OUTPUT)util/pmu-flex.c: util/pmu.l |
1344 | $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c |
1345 | |
1346 | $(OUTPUT)util/pmu-bison.c: util/pmu.y |
1347 | - $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c |
1348 | + $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_ |
1349 | |
1350 | $(OUTPUT)util/parse-events.o: $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c |
1351 | $(OUTPUT)util/pmu.o: $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c |
1352 | diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y |
1353 | index d9637da..3f35ea3 100644 |
1354 | --- a/tools/perf/util/parse-events.y |
1355 | +++ b/tools/perf/util/parse-events.y |
1356 | @@ -1,5 +1,4 @@ |
1357 | |
1358 | -%name-prefix "parse_events_" |
1359 | %parse-param {struct list_head *list_all} |
1360 | %parse-param {struct list_head *list_event} |
1361 | %parse-param {int *idx} |
1362 | diff --git a/tools/perf/util/pmu.y b/tools/perf/util/pmu.y |
1363 | index 20ea77e..522943f 100644 |
1364 | --- a/tools/perf/util/pmu.y |
1365 | +++ b/tools/perf/util/pmu.y |
1366 | @@ -1,5 +1,4 @@ |
1367 | |
1368 | -%name-prefix "perf_pmu_" |
1369 | %parse-param {struct list_head *format} |
1370 | %parse-param {char *name} |
1371 |