1 |
commit: 820cb0a07f3c576903790a0b64246286dbe5c37a |
2 |
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Oct 30 13:15:52 2011 +0000 |
4 |
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Oct 30 13:15:52 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-patchset.git;a=commit;h=820cb0a0 |
7 |
|
8 |
EOL 3.0.7. Introduce 3.0.8 |
9 |
|
10 |
--- |
11 |
3.0.7/1006_linux-3.0.7.patch | 1413 -------------------- |
12 |
{3.0.7 => 3.0.8}/0000_README | 4 - |
13 |
.../4420_grsecurity-2.2.2-3.0.8-201110250925.patch | 0 |
14 |
.../4421_grsec-remove-localversion-grsec.patch | 0 |
15 |
{3.0.7 => 3.0.8}/4422_grsec-mute-warnings.patch | 0 |
16 |
.../4423_grsec-remove-protected-paths.patch | 0 |
17 |
.../4425_grsec-pax-without-grsec.patch | 0 |
18 |
.../4430_grsec-kconfig-default-gids.patch | 0 |
19 |
{3.0.7 => 3.0.8}/4435_grsec-kconfig-gentoo.patch | 0 |
20 |
.../4437-grsec-kconfig-proc-user.patch | 0 |
21 |
.../4440_selinux-avc_audit-log-curr_ip.patch | 0 |
22 |
{3.0.7 => 3.0.8}/4445_disable-compat_vdso.patch | 0 |
23 |
12 files changed, 0 insertions(+), 1417 deletions(-) |
24 |
|
25 |
diff --git a/3.0.7/1006_linux-3.0.7.patch b/3.0.7/1006_linux-3.0.7.patch |
26 |
deleted file mode 100644 |
27 |
index 71aa052..0000000 |
28 |
--- a/3.0.7/1006_linux-3.0.7.patch |
29 |
+++ /dev/null |
30 |
@@ -1,1413 +0,0 @@ |
31 |
-diff --git a/Makefile b/Makefile |
32 |
-index 7767a64..11c4249 100644 |
33 |
---- a/Makefile |
34 |
-+++ b/Makefile |
35 |
-@@ -1,6 +1,6 @@ |
36 |
- VERSION = 3 |
37 |
- PATCHLEVEL = 0 |
38 |
--SUBLEVEL = 6 |
39 |
-+SUBLEVEL = 7 |
40 |
- EXTRAVERSION = |
41 |
- NAME = Sneaky Weasel |
42 |
- |
43 |
-diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig |
44 |
-index f8b9392..9a9706c 100644 |
45 |
---- a/arch/arm/mach-ux500/Kconfig |
46 |
-+++ b/arch/arm/mach-ux500/Kconfig |
47 |
-@@ -6,6 +6,7 @@ config UX500_SOC_COMMON |
48 |
- select ARM_GIC |
49 |
- select HAS_MTU |
50 |
- select ARM_ERRATA_753970 |
51 |
-+ select ARM_ERRATA_754322 |
52 |
- |
53 |
- menu "Ux500 SoC" |
54 |
- |
55 |
-diff --git a/arch/mips/jz4740/gpio.c b/arch/mips/jz4740/gpio.c |
56 |
-index 73031f7..4397972 100644 |
57 |
---- a/arch/mips/jz4740/gpio.c |
58 |
-+++ b/arch/mips/jz4740/gpio.c |
59 |
-@@ -18,7 +18,7 @@ |
60 |
- #include <linux/init.h> |
61 |
- |
62 |
- #include <linux/spinlock.h> |
63 |
--#include <linux/sysdev.h> |
64 |
-+#include <linux/syscore_ops.h> |
65 |
- #include <linux/io.h> |
66 |
- #include <linux/gpio.h> |
67 |
- #include <linux/delay.h> |
68 |
-@@ -86,7 +86,6 @@ struct jz_gpio_chip { |
69 |
- spinlock_t lock; |
70 |
- |
71 |
- struct gpio_chip gpio_chip; |
72 |
-- struct sys_device sysdev; |
73 |
- }; |
74 |
- |
75 |
- static struct jz_gpio_chip jz4740_gpio_chips[]; |
76 |
-@@ -459,49 +458,47 @@ static struct jz_gpio_chip jz4740_gpio_chips[] = { |
77 |
- JZ4740_GPIO_CHIP(D), |
78 |
- }; |
79 |
- |
80 |
--static inline struct jz_gpio_chip *sysdev_to_chip(struct sys_device *dev) |
81 |
-+static void jz4740_gpio_suspend_chip(struct jz_gpio_chip *chip) |
82 |
- { |
83 |
-- return container_of(dev, struct jz_gpio_chip, sysdev); |
84 |
-+ chip->suspend_mask = readl(chip->base + JZ_REG_GPIO_MASK); |
85 |
-+ writel(~(chip->wakeup), chip->base + JZ_REG_GPIO_MASK_SET); |
86 |
-+ writel(chip->wakeup, chip->base + JZ_REG_GPIO_MASK_CLEAR); |
87 |
- } |
88 |
- |
89 |
--static int jz4740_gpio_suspend(struct sys_device *dev, pm_message_t state) |
90 |
-+static int jz4740_gpio_suspend(void) |
91 |
- { |
92 |
-- struct jz_gpio_chip *chip = sysdev_to_chip(dev); |
93 |
-+ int i; |
94 |
- |
95 |
-- chip->suspend_mask = readl(chip->base + JZ_REG_GPIO_MASK); |
96 |
-- writel(~(chip->wakeup), chip->base + JZ_REG_GPIO_MASK_SET); |
97 |
-- writel(chip->wakeup, chip->base + JZ_REG_GPIO_MASK_CLEAR); |
98 |
-+ for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); i++) |
99 |
-+ jz4740_gpio_suspend_chip(&jz4740_gpio_chips[i]); |
100 |
- |
101 |
- return 0; |
102 |
- } |
103 |
- |
104 |
--static int jz4740_gpio_resume(struct sys_device *dev) |
105 |
-+static void jz4740_gpio_resume_chip(struct jz_gpio_chip *chip) |
106 |
- { |
107 |
-- struct jz_gpio_chip *chip = sysdev_to_chip(dev); |
108 |
- uint32_t mask = chip->suspend_mask; |
109 |
- |
110 |
- writel(~mask, chip->base + JZ_REG_GPIO_MASK_CLEAR); |
111 |
- writel(mask, chip->base + JZ_REG_GPIO_MASK_SET); |
112 |
-+} |
113 |
- |
114 |
-- return 0; |
115 |
-+static void jz4740_gpio_resume(void) |
116 |
-+{ |
117 |
-+ int i; |
118 |
-+ |
119 |
-+ for (i = ARRAY_SIZE(jz4740_gpio_chips) - 1; i >= 0 ; i--) |
120 |
-+ jz4740_gpio_resume_chip(&jz4740_gpio_chips[i]); |
121 |
- } |
122 |
- |
123 |
--static struct sysdev_class jz4740_gpio_sysdev_class = { |
124 |
-- .name = "gpio", |
125 |
-+static struct syscore_ops jz4740_gpio_syscore_ops = { |
126 |
- .suspend = jz4740_gpio_suspend, |
127 |
- .resume = jz4740_gpio_resume, |
128 |
- }; |
129 |
- |
130 |
--static int jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id) |
131 |
-+static void jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id) |
132 |
- { |
133 |
-- int ret, irq; |
134 |
-- |
135 |
-- chip->sysdev.id = id; |
136 |
-- chip->sysdev.cls = &jz4740_gpio_sysdev_class; |
137 |
-- ret = sysdev_register(&chip->sysdev); |
138 |
-- |
139 |
-- if (ret) |
140 |
-- return ret; |
141 |
-+ int irq; |
142 |
- |
143 |
- spin_lock_init(&chip->lock); |
144 |
- |
145 |
-@@ -519,22 +516,17 @@ static int jz4740_gpio_chip_init(struct jz_gpio_chip *chip, unsigned int id) |
146 |
- irq_set_chip_and_handler(irq, &jz_gpio_irq_chip, |
147 |
- handle_level_irq); |
148 |
- } |
149 |
-- |
150 |
-- return 0; |
151 |
- } |
152 |
- |
153 |
- static int __init jz4740_gpio_init(void) |
154 |
- { |
155 |
- unsigned int i; |
156 |
-- int ret; |
157 |
-- |
158 |
-- ret = sysdev_class_register(&jz4740_gpio_sysdev_class); |
159 |
-- if (ret) |
160 |
-- return ret; |
161 |
- |
162 |
- for (i = 0; i < ARRAY_SIZE(jz4740_gpio_chips); ++i) |
163 |
- jz4740_gpio_chip_init(&jz4740_gpio_chips[i], i); |
164 |
- |
165 |
-+ register_syscore_ops(&jz4740_gpio_syscore_ops); |
166 |
-+ |
167 |
- printk(KERN_INFO "JZ4740 GPIO initialized\n"); |
168 |
- |
169 |
- return 0; |
170 |
-diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c |
171 |
-index 581531d..8e073d8 100644 |
172 |
---- a/arch/sparc/mm/init_64.c |
173 |
-+++ b/arch/sparc/mm/init_64.c |
174 |
-@@ -511,6 +511,11 @@ static void __init read_obp_translations(void) |
175 |
- for (i = 0; i < prom_trans_ents; i++) |
176 |
- prom_trans[i].data &= ~0x0003fe0000000000UL; |
177 |
- } |
178 |
-+ |
179 |
-+ /* Force execute bit on. */ |
180 |
-+ for (i = 0; i < prom_trans_ents; i++) |
181 |
-+ prom_trans[i].data |= (tlb_type == hypervisor ? |
182 |
-+ _PAGE_EXEC_4V : _PAGE_EXEC_4U); |
183 |
- } |
184 |
- |
185 |
- static void __init hypervisor_tlb_lock(unsigned long vaddr, |
186 |
-diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c |
187 |
-index 68c3c13..50b3f14 100644 |
188 |
---- a/arch/x86/pci/acpi.c |
189 |
-+++ b/arch/x86/pci/acpi.c |
190 |
-@@ -43,6 +43,17 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = { |
191 |
- DMI_MATCH(DMI_PRODUCT_NAME, "ALiveSATA2-GLAN"), |
192 |
- }, |
193 |
- }, |
194 |
-+ /* https://bugzilla.kernel.org/show_bug.cgi?id=30552 */ |
195 |
-+ /* 2006 AMD HT/VIA system with two host bridges */ |
196 |
-+ { |
197 |
-+ .callback = set_use_crs, |
198 |
-+ .ident = "ASUS M2V-MX SE", |
199 |
-+ .matches = { |
200 |
-+ DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), |
201 |
-+ DMI_MATCH(DMI_BOARD_NAME, "M2V-MX SE"), |
202 |
-+ DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), |
203 |
-+ }, |
204 |
-+ }, |
205 |
- {} |
206 |
- }; |
207 |
- |
208 |
-diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c |
209 |
-index cab6960..1e9ab9b 100644 |
210 |
---- a/drivers/ata/ahci.c |
211 |
-+++ b/drivers/ata/ahci.c |
212 |
-@@ -812,6 +812,18 @@ static bool ahci_sb600_enable_64bit(struct pci_dev *pdev) |
213 |
- DMI_MATCH(DMI_BOARD_NAME, "MS-7376"), |
214 |
- }, |
215 |
- }, |
216 |
-+ /* |
217 |
-+ * All BIOS versions for the Asus M3A support 64bit DMA. |
218 |
-+ * (all release versions from 0301 to 1206 were tested) |
219 |
-+ */ |
220 |
-+ { |
221 |
-+ .ident = "ASUS M3A", |
222 |
-+ .matches = { |
223 |
-+ DMI_MATCH(DMI_BOARD_VENDOR, |
224 |
-+ "ASUSTeK Computer INC."), |
225 |
-+ DMI_MATCH(DMI_BOARD_NAME, "M3A"), |
226 |
-+ }, |
227 |
-+ }, |
228 |
- { } |
229 |
- }; |
230 |
- const struct dmi_system_id *match; |
231 |
-diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c |
232 |
-index 7ad43c6..79e8ebc 100644 |
233 |
---- a/drivers/gpu/drm/radeon/atombios_dp.c |
234 |
-+++ b/drivers/gpu/drm/radeon/atombios_dp.c |
235 |
-@@ -115,6 +115,7 @@ static int radeon_dp_aux_native_write(struct radeon_connector *radeon_connector, |
236 |
- u8 msg[20]; |
237 |
- int msg_bytes = send_bytes + 4; |
238 |
- u8 ack; |
239 |
-+ unsigned retry; |
240 |
- |
241 |
- if (send_bytes > 16) |
242 |
- return -1; |
243 |
-@@ -125,20 +126,22 @@ static int radeon_dp_aux_native_write(struct radeon_connector *radeon_connector, |
244 |
- msg[3] = (msg_bytes << 4) | (send_bytes - 1); |
245 |
- memcpy(&msg[4], send, send_bytes); |
246 |
- |
247 |
-- while (1) { |
248 |
-+ for (retry = 0; retry < 4; retry++) { |
249 |
- ret = radeon_process_aux_ch(dig_connector->dp_i2c_bus, |
250 |
- msg, msg_bytes, NULL, 0, delay, &ack); |
251 |
-- if (ret < 0) |
252 |
-+ if (ret == -EBUSY) |
253 |
-+ continue; |
254 |
-+ else if (ret < 0) |
255 |
- return ret; |
256 |
- if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) |
257 |
-- break; |
258 |
-+ return send_bytes; |
259 |
- else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) |
260 |
- udelay(400); |
261 |
- else |
262 |
- return -EIO; |
263 |
- } |
264 |
- |
265 |
-- return send_bytes; |
266 |
-+ return -EIO; |
267 |
- } |
268 |
- |
269 |
- static int radeon_dp_aux_native_read(struct radeon_connector *radeon_connector, |
270 |
-@@ -149,26 +152,31 @@ static int radeon_dp_aux_native_read(struct radeon_connector *radeon_connector, |
271 |
- int msg_bytes = 4; |
272 |
- u8 ack; |
273 |
- int ret; |
274 |
-+ unsigned retry; |
275 |
- |
276 |
- msg[0] = address; |
277 |
- msg[1] = address >> 8; |
278 |
- msg[2] = AUX_NATIVE_READ << 4; |
279 |
- msg[3] = (msg_bytes << 4) | (recv_bytes - 1); |
280 |
- |
281 |
-- while (1) { |
282 |
-+ for (retry = 0; retry < 4; retry++) { |
283 |
- ret = radeon_process_aux_ch(dig_connector->dp_i2c_bus, |
284 |
- msg, msg_bytes, recv, recv_bytes, delay, &ack); |
285 |
-- if (ret == 0) |
286 |
-- return -EPROTO; |
287 |
-- if (ret < 0) |
288 |
-+ if (ret == -EBUSY) |
289 |
-+ continue; |
290 |
-+ else if (ret < 0) |
291 |
- return ret; |
292 |
- if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) |
293 |
- return ret; |
294 |
- else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) |
295 |
- udelay(400); |
296 |
-+ else if (ret == 0) |
297 |
-+ return -EPROTO; |
298 |
- else |
299 |
- return -EIO; |
300 |
- } |
301 |
-+ |
302 |
-+ return -EIO; |
303 |
- } |
304 |
- |
305 |
- static void radeon_write_dpcd_reg(struct radeon_connector *radeon_connector, |
306 |
-@@ -232,7 +240,9 @@ int radeon_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, |
307 |
- for (retry = 0; retry < 4; retry++) { |
308 |
- ret = radeon_process_aux_ch(auxch, |
309 |
- msg, msg_bytes, reply, reply_bytes, 0, &ack); |
310 |
-- if (ret < 0) { |
311 |
-+ if (ret == -EBUSY) |
312 |
-+ continue; |
313 |
-+ else if (ret < 0) { |
314 |
- DRM_DEBUG_KMS("aux_ch failed %d\n", ret); |
315 |
- return ret; |
316 |
- } |
317 |
-diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c |
318 |
-index c975581..ea7a24e 100644 |
319 |
---- a/drivers/gpu/drm/radeon/evergreen.c |
320 |
-+++ b/drivers/gpu/drm/radeon/evergreen.c |
321 |
-@@ -1593,48 +1593,6 @@ static u32 evergreen_get_tile_pipe_to_backend_map(struct radeon_device *rdev, |
322 |
- return backend_map; |
323 |
- } |
324 |
- |
325 |
--static void evergreen_program_channel_remap(struct radeon_device *rdev) |
326 |
--{ |
327 |
-- u32 tcp_chan_steer_lo, tcp_chan_steer_hi, mc_shared_chremap, tmp; |
328 |
-- |
329 |
-- tmp = RREG32(MC_SHARED_CHMAP); |
330 |
-- switch ((tmp & NOOFCHAN_MASK) >> NOOFCHAN_SHIFT) { |
331 |
-- case 0: |
332 |
-- case 1: |
333 |
-- case 2: |
334 |
-- case 3: |
335 |
-- default: |
336 |
-- /* default mapping */ |
337 |
-- mc_shared_chremap = 0x00fac688; |
338 |
-- break; |
339 |
-- } |
340 |
-- |
341 |
-- switch (rdev->family) { |
342 |
-- case CHIP_HEMLOCK: |
343 |
-- case CHIP_CYPRESS: |
344 |
-- case CHIP_BARTS: |
345 |
-- tcp_chan_steer_lo = 0x54763210; |
346 |
-- tcp_chan_steer_hi = 0x0000ba98; |
347 |
-- break; |
348 |
-- case CHIP_JUNIPER: |
349 |
-- case CHIP_REDWOOD: |
350 |
-- case CHIP_CEDAR: |
351 |
-- case CHIP_PALM: |
352 |
-- case CHIP_SUMO: |
353 |
-- case CHIP_SUMO2: |
354 |
-- case CHIP_TURKS: |
355 |
-- case CHIP_CAICOS: |
356 |
-- default: |
357 |
-- tcp_chan_steer_lo = 0x76543210; |
358 |
-- tcp_chan_steer_hi = 0x0000ba98; |
359 |
-- break; |
360 |
-- } |
361 |
-- |
362 |
-- WREG32(TCP_CHAN_STEER_LO, tcp_chan_steer_lo); |
363 |
-- WREG32(TCP_CHAN_STEER_HI, tcp_chan_steer_hi); |
364 |
-- WREG32(MC_SHARED_CHREMAP, mc_shared_chremap); |
365 |
--} |
366 |
-- |
367 |
- static void evergreen_gpu_init(struct radeon_device *rdev) |
368 |
- { |
369 |
- u32 cc_rb_backend_disable = 0; |
370 |
-@@ -2080,8 +2038,6 @@ static void evergreen_gpu_init(struct radeon_device *rdev) |
371 |
- WREG32(DMIF_ADDR_CONFIG, gb_addr_config); |
372 |
- WREG32(HDP_ADDR_CONFIG, gb_addr_config); |
373 |
- |
374 |
-- evergreen_program_channel_remap(rdev); |
375 |
-- |
376 |
- num_shader_engines = ((RREG32(GB_ADDR_CONFIG) & NUM_SHADER_ENGINES(3)) >> 12) + 1; |
377 |
- grbm_gfx_index = INSTANCE_BROADCAST_WRITES; |
378 |
- |
379 |
-diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c |
380 |
-index 0b132a3..0c460c4 100644 |
381 |
---- a/drivers/gpu/drm/radeon/ni.c |
382 |
-+++ b/drivers/gpu/drm/radeon/ni.c |
383 |
-@@ -569,36 +569,6 @@ static u32 cayman_get_tile_pipe_to_backend_map(struct radeon_device *rdev, |
384 |
- return backend_map; |
385 |
- } |
386 |
- |
387 |
--static void cayman_program_channel_remap(struct radeon_device *rdev) |
388 |
--{ |
389 |
-- u32 tcp_chan_steer_lo, tcp_chan_steer_hi, mc_shared_chremap, tmp; |
390 |
-- |
391 |
-- tmp = RREG32(MC_SHARED_CHMAP); |
392 |
-- switch ((tmp & NOOFCHAN_MASK) >> NOOFCHAN_SHIFT) { |
393 |
-- case 0: |
394 |
-- case 1: |
395 |
-- case 2: |
396 |
-- case 3: |
397 |
-- default: |
398 |
-- /* default mapping */ |
399 |
-- mc_shared_chremap = 0x00fac688; |
400 |
-- break; |
401 |
-- } |
402 |
-- |
403 |
-- switch (rdev->family) { |
404 |
-- case CHIP_CAYMAN: |
405 |
-- default: |
406 |
-- //tcp_chan_steer_lo = 0x54763210 |
407 |
-- tcp_chan_steer_lo = 0x76543210; |
408 |
-- tcp_chan_steer_hi = 0x0000ba98; |
409 |
-- break; |
410 |
-- } |
411 |
-- |
412 |
-- WREG32(TCP_CHAN_STEER_LO, tcp_chan_steer_lo); |
413 |
-- WREG32(TCP_CHAN_STEER_HI, tcp_chan_steer_hi); |
414 |
-- WREG32(MC_SHARED_CHREMAP, mc_shared_chremap); |
415 |
--} |
416 |
-- |
417 |
- static u32 cayman_get_disable_mask_per_asic(struct radeon_device *rdev, |
418 |
- u32 disable_mask_per_se, |
419 |
- u32 max_disable_mask_per_se, |
420 |
-@@ -841,8 +811,6 @@ static void cayman_gpu_init(struct radeon_device *rdev) |
421 |
- WREG32(DMIF_ADDR_CONFIG, gb_addr_config); |
422 |
- WREG32(HDP_ADDR_CONFIG, gb_addr_config); |
423 |
- |
424 |
-- cayman_program_channel_remap(rdev); |
425 |
-- |
426 |
- /* primary versions */ |
427 |
- WREG32(CC_RB_BACKEND_DISABLE, cc_rb_backend_disable); |
428 |
- WREG32(CC_SYS_RB_BACKEND_DISABLE, cc_rb_backend_disable); |
429 |
-diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c |
430 |
-index d1b36f8..05b8b2c 100644 |
431 |
---- a/drivers/gpu/drm/radeon/radeon_connectors.c |
432 |
-+++ b/drivers/gpu/drm/radeon/radeon_connectors.c |
433 |
-@@ -68,11 +68,11 @@ void radeon_connector_hotplug(struct drm_connector *connector) |
434 |
- if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { |
435 |
- int saved_dpms = connector->dpms; |
436 |
- |
437 |
-- if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) && |
438 |
-- radeon_dp_needs_link_train(radeon_connector)) |
439 |
-- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); |
440 |
-- else |
441 |
-+ /* Only turn off the display it it's physically disconnected */ |
442 |
-+ if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) |
443 |
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); |
444 |
-+ else if (radeon_dp_needs_link_train(radeon_connector)) |
445 |
-+ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); |
446 |
- connector->dpms = saved_dpms; |
447 |
- } |
448 |
- } |
449 |
-diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c |
450 |
-index 3189a7e..f59a682 100644 |
451 |
---- a/drivers/gpu/drm/radeon/radeon_cursor.c |
452 |
-+++ b/drivers/gpu/drm/radeon/radeon_cursor.c |
453 |
-@@ -208,6 +208,13 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, |
454 |
- int xorigin = 0, yorigin = 0; |
455 |
- int w = radeon_crtc->cursor_width; |
456 |
- |
457 |
-+ if (ASIC_IS_AVIVO(rdev)) { |
458 |
-+ /* avivo cursor are offset into the total surface */ |
459 |
-+ x += crtc->x; |
460 |
-+ y += crtc->y; |
461 |
-+ } |
462 |
-+ DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); |
463 |
-+ |
464 |
- if (x < 0) |
465 |
- xorigin = -x + 1; |
466 |
- if (y < 0) |
467 |
-@@ -221,11 +228,6 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, |
468 |
- int i = 0; |
469 |
- struct drm_crtc *crtc_p; |
470 |
- |
471 |
-- /* avivo cursor are offset into the total surface */ |
472 |
-- x += crtc->x; |
473 |
-- y += crtc->y; |
474 |
-- DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); |
475 |
-- |
476 |
- /* avivo cursor image can't end on 128 pixel boundary or |
477 |
- * go past the end of the frame if both crtcs are enabled |
478 |
- */ |
479 |
-diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c |
480 |
-index 13690f3..8a171b2 100644 |
481 |
---- a/drivers/gpu/drm/radeon/radeon_encoders.c |
482 |
-+++ b/drivers/gpu/drm/radeon/radeon_encoders.c |
483 |
-@@ -1755,9 +1755,12 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder) |
484 |
- /* DCE4/5 */ |
485 |
- if (ASIC_IS_DCE4(rdev)) { |
486 |
- dig = radeon_encoder->enc_priv; |
487 |
-- if (ASIC_IS_DCE41(rdev)) |
488 |
-- return radeon_crtc->crtc_id; |
489 |
-- else { |
490 |
-+ if (ASIC_IS_DCE41(rdev)) { |
491 |
-+ if (dig->linkb) |
492 |
-+ return 1; |
493 |
-+ else |
494 |
-+ return 0; |
495 |
-+ } else { |
496 |
- switch (radeon_encoder->encoder_id) { |
497 |
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: |
498 |
- if (dig->linkb) |
499 |
-diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c |
500 |
-index 4de5189..f2516e6 100644 |
501 |
---- a/drivers/gpu/drm/radeon/rv770.c |
502 |
-+++ b/drivers/gpu/drm/radeon/rv770.c |
503 |
-@@ -536,55 +536,6 @@ static u32 r700_get_tile_pipe_to_backend_map(struct radeon_device *rdev, |
504 |
- return backend_map; |
505 |
- } |
506 |
- |
507 |
--static void rv770_program_channel_remap(struct radeon_device *rdev) |
508 |
--{ |
509 |
-- u32 tcp_chan_steer, mc_shared_chremap, tmp; |
510 |
-- bool force_no_swizzle; |
511 |
-- |
512 |
-- switch (rdev->family) { |
513 |
-- case CHIP_RV770: |
514 |
-- case CHIP_RV730: |
515 |
-- force_no_swizzle = false; |
516 |
-- break; |
517 |
-- case CHIP_RV710: |
518 |
-- case CHIP_RV740: |
519 |
-- default: |
520 |
-- force_no_swizzle = true; |
521 |
-- break; |
522 |
-- } |
523 |
-- |
524 |
-- tmp = RREG32(MC_SHARED_CHMAP); |
525 |
-- switch ((tmp & NOOFCHAN_MASK) >> NOOFCHAN_SHIFT) { |
526 |
-- case 0: |
527 |
-- case 1: |
528 |
-- default: |
529 |
-- /* default mapping */ |
530 |
-- mc_shared_chremap = 0x00fac688; |
531 |
-- break; |
532 |
-- case 2: |
533 |
-- case 3: |
534 |
-- if (force_no_swizzle) |
535 |
-- mc_shared_chremap = 0x00fac688; |
536 |
-- else |
537 |
-- mc_shared_chremap = 0x00bbc298; |
538 |
-- break; |
539 |
-- } |
540 |
-- |
541 |
-- if (rdev->family == CHIP_RV740) |
542 |
-- tcp_chan_steer = 0x00ef2a60; |
543 |
-- else |
544 |
-- tcp_chan_steer = 0x00fac688; |
545 |
-- |
546 |
-- /* RV770 CE has special chremap setup */ |
547 |
-- if (rdev->pdev->device == 0x944e) { |
548 |
-- tcp_chan_steer = 0x00b08b08; |
549 |
-- mc_shared_chremap = 0x00b08b08; |
550 |
-- } |
551 |
-- |
552 |
-- WREG32(TCP_CHAN_STEER, tcp_chan_steer); |
553 |
-- WREG32(MC_SHARED_CHREMAP, mc_shared_chremap); |
554 |
--} |
555 |
-- |
556 |
- static void rv770_gpu_init(struct radeon_device *rdev) |
557 |
- { |
558 |
- int i, j, num_qd_pipes; |
559 |
-@@ -784,8 +735,6 @@ static void rv770_gpu_init(struct radeon_device *rdev) |
560 |
- WREG32(DCP_TILING_CONFIG, (gb_tiling_config & 0xffff)); |
561 |
- WREG32(HDP_TILING_CONFIG, (gb_tiling_config & 0xffff)); |
562 |
- |
563 |
-- rv770_program_channel_remap(rdev); |
564 |
-- |
565 |
- WREG32(CC_RB_BACKEND_DISABLE, cc_rb_backend_disable); |
566 |
- WREG32(CC_GC_SHADER_PIPE_CONFIG, cc_gc_shader_pipe_config); |
567 |
- WREG32(GC_USER_SHADER_PIPE_CONFIG, cc_gc_shader_pipe_config); |
568 |
-diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c |
569 |
-index 2747980..16f69be 100644 |
570 |
---- a/drivers/ide/ide-disk.c |
571 |
-+++ b/drivers/ide/ide-disk.c |
572 |
-@@ -435,7 +435,12 @@ static int idedisk_prep_fn(struct request_queue *q, struct request *rq) |
573 |
- if (!(rq->cmd_flags & REQ_FLUSH)) |
574 |
- return BLKPREP_OK; |
575 |
- |
576 |
-- cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); |
577 |
-+ if (rq->special) { |
578 |
-+ cmd = rq->special; |
579 |
-+ memset(cmd, 0, sizeof(*cmd)); |
580 |
-+ } else { |
581 |
-+ cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC); |
582 |
-+ } |
583 |
- |
584 |
- /* FIXME: map struct ide_taskfile on rq->cmd[] */ |
585 |
- BUG_ON(cmd == NULL); |
586 |
-diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c |
587 |
-index 451c3bb..ebdae6e 100644 |
588 |
---- a/drivers/md/dm-table.c |
589 |
-+++ b/drivers/md/dm-table.c |
590 |
-@@ -1184,14 +1184,15 @@ static void dm_table_set_integrity(struct dm_table *t) |
591 |
- return; |
592 |
- |
593 |
- template_disk = dm_table_get_integrity_disk(t, true); |
594 |
-- if (!template_disk && |
595 |
-- blk_integrity_is_initialized(dm_disk(t->md))) { |
596 |
-+ if (template_disk) |
597 |
-+ blk_integrity_register(dm_disk(t->md), |
598 |
-+ blk_get_integrity(template_disk)); |
599 |
-+ else if (blk_integrity_is_initialized(dm_disk(t->md))) |
600 |
- DMWARN("%s: device no longer has a valid integrity profile", |
601 |
- dm_device_name(t->md)); |
602 |
-- return; |
603 |
-- } |
604 |
-- blk_integrity_register(dm_disk(t->md), |
605 |
-- blk_get_integrity(template_disk)); |
606 |
-+ else |
607 |
-+ DMWARN("%s: unable to establish an integrity profile", |
608 |
-+ dm_device_name(t->md)); |
609 |
- } |
610 |
- |
611 |
- void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q, |
612 |
-diff --git a/drivers/md/md.c b/drivers/md/md.c |
613 |
-index 8554082..bc83428 100644 |
614 |
---- a/drivers/md/md.c |
615 |
-+++ b/drivers/md/md.c |
616 |
-@@ -61,6 +61,11 @@ |
617 |
- static void autostart_arrays(int part); |
618 |
- #endif |
619 |
- |
620 |
-+/* pers_list is a list of registered personalities protected |
621 |
-+ * by pers_lock. |
622 |
-+ * pers_lock does extra service to protect accesses to |
623 |
-+ * mddev->thread when the mutex cannot be held. |
624 |
-+ */ |
625 |
- static LIST_HEAD(pers_list); |
626 |
- static DEFINE_SPINLOCK(pers_lock); |
627 |
- |
628 |
-@@ -690,7 +695,12 @@ static void mddev_unlock(mddev_t * mddev) |
629 |
- } else |
630 |
- mutex_unlock(&mddev->reconfig_mutex); |
631 |
- |
632 |
-+ /* was we've dropped the mutex we need a spinlock to |
633 |
-+ * make sur the thread doesn't disappear |
634 |
-+ */ |
635 |
-+ spin_lock(&pers_lock); |
636 |
- md_wakeup_thread(mddev->thread); |
637 |
-+ spin_unlock(&pers_lock); |
638 |
- } |
639 |
- |
640 |
- static mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr) |
641 |
-@@ -6186,11 +6196,18 @@ mdk_thread_t *md_register_thread(void (*run) (mddev_t *), mddev_t *mddev, |
642 |
- return thread; |
643 |
- } |
644 |
- |
645 |
--void md_unregister_thread(mdk_thread_t *thread) |
646 |
-+void md_unregister_thread(mdk_thread_t **threadp) |
647 |
- { |
648 |
-+ mdk_thread_t *thread = *threadp; |
649 |
- if (!thread) |
650 |
- return; |
651 |
- dprintk("interrupting MD-thread pid %d\n", task_pid_nr(thread->tsk)); |
652 |
-+ /* Locking ensures that mddev_unlock does not wake_up a |
653 |
-+ * non-existent thread |
654 |
-+ */ |
655 |
-+ spin_lock(&pers_lock); |
656 |
-+ *threadp = NULL; |
657 |
-+ spin_unlock(&pers_lock); |
658 |
- |
659 |
- kthread_stop(thread->tsk); |
660 |
- kfree(thread); |
661 |
-@@ -7125,8 +7142,7 @@ static void reap_sync_thread(mddev_t *mddev) |
662 |
- mdk_rdev_t *rdev; |
663 |
- |
664 |
- /* resync has finished, collect result */ |
665 |
-- md_unregister_thread(mddev->sync_thread); |
666 |
-- mddev->sync_thread = NULL; |
667 |
-+ md_unregister_thread(&mddev->sync_thread); |
668 |
- if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) && |
669 |
- !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { |
670 |
- /* success...*/ |
671 |
-diff --git a/drivers/md/md.h b/drivers/md/md.h |
672 |
-index 1c26c7a..ce4e328 100644 |
673 |
---- a/drivers/md/md.h |
674 |
-+++ b/drivers/md/md.h |
675 |
-@@ -475,7 +475,7 @@ extern int register_md_personality(struct mdk_personality *p); |
676 |
- extern int unregister_md_personality(struct mdk_personality *p); |
677 |
- extern mdk_thread_t * md_register_thread(void (*run) (mddev_t *mddev), |
678 |
- mddev_t *mddev, const char *name); |
679 |
--extern void md_unregister_thread(mdk_thread_t *thread); |
680 |
-+extern void md_unregister_thread(mdk_thread_t **threadp); |
681 |
- extern void md_wakeup_thread(mdk_thread_t *thread); |
682 |
- extern void md_check_recovery(mddev_t *mddev); |
683 |
- extern void md_write_start(mddev_t *mddev, struct bio *bi); |
684 |
-diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c |
685 |
-index 3535c23..d5b5fb3 100644 |
686 |
---- a/drivers/md/multipath.c |
687 |
-+++ b/drivers/md/multipath.c |
688 |
-@@ -514,8 +514,7 @@ static int multipath_stop (mddev_t *mddev) |
689 |
- { |
690 |
- multipath_conf_t *conf = mddev->private; |
691 |
- |
692 |
-- md_unregister_thread(mddev->thread); |
693 |
-- mddev->thread = NULL; |
694 |
-+ md_unregister_thread(&mddev->thread); |
695 |
- blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
696 |
- mempool_destroy(conf->pool); |
697 |
- kfree(conf->multipaths); |
698 |
-diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c |
699 |
-index f7431b6..3a9e59f 100644 |
700 |
---- a/drivers/md/raid1.c |
701 |
-+++ b/drivers/md/raid1.c |
702 |
-@@ -2045,8 +2045,7 @@ static int stop(mddev_t *mddev) |
703 |
- raise_barrier(conf); |
704 |
- lower_barrier(conf); |
705 |
- |
706 |
-- md_unregister_thread(mddev->thread); |
707 |
-- mddev->thread = NULL; |
708 |
-+ md_unregister_thread(&mddev->thread); |
709 |
- if (conf->r1bio_pool) |
710 |
- mempool_destroy(conf->r1bio_pool); |
711 |
- kfree(conf->mirrors); |
712 |
-diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c |
713 |
-index 6e84668..17cb6ab 100644 |
714 |
---- a/drivers/md/raid10.c |
715 |
-+++ b/drivers/md/raid10.c |
716 |
-@@ -2331,7 +2331,7 @@ static int run(mddev_t *mddev) |
717 |
- return 0; |
718 |
- |
719 |
- out_free_conf: |
720 |
-- md_unregister_thread(mddev->thread); |
721 |
-+ md_unregister_thread(&mddev->thread); |
722 |
- if (conf->r10bio_pool) |
723 |
- mempool_destroy(conf->r10bio_pool); |
724 |
- safe_put_page(conf->tmppage); |
725 |
-@@ -2349,8 +2349,7 @@ static int stop(mddev_t *mddev) |
726 |
- raise_barrier(conf, 0); |
727 |
- lower_barrier(conf); |
728 |
- |
729 |
-- md_unregister_thread(mddev->thread); |
730 |
-- mddev->thread = NULL; |
731 |
-+ md_unregister_thread(&mddev->thread); |
732 |
- blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
733 |
- if (conf->r10bio_pool) |
734 |
- mempool_destroy(conf->r10bio_pool); |
735 |
-diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c |
736 |
-index b72edf3..2581ba1 100644 |
737 |
---- a/drivers/md/raid5.c |
738 |
-+++ b/drivers/md/raid5.c |
739 |
-@@ -5162,8 +5162,7 @@ static int run(mddev_t *mddev) |
740 |
- |
741 |
- return 0; |
742 |
- abort: |
743 |
-- md_unregister_thread(mddev->thread); |
744 |
-- mddev->thread = NULL; |
745 |
-+ md_unregister_thread(&mddev->thread); |
746 |
- if (conf) { |
747 |
- print_raid5_conf(conf); |
748 |
- free_conf(conf); |
749 |
-@@ -5177,8 +5176,7 @@ static int stop(mddev_t *mddev) |
750 |
- { |
751 |
- raid5_conf_t *conf = mddev->private; |
752 |
- |
753 |
-- md_unregister_thread(mddev->thread); |
754 |
-- mddev->thread = NULL; |
755 |
-+ md_unregister_thread(&mddev->thread); |
756 |
- if (mddev->queue) |
757 |
- mddev->queue->backing_dev_info.congested_fn = NULL; |
758 |
- free_conf(conf); |
759 |
-diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c |
760 |
-index b928bc1..8b51cd6 100644 |
761 |
---- a/drivers/misc/lis3lv02d/lis3lv02d.c |
762 |
-+++ b/drivers/misc/lis3lv02d/lis3lv02d.c |
763 |
-@@ -375,12 +375,14 @@ void lis3lv02d_poweron(struct lis3lv02d *lis3) |
764 |
- * both have been read. So the value read will always be correct. |
765 |
- * Set BOOT bit to refresh factory tuning values. |
766 |
- */ |
767 |
-- lis3->read(lis3, CTRL_REG2, ®); |
768 |
-- if (lis3->whoami == WAI_12B) |
769 |
-- reg |= CTRL2_BDU | CTRL2_BOOT; |
770 |
-- else |
771 |
-- reg |= CTRL2_BOOT_8B; |
772 |
-- lis3->write(lis3, CTRL_REG2, reg); |
773 |
-+ if (lis3->pdata) { |
774 |
-+ lis3->read(lis3, CTRL_REG2, ®); |
775 |
-+ if (lis3->whoami == WAI_12B) |
776 |
-+ reg |= CTRL2_BDU | CTRL2_BOOT; |
777 |
-+ else |
778 |
-+ reg |= CTRL2_BOOT_8B; |
779 |
-+ lis3->write(lis3, CTRL_REG2, reg); |
780 |
-+ } |
781 |
- |
782 |
- /* LIS3 power on delay is quite long */ |
783 |
- msleep(lis3->pwron_delay / lis3lv02d_get_odr()); |
784 |
-diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c |
785 |
-index 99d39a6..d513d47 100644 |
786 |
---- a/drivers/mmc/host/mxs-mmc.c |
787 |
-+++ b/drivers/mmc/host/mxs-mmc.c |
788 |
-@@ -564,40 +564,38 @@ static void mxs_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) |
789 |
- |
790 |
- static void mxs_mmc_set_clk_rate(struct mxs_mmc_host *host, unsigned int rate) |
791 |
- { |
792 |
-- unsigned int ssp_rate, bit_rate; |
793 |
-- u32 div1, div2; |
794 |
-+ unsigned int ssp_clk, ssp_sck; |
795 |
-+ u32 clock_divide, clock_rate; |
796 |
- u32 val; |
797 |
- |
798 |
-- ssp_rate = clk_get_rate(host->clk); |
799 |
-+ ssp_clk = clk_get_rate(host->clk); |
800 |
- |
801 |
-- for (div1 = 2; div1 < 254; div1 += 2) { |
802 |
-- div2 = ssp_rate / rate / div1; |
803 |
-- if (div2 < 0x100) |
804 |
-+ for (clock_divide = 2; clock_divide <= 254; clock_divide += 2) { |
805 |
-+ clock_rate = DIV_ROUND_UP(ssp_clk, rate * clock_divide); |
806 |
-+ clock_rate = (clock_rate > 0) ? clock_rate - 1 : 0; |
807 |
-+ if (clock_rate <= 255) |
808 |
- break; |
809 |
- } |
810 |
- |
811 |
-- if (div1 >= 254) { |
812 |
-+ if (clock_divide > 254) { |
813 |
- dev_err(mmc_dev(host->mmc), |
814 |
- "%s: cannot set clock to %d\n", __func__, rate); |
815 |
- return; |
816 |
- } |
817 |
- |
818 |
-- if (div2 == 0) |
819 |
-- bit_rate = ssp_rate / div1; |
820 |
-- else |
821 |
-- bit_rate = ssp_rate / div1 / div2; |
822 |
-+ ssp_sck = ssp_clk / clock_divide / (1 + clock_rate); |
823 |
- |
824 |
- val = readl(host->base + HW_SSP_TIMING); |
825 |
- val &= ~(BM_SSP_TIMING_CLOCK_DIVIDE | BM_SSP_TIMING_CLOCK_RATE); |
826 |
-- val |= BF_SSP(div1, TIMING_CLOCK_DIVIDE); |
827 |
-- val |= BF_SSP(div2 - 1, TIMING_CLOCK_RATE); |
828 |
-+ val |= BF_SSP(clock_divide, TIMING_CLOCK_DIVIDE); |
829 |
-+ val |= BF_SSP(clock_rate, TIMING_CLOCK_RATE); |
830 |
- writel(val, host->base + HW_SSP_TIMING); |
831 |
- |
832 |
-- host->clk_rate = bit_rate; |
833 |
-+ host->clk_rate = ssp_sck; |
834 |
- |
835 |
- dev_dbg(mmc_dev(host->mmc), |
836 |
-- "%s: div1 %d, div2 %d, ssp %d, bit %d, rate %d\n", |
837 |
-- __func__, div1, div2, ssp_rate, bit_rate, rate); |
838 |
-+ "%s: clock_divide %d, clock_rate %d, ssp_clk %d, rate_actual %d, rate_requested %d\n", |
839 |
-+ __func__, clock_divide, clock_rate, ssp_clk, ssp_sck, rate); |
840 |
- } |
841 |
- |
842 |
- static void mxs_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) |
843 |
-diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/e1000e/ich8lan.c |
844 |
-index 3369d1f..ee77b94 100644 |
845 |
---- a/drivers/net/e1000e/ich8lan.c |
846 |
-+++ b/drivers/net/e1000e/ich8lan.c |
847 |
-@@ -137,8 +137,9 @@ |
848 |
- #define HV_PM_CTRL PHY_REG(770, 17) |
849 |
- |
850 |
- /* PHY Low Power Idle Control */ |
851 |
--#define I82579_LPI_CTRL PHY_REG(772, 20) |
852 |
--#define I82579_LPI_CTRL_ENABLE_MASK 0x6000 |
853 |
-+#define I82579_LPI_CTRL PHY_REG(772, 20) |
854 |
-+#define I82579_LPI_CTRL_ENABLE_MASK 0x6000 |
855 |
-+#define I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT 0x80 |
856 |
- |
857 |
- /* EMI Registers */ |
858 |
- #define I82579_EMI_ADDR 0x10 |
859 |
-@@ -1611,6 +1612,7 @@ static s32 e1000_k1_workaround_lv(struct e1000_hw *hw) |
860 |
- s32 ret_val = 0; |
861 |
- u16 status_reg = 0; |
862 |
- u32 mac_reg; |
863 |
-+ u16 phy_reg; |
864 |
- |
865 |
- if (hw->mac.type != e1000_pch2lan) |
866 |
- goto out; |
867 |
-@@ -1625,12 +1627,19 @@ static s32 e1000_k1_workaround_lv(struct e1000_hw *hw) |
868 |
- mac_reg = er32(FEXTNVM4); |
869 |
- mac_reg &= ~E1000_FEXTNVM4_BEACON_DURATION_MASK; |
870 |
- |
871 |
-- if (status_reg & HV_M_STATUS_SPEED_1000) |
872 |
-+ ret_val = e1e_rphy(hw, I82579_LPI_CTRL, &phy_reg); |
873 |
-+ if (ret_val) |
874 |
-+ goto out; |
875 |
-+ |
876 |
-+ if (status_reg & HV_M_STATUS_SPEED_1000) { |
877 |
- mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_8USEC; |
878 |
-- else |
879 |
-+ phy_reg &= ~I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT; |
880 |
-+ } else { |
881 |
- mac_reg |= E1000_FEXTNVM4_BEACON_DURATION_16USEC; |
882 |
-- |
883 |
-+ phy_reg |= I82579_LPI_CTRL_FORCE_PLL_LOCK_COUNT; |
884 |
-+ } |
885 |
- ew32(FEXTNVM4, mac_reg); |
886 |
-+ ret_val = e1e_wphy(hw, I82579_LPI_CTRL, phy_reg); |
887 |
- } |
888 |
- |
889 |
- out: |
890 |
-diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c |
891 |
-index ab8c16f..2886d25 100644 |
892 |
---- a/drivers/net/wireless/rt2x00/rt2x00queue.c |
893 |
-+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c |
894 |
-@@ -556,15 +556,21 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
895 |
- bool local) |
896 |
- { |
897 |
- struct ieee80211_tx_info *tx_info; |
898 |
-- struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX); |
899 |
-+ struct queue_entry *entry; |
900 |
- struct txentry_desc txdesc; |
901 |
- struct skb_frame_desc *skbdesc; |
902 |
- u8 rate_idx, rate_flags; |
903 |
-+ int ret = 0; |
904 |
-+ |
905 |
-+ spin_lock(&queue->tx_lock); |
906 |
-+ |
907 |
-+ entry = rt2x00queue_get_entry(queue, Q_INDEX); |
908 |
- |
909 |
- if (unlikely(rt2x00queue_full(queue))) { |
910 |
- ERROR(queue->rt2x00dev, |
911 |
- "Dropping frame due to full tx queue %d.\n", queue->qid); |
912 |
-- return -ENOBUFS; |
913 |
-+ ret = -ENOBUFS; |
914 |
-+ goto out; |
915 |
- } |
916 |
- |
917 |
- if (unlikely(test_and_set_bit(ENTRY_OWNER_DEVICE_DATA, |
918 |
-@@ -573,7 +579,8 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
919 |
- "Arrived at non-free entry in the non-full queue %d.\n" |
920 |
- "Please file bug report to %s.\n", |
921 |
- queue->qid, DRV_PROJECT); |
922 |
-- return -EINVAL; |
923 |
-+ ret = -EINVAL; |
924 |
-+ goto out; |
925 |
- } |
926 |
- |
927 |
- /* |
928 |
-@@ -635,7 +642,8 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
929 |
- if (unlikely(rt2x00queue_write_tx_data(entry, &txdesc))) { |
930 |
- clear_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags); |
931 |
- entry->skb = NULL; |
932 |
-- return -EIO; |
933 |
-+ ret = -EIO; |
934 |
-+ goto out; |
935 |
- } |
936 |
- |
937 |
- set_bit(ENTRY_DATA_PENDING, &entry->flags); |
938 |
-@@ -644,7 +652,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, |
939 |
- rt2x00queue_write_tx_descriptor(entry, &txdesc); |
940 |
- rt2x00queue_kick_tx_queue(queue, &txdesc); |
941 |
- |
942 |
-- return 0; |
943 |
-+out: |
944 |
-+ spin_unlock(&queue->tx_lock); |
945 |
-+ return ret; |
946 |
- } |
947 |
- |
948 |
- int rt2x00queue_clear_beacon(struct rt2x00_dev *rt2x00dev, |
949 |
-@@ -1185,6 +1195,7 @@ static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, |
950 |
- struct data_queue *queue, enum data_queue_qid qid) |
951 |
- { |
952 |
- mutex_init(&queue->status_lock); |
953 |
-+ spin_lock_init(&queue->tx_lock); |
954 |
- spin_lock_init(&queue->index_lock); |
955 |
- |
956 |
- queue->rt2x00dev = rt2x00dev; |
957 |
-diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.h b/drivers/net/wireless/rt2x00/rt2x00queue.h |
958 |
-index 167d458..ad3d527 100644 |
959 |
---- a/drivers/net/wireless/rt2x00/rt2x00queue.h |
960 |
-+++ b/drivers/net/wireless/rt2x00/rt2x00queue.h |
961 |
-@@ -432,6 +432,7 @@ enum data_queue_flags { |
962 |
- * @flags: Entry flags, see &enum queue_entry_flags. |
963 |
- * @status_lock: The mutex for protecting the start/stop/flush |
964 |
- * handling on this queue. |
965 |
-+ * @tx_lock: Spinlock to serialize tx operations on this queue. |
966 |
- * @index_lock: Spinlock to protect index handling. Whenever @index, @index_done or |
967 |
- * @index_crypt needs to be changed this lock should be grabbed to prevent |
968 |
- * index corruption due to concurrency. |
969 |
-@@ -458,6 +459,7 @@ struct data_queue { |
970 |
- unsigned long flags; |
971 |
- |
972 |
- struct mutex status_lock; |
973 |
-+ spinlock_t tx_lock; |
974 |
- spinlock_t index_lock; |
975 |
- |
976 |
- unsigned int count; |
977 |
-diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c |
978 |
-index c9e3dc0..16ad97d 100644 |
979 |
---- a/drivers/scsi/libsas/sas_expander.c |
980 |
-+++ b/drivers/scsi/libsas/sas_expander.c |
981 |
-@@ -1769,10 +1769,12 @@ static void sas_unregister_devs_sas_addr(struct domain_device *parent, |
982 |
- sas_disable_routing(parent, phy->attached_sas_addr); |
983 |
- } |
984 |
- memset(phy->attached_sas_addr, 0, SAS_ADDR_SIZE); |
985 |
-- sas_port_delete_phy(phy->port, phy->phy); |
986 |
-- if (phy->port->num_phys == 0) |
987 |
-- sas_port_delete(phy->port); |
988 |
-- phy->port = NULL; |
989 |
-+ if (phy->port) { |
990 |
-+ sas_port_delete_phy(phy->port, phy->phy); |
991 |
-+ if (phy->port->num_phys == 0) |
992 |
-+ sas_port_delete(phy->port); |
993 |
-+ phy->port = NULL; |
994 |
-+ } |
995 |
- } |
996 |
- |
997 |
- static int sas_discover_bfs_by_root_level(struct domain_device *root, |
998 |
-diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c |
999 |
-index f461925..a2a1a83 100644 |
1000 |
---- a/drivers/scsi/qla2xxx/qla_os.c |
1001 |
-+++ b/drivers/scsi/qla2xxx/qla_os.c |
1002 |
-@@ -1240,10 +1240,9 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) |
1003 |
- qla2x00_sp_compl(ha, sp); |
1004 |
- } else { |
1005 |
- ctx = sp->ctx; |
1006 |
-- if (ctx->type == SRB_LOGIN_CMD || |
1007 |
-- ctx->type == SRB_LOGOUT_CMD) { |
1008 |
-- ctx->u.iocb_cmd->free(sp); |
1009 |
-- } else { |
1010 |
-+ if (ctx->type == SRB_ELS_CMD_RPT || |
1011 |
-+ ctx->type == SRB_ELS_CMD_HST || |
1012 |
-+ ctx->type == SRB_CT_CMD) { |
1013 |
- struct fc_bsg_job *bsg_job = |
1014 |
- ctx->u.bsg_job; |
1015 |
- if (bsg_job->request->msgcode |
1016 |
-@@ -1255,6 +1254,8 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) |
1017 |
- kfree(sp->ctx); |
1018 |
- mempool_free(sp, |
1019 |
- ha->srb_mempool); |
1020 |
-+ } else { |
1021 |
-+ ctx->u.iocb_cmd->free(sp); |
1022 |
- } |
1023 |
- } |
1024 |
- } |
1025 |
-diff --git a/fs/exec.c b/fs/exec.c |
1026 |
-index 6075a1e..044c13f 100644 |
1027 |
---- a/fs/exec.c |
1028 |
-+++ b/fs/exec.c |
1029 |
-@@ -1411,6 +1411,8 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) |
1030 |
- printable(bprm->buf[2]) && |
1031 |
- printable(bprm->buf[3])) |
1032 |
- break; /* -ENOEXEC */ |
1033 |
-+ if (try) |
1034 |
-+ break; /* -ENOEXEC */ |
1035 |
- request_module("binfmt-%04x", *(unsigned short *)(&bprm->buf[2])); |
1036 |
- #endif |
1037 |
- } |
1038 |
-diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h |
1039 |
-index 9d88e1c..f0c0e8a 100644 |
1040 |
---- a/include/linux/ftrace.h |
1041 |
-+++ b/include/linux/ftrace.h |
1042 |
-@@ -19,6 +19,8 @@ |
1043 |
- |
1044 |
- #include <asm/ftrace.h> |
1045 |
- |
1046 |
-+struct ftrace_hash; |
1047 |
-+ |
1048 |
- #ifdef CONFIG_FUNCTION_TRACER |
1049 |
- |
1050 |
- extern int ftrace_enabled; |
1051 |
-@@ -29,8 +31,6 @@ ftrace_enable_sysctl(struct ctl_table *table, int write, |
1052 |
- |
1053 |
- typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip); |
1054 |
- |
1055 |
--struct ftrace_hash; |
1056 |
-- |
1057 |
- enum { |
1058 |
- FTRACE_OPS_FL_ENABLED = 1 << 0, |
1059 |
- FTRACE_OPS_FL_GLOBAL = 1 << 1, |
1060 |
-@@ -123,7 +123,8 @@ stack_trace_sysctl(struct ctl_table *table, int write, |
1061 |
- struct ftrace_func_command { |
1062 |
- struct list_head list; |
1063 |
- char *name; |
1064 |
-- int (*func)(char *func, char *cmd, |
1065 |
-+ int (*func)(struct ftrace_hash *hash, |
1066 |
-+ char *func, char *cmd, |
1067 |
- char *params, int enable); |
1068 |
- }; |
1069 |
- |
1070 |
-diff --git a/include/linux/ptp_classify.h b/include/linux/ptp_classify.h |
1071 |
-index e07e274..1dc420b 100644 |
1072 |
---- a/include/linux/ptp_classify.h |
1073 |
-+++ b/include/linux/ptp_classify.h |
1074 |
-@@ -51,6 +51,7 @@ |
1075 |
- #define PTP_CLASS_V2_VLAN (PTP_CLASS_V2 | PTP_CLASS_VLAN) |
1076 |
- |
1077 |
- #define PTP_EV_PORT 319 |
1078 |
-+#define PTP_GEN_BIT 0x08 /* indicates general message, if set in message type */ |
1079 |
- |
1080 |
- #define OFF_ETYPE 12 |
1081 |
- #define OFF_IHL 14 |
1082 |
-@@ -116,14 +117,20 @@ static inline int ptp_filter_init(struct sock_filter *f, int len) |
1083 |
- {OP_OR, 0, 0, PTP_CLASS_IPV6 }, /* */ \ |
1084 |
- {OP_RETA, 0, 0, 0 }, /* */ \ |
1085 |
- /*L3x*/ {OP_RETK, 0, 0, PTP_CLASS_NONE }, /* */ \ |
1086 |
--/*L40*/ {OP_JEQ, 0, 6, ETH_P_8021Q }, /* f goto L50 */ \ |
1087 |
-+/*L40*/ {OP_JEQ, 0, 9, ETH_P_8021Q }, /* f goto L50 */ \ |
1088 |
- {OP_LDH, 0, 0, OFF_ETYPE + 4 }, /* */ \ |
1089 |
-- {OP_JEQ, 0, 9, ETH_P_1588 }, /* f goto L60 */ \ |
1090 |
-+ {OP_JEQ, 0, 15, ETH_P_1588 }, /* f goto L60 */ \ |
1091 |
-+ {OP_LDB, 0, 0, ETH_HLEN + VLAN_HLEN }, /* */ \ |
1092 |
-+ {OP_AND, 0, 0, PTP_GEN_BIT }, /* */ \ |
1093 |
-+ {OP_JEQ, 0, 12, 0 }, /* f goto L6x */ \ |
1094 |
- {OP_LDH, 0, 0, ETH_HLEN + VLAN_HLEN }, /* */ \ |
1095 |
- {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \ |
1096 |
- {OP_OR, 0, 0, PTP_CLASS_VLAN }, /* */ \ |
1097 |
- {OP_RETA, 0, 0, 0 }, /* */ \ |
1098 |
--/*L50*/ {OP_JEQ, 0, 4, ETH_P_1588 }, /* f goto L61 */ \ |
1099 |
-+/*L50*/ {OP_JEQ, 0, 7, ETH_P_1588 }, /* f goto L61 */ \ |
1100 |
-+ {OP_LDB, 0, 0, ETH_HLEN }, /* */ \ |
1101 |
-+ {OP_AND, 0, 0, PTP_GEN_BIT }, /* */ \ |
1102 |
-+ {OP_JEQ, 0, 4, 0 }, /* f goto L6x */ \ |
1103 |
- {OP_LDH, 0, 0, ETH_HLEN }, /* */ \ |
1104 |
- {OP_AND, 0, 0, PTP_CLASS_VMASK }, /* */ \ |
1105 |
- {OP_OR, 0, 0, PTP_CLASS_L2 }, /* */ \ |
1106 |
-diff --git a/include/linux/sched.h b/include/linux/sched.h |
1107 |
-index 14a6c7b..4ef452b 100644 |
1108 |
---- a/include/linux/sched.h |
1109 |
-+++ b/include/linux/sched.h |
1110 |
-@@ -1937,7 +1937,6 @@ static inline void disable_sched_clock_irqtime(void) {} |
1111 |
- |
1112 |
- extern unsigned long long |
1113 |
- task_sched_runtime(struct task_struct *task); |
1114 |
--extern unsigned long long thread_group_sched_runtime(struct task_struct *task); |
1115 |
- |
1116 |
- /* sched_exec is called by processes performing an exec */ |
1117 |
- #ifdef CONFIG_SMP |
1118 |
-diff --git a/include/net/ipv6.h b/include/net/ipv6.h |
1119 |
-index 3b5ac1f..c39121f 100644 |
1120 |
---- a/include/net/ipv6.h |
1121 |
-+++ b/include/net/ipv6.h |
1122 |
-@@ -463,7 +463,7 @@ static inline int ipv6_addr_diff(const struct in6_addr *a1, const struct in6_add |
1123 |
- return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr)); |
1124 |
- } |
1125 |
- |
1126 |
--extern void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt); |
1127 |
-+extern void ipv6_select_ident(struct frag_hdr *fhdr, struct in6_addr *addr); |
1128 |
- |
1129 |
- /* |
1130 |
- * Prototypes exported by ipv6 |
1131 |
-diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c |
1132 |
-index 58f405b..c8008dd 100644 |
1133 |
---- a/kernel/posix-cpu-timers.c |
1134 |
-+++ b/kernel/posix-cpu-timers.c |
1135 |
-@@ -250,7 +250,7 @@ void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times) |
1136 |
- do { |
1137 |
- times->utime = cputime_add(times->utime, t->utime); |
1138 |
- times->stime = cputime_add(times->stime, t->stime); |
1139 |
-- times->sum_exec_runtime += t->se.sum_exec_runtime; |
1140 |
-+ times->sum_exec_runtime += task_sched_runtime(t); |
1141 |
- } while_each_thread(tsk, t); |
1142 |
- out: |
1143 |
- rcu_read_unlock(); |
1144 |
-@@ -312,7 +312,8 @@ static int cpu_clock_sample_group(const clockid_t which_clock, |
1145 |
- cpu->cpu = cputime.utime; |
1146 |
- break; |
1147 |
- case CPUCLOCK_SCHED: |
1148 |
-- cpu->sched = thread_group_sched_runtime(p); |
1149 |
-+ thread_group_cputime(p, &cputime); |
1150 |
-+ cpu->sched = cputime.sum_exec_runtime; |
1151 |
- break; |
1152 |
- } |
1153 |
- return 0; |
1154 |
-diff --git a/kernel/sched.c b/kernel/sched.c |
1155 |
-index 8b37360..063d7a4 100644 |
1156 |
---- a/kernel/sched.c |
1157 |
-+++ b/kernel/sched.c |
1158 |
-@@ -3713,30 +3713,6 @@ unsigned long long task_sched_runtime(struct task_struct *p) |
1159 |
- } |
1160 |
- |
1161 |
- /* |
1162 |
-- * Return sum_exec_runtime for the thread group. |
1163 |
-- * In case the task is currently running, return the sum plus current's |
1164 |
-- * pending runtime that have not been accounted yet. |
1165 |
-- * |
1166 |
-- * Note that the thread group might have other running tasks as well, |
1167 |
-- * so the return value not includes other pending runtime that other |
1168 |
-- * running tasks might have. |
1169 |
-- */ |
1170 |
--unsigned long long thread_group_sched_runtime(struct task_struct *p) |
1171 |
--{ |
1172 |
-- struct task_cputime totals; |
1173 |
-- unsigned long flags; |
1174 |
-- struct rq *rq; |
1175 |
-- u64 ns; |
1176 |
-- |
1177 |
-- rq = task_rq_lock(p, &flags); |
1178 |
-- thread_group_cputime(p, &totals); |
1179 |
-- ns = totals.sum_exec_runtime + do_task_delta_exec(p, rq); |
1180 |
-- task_rq_unlock(rq, p, &flags); |
1181 |
-- |
1182 |
-- return ns; |
1183 |
--} |
1184 |
-- |
1185 |
--/* |
1186 |
- * Account user cpu time to a process. |
1187 |
- * @p: the process that the cpu time gets accounted to |
1188 |
- * @cputime: the cpu time spent in user space since the last update |
1189 |
-@@ -4335,7 +4311,7 @@ static inline void sched_submit_work(struct task_struct *tsk) |
1190 |
- blk_schedule_flush_plug(tsk); |
1191 |
- } |
1192 |
- |
1193 |
--asmlinkage void schedule(void) |
1194 |
-+asmlinkage void __sched schedule(void) |
1195 |
- { |
1196 |
- struct task_struct *tsk = current; |
1197 |
- |
1198 |
-diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c |
1199 |
-index 10d0182..17f2319 100644 |
1200 |
---- a/kernel/sched_rt.c |
1201 |
-+++ b/kernel/sched_rt.c |
1202 |
-@@ -1038,7 +1038,7 @@ select_task_rq_rt(struct task_struct *p, int sd_flag, int flags) |
1203 |
- */ |
1204 |
- if (curr && unlikely(rt_task(curr)) && |
1205 |
- (curr->rt.nr_cpus_allowed < 2 || |
1206 |
-- curr->prio < p->prio) && |
1207 |
-+ curr->prio <= p->prio) && |
1208 |
- (p->rt.nr_cpus_allowed > 1)) { |
1209 |
- int target = find_lowest_rq(p); |
1210 |
- |
1211 |
-@@ -1569,7 +1569,7 @@ static void task_woken_rt(struct rq *rq, struct task_struct *p) |
1212 |
- p->rt.nr_cpus_allowed > 1 && |
1213 |
- rt_task(rq->curr) && |
1214 |
- (rq->curr->rt.nr_cpus_allowed < 2 || |
1215 |
-- rq->curr->prio < p->prio)) |
1216 |
-+ rq->curr->prio <= p->prio)) |
1217 |
- push_rt_tasks(rq); |
1218 |
- } |
1219 |
- |
1220 |
-diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c |
1221 |
-index 908038f..ef9271b 100644 |
1222 |
---- a/kernel/trace/ftrace.c |
1223 |
-+++ b/kernel/trace/ftrace.c |
1224 |
-@@ -1744,10 +1744,36 @@ static cycle_t ftrace_update_time; |
1225 |
- static unsigned long ftrace_update_cnt; |
1226 |
- unsigned long ftrace_update_tot_cnt; |
1227 |
- |
1228 |
-+static int ops_traces_mod(struct ftrace_ops *ops) |
1229 |
-+{ |
1230 |
-+ struct ftrace_hash *hash; |
1231 |
-+ |
1232 |
-+ hash = ops->filter_hash; |
1233 |
-+ return !!(!hash || !hash->count); |
1234 |
-+} |
1235 |
-+ |
1236 |
- static int ftrace_update_code(struct module *mod) |
1237 |
- { |
1238 |
- struct dyn_ftrace *p; |
1239 |
- cycle_t start, stop; |
1240 |
-+ unsigned long ref = 0; |
1241 |
-+ |
1242 |
-+ /* |
1243 |
-+ * When adding a module, we need to check if tracers are |
1244 |
-+ * currently enabled and if they are set to trace all functions. |
1245 |
-+ * If they are, we need to enable the module functions as well |
1246 |
-+ * as update the reference counts for those function records. |
1247 |
-+ */ |
1248 |
-+ if (mod) { |
1249 |
-+ struct ftrace_ops *ops; |
1250 |
-+ |
1251 |
-+ for (ops = ftrace_ops_list; |
1252 |
-+ ops != &ftrace_list_end; ops = ops->next) { |
1253 |
-+ if (ops->flags & FTRACE_OPS_FL_ENABLED && |
1254 |
-+ ops_traces_mod(ops)) |
1255 |
-+ ref++; |
1256 |
-+ } |
1257 |
-+ } |
1258 |
- |
1259 |
- start = ftrace_now(raw_smp_processor_id()); |
1260 |
- ftrace_update_cnt = 0; |
1261 |
-@@ -1760,7 +1786,7 @@ static int ftrace_update_code(struct module *mod) |
1262 |
- |
1263 |
- p = ftrace_new_addrs; |
1264 |
- ftrace_new_addrs = p->newlist; |
1265 |
-- p->flags = 0L; |
1266 |
-+ p->flags = ref; |
1267 |
- |
1268 |
- /* |
1269 |
- * Do the initial record conversion from mcount jump |
1270 |
-@@ -1783,7 +1809,7 @@ static int ftrace_update_code(struct module *mod) |
1271 |
- * conversion puts the module to the correct state, thus |
1272 |
- * passing the ftrace_make_call check. |
1273 |
- */ |
1274 |
-- if (ftrace_start_up) { |
1275 |
-+ if (ftrace_start_up && ref) { |
1276 |
- int failed = __ftrace_replace_code(p, 1); |
1277 |
- if (failed) { |
1278 |
- ftrace_bug(failed, p->ip); |
1279 |
-@@ -2407,10 +2433,9 @@ ftrace_match_module_records(struct ftrace_hash *hash, char *buff, char *mod) |
1280 |
- */ |
1281 |
- |
1282 |
- static int |
1283 |
--ftrace_mod_callback(char *func, char *cmd, char *param, int enable) |
1284 |
-+ftrace_mod_callback(struct ftrace_hash *hash, |
1285 |
-+ char *func, char *cmd, char *param, int enable) |
1286 |
- { |
1287 |
-- struct ftrace_ops *ops = &global_ops; |
1288 |
-- struct ftrace_hash *hash; |
1289 |
- char *mod; |
1290 |
- int ret = -EINVAL; |
1291 |
- |
1292 |
-@@ -2430,11 +2455,6 @@ ftrace_mod_callback(char *func, char *cmd, char *param, int enable) |
1293 |
- if (!strlen(mod)) |
1294 |
- return ret; |
1295 |
- |
1296 |
-- if (enable) |
1297 |
-- hash = ops->filter_hash; |
1298 |
-- else |
1299 |
-- hash = ops->notrace_hash; |
1300 |
-- |
1301 |
- ret = ftrace_match_module_records(hash, func, mod); |
1302 |
- if (!ret) |
1303 |
- ret = -EINVAL; |
1304 |
-@@ -2760,7 +2780,7 @@ static int ftrace_process_regex(struct ftrace_hash *hash, |
1305 |
- mutex_lock(&ftrace_cmd_mutex); |
1306 |
- list_for_each_entry(p, &ftrace_commands, list) { |
1307 |
- if (strcmp(p->name, command) == 0) { |
1308 |
-- ret = p->func(func, command, next, enable); |
1309 |
-+ ret = p->func(hash, func, command, next, enable); |
1310 |
- goto out_unlock; |
1311 |
- } |
1312 |
- } |
1313 |
-diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c |
1314 |
-index 8d0e1cc..c7b0c6a 100644 |
1315 |
---- a/kernel/trace/trace_functions.c |
1316 |
-+++ b/kernel/trace/trace_functions.c |
1317 |
-@@ -324,7 +324,8 @@ ftrace_trace_onoff_unreg(char *glob, char *cmd, char *param) |
1318 |
- } |
1319 |
- |
1320 |
- static int |
1321 |
--ftrace_trace_onoff_callback(char *glob, char *cmd, char *param, int enable) |
1322 |
-+ftrace_trace_onoff_callback(struct ftrace_hash *hash, |
1323 |
-+ char *glob, char *cmd, char *param, int enable) |
1324 |
- { |
1325 |
- struct ftrace_probe_ops *ops; |
1326 |
- void *count = (void *)-1; |
1327 |
-diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c |
1328 |
-index 1661296..e17596b 100644 |
1329 |
---- a/net/ipv6/ip6_output.c |
1330 |
-+++ b/net/ipv6/ip6_output.c |
1331 |
-@@ -620,9 +620,9 @@ static u32 __ipv6_select_ident(const struct in6_addr *addr) |
1332 |
- return hash + newid; |
1333 |
- } |
1334 |
- |
1335 |
--void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt) |
1336 |
-+void ipv6_select_ident(struct frag_hdr *fhdr, struct in6_addr *addr) |
1337 |
- { |
1338 |
-- fhdr->identification = htonl(__ipv6_select_ident(&rt->rt6i_dst.addr)); |
1339 |
-+ fhdr->identification = htonl(__ipv6_select_ident(addr)); |
1340 |
- } |
1341 |
- |
1342 |
- int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) |
1343 |
-@@ -709,7 +709,7 @@ int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) |
1344 |
- skb_reset_network_header(skb); |
1345 |
- memcpy(skb_network_header(skb), tmp_hdr, hlen); |
1346 |
- |
1347 |
-- ipv6_select_ident(fh, rt); |
1348 |
-+ ipv6_select_ident(fh, &rt->rt6i_dst.addr); |
1349 |
- fh->nexthdr = nexthdr; |
1350 |
- fh->reserved = 0; |
1351 |
- fh->frag_off = htons(IP6_MF); |
1352 |
-@@ -855,7 +855,7 @@ slow_path: |
1353 |
- fh->nexthdr = nexthdr; |
1354 |
- fh->reserved = 0; |
1355 |
- if (!frag_id) { |
1356 |
-- ipv6_select_ident(fh, rt); |
1357 |
-+ ipv6_select_ident(fh, &rt->rt6i_dst.addr); |
1358 |
- frag_id = fh->identification; |
1359 |
- } else |
1360 |
- fh->identification = frag_id; |
1361 |
-@@ -1146,7 +1146,7 @@ static inline int ip6_ufo_append_data(struct sock *sk, |
1362 |
- skb_shinfo(skb)->gso_size = (mtu - fragheaderlen - |
1363 |
- sizeof(struct frag_hdr)) & ~7; |
1364 |
- skb_shinfo(skb)->gso_type = SKB_GSO_UDP; |
1365 |
-- ipv6_select_ident(&fhdr, rt); |
1366 |
-+ ipv6_select_ident(&fhdr, &rt->rt6i_dst.addr); |
1367 |
- skb_shinfo(skb)->ip6_frag_id = fhdr.identification; |
1368 |
- __skb_queue_tail(&sk->sk_write_queue, skb); |
1369 |
- |
1370 |
-diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c |
1371 |
-index 29213b5..0d920c5 100644 |
1372 |
---- a/net/ipv6/udp.c |
1373 |
-+++ b/net/ipv6/udp.c |
1374 |
-@@ -1309,6 +1309,7 @@ static struct sk_buff *udp6_ufo_fragment(struct sk_buff *skb, u32 features) |
1375 |
- u8 frag_hdr_sz = sizeof(struct frag_hdr); |
1376 |
- int offset; |
1377 |
- __wsum csum; |
1378 |
-+ struct rt6_info *rt = (struct rt6_info *)skb_dst(skb); |
1379 |
- |
1380 |
- mss = skb_shinfo(skb)->gso_size; |
1381 |
- if (unlikely(skb->len <= mss)) |
1382 |
-@@ -1359,7 +1360,8 @@ static struct sk_buff *udp6_ufo_fragment(struct sk_buff *skb, u32 features) |
1383 |
- fptr = (struct frag_hdr *)(skb_network_header(skb) + unfrag_ip6hlen); |
1384 |
- fptr->nexthdr = nexthdr; |
1385 |
- fptr->reserved = 0; |
1386 |
-- ipv6_select_ident(fptr, (struct rt6_info *)skb_dst(skb)); |
1387 |
-+ ipv6_select_ident(fptr, |
1388 |
-+ rt ? &rt->rt6i_dst.addr : &ipv6_hdr(skb)->daddr); |
1389 |
- |
1390 |
- /* Fragment the skb. ipv6 header and the remaining fields of the |
1391 |
- * fragment header are updated in ipv6_gso_segment() |
1392 |
-diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c |
1393 |
-index ffa2ffe..aa091a0 100644 |
1394 |
---- a/sound/soc/codecs/wm8753.c |
1395 |
-+++ b/sound/soc/codecs/wm8753.c |
1396 |
-@@ -1454,8 +1454,8 @@ static int wm8753_probe(struct snd_soc_codec *codec) |
1397 |
- /* set the update bits */ |
1398 |
- snd_soc_update_bits(codec, WM8753_LDAC, 0x0100, 0x0100); |
1399 |
- snd_soc_update_bits(codec, WM8753_RDAC, 0x0100, 0x0100); |
1400 |
-- snd_soc_update_bits(codec, WM8753_LDAC, 0x0100, 0x0100); |
1401 |
-- snd_soc_update_bits(codec, WM8753_RDAC, 0x0100, 0x0100); |
1402 |
-+ snd_soc_update_bits(codec, WM8753_LADC, 0x0100, 0x0100); |
1403 |
-+ snd_soc_update_bits(codec, WM8753_RADC, 0x0100, 0x0100); |
1404 |
- snd_soc_update_bits(codec, WM8753_LOUT1V, 0x0100, 0x0100); |
1405 |
- snd_soc_update_bits(codec, WM8753_ROUT1V, 0x0100, 0x0100); |
1406 |
- snd_soc_update_bits(codec, WM8753_LOUT2V, 0x0100, 0x0100); |
1407 |
-diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c |
1408 |
-index b644575..2b8350b 100644 |
1409 |
---- a/sound/soc/pxa/zylonite.c |
1410 |
-+++ b/sound/soc/pxa/zylonite.c |
1411 |
-@@ -196,20 +196,20 @@ static int zylonite_probe(struct snd_soc_card *card) |
1412 |
- if (clk_pout) { |
1413 |
- pout = clk_get(NULL, "CLK_POUT"); |
1414 |
- if (IS_ERR(pout)) { |
1415 |
-- dev_err(&pdev->dev, "Unable to obtain CLK_POUT: %ld\n", |
1416 |
-+ dev_err(card->dev, "Unable to obtain CLK_POUT: %ld\n", |
1417 |
- PTR_ERR(pout)); |
1418 |
- return PTR_ERR(pout); |
1419 |
- } |
1420 |
- |
1421 |
- ret = clk_enable(pout); |
1422 |
- if (ret != 0) { |
1423 |
-- dev_err(&pdev->dev, "Unable to enable CLK_POUT: %d\n", |
1424 |
-+ dev_err(card->dev, "Unable to enable CLK_POUT: %d\n", |
1425 |
- ret); |
1426 |
- clk_put(pout); |
1427 |
- return ret; |
1428 |
- } |
1429 |
- |
1430 |
-- dev_dbg(&pdev->dev, "MCLK enabled at %luHz\n", |
1431 |
-+ dev_dbg(card->dev, "MCLK enabled at %luHz\n", |
1432 |
- clk_get_rate(pout)); |
1433 |
- } |
1434 |
- |
1435 |
-@@ -241,7 +241,7 @@ static int zylonite_resume_pre(struct snd_soc_card *card) |
1436 |
- if (clk_pout) { |
1437 |
- ret = clk_enable(pout); |
1438 |
- if (ret != 0) |
1439 |
-- dev_err(&pdev->dev, "Unable to enable CLK_POUT: %d\n", |
1440 |
-+ dev_err(card->dev, "Unable to enable CLK_POUT: %d\n", |
1441 |
- ret); |
1442 |
- } |
1443 |
- |
1444 |
|
1445 |
diff --git a/3.0.7/0000_README b/3.0.8/0000_README |
1446 |
similarity index 95% |
1447 |
rename from 3.0.7/0000_README |
1448 |
rename to 3.0.8/0000_README |
1449 |
index b955f8c..331ee41 100644 |
1450 |
--- a/3.0.7/0000_README |
1451 |
+++ b/3.0.8/0000_README |
1452 |
@@ -3,10 +3,6 @@ README |
1453 |
|
1454 |
Individual Patch Descriptions: |
1455 |
----------------------------------------------------------------------------- |
1456 |
-Patch: 1006_linux-3.0.7.patch |
1457 |
-From: http://www.kernel.org |
1458 |
-Desc: Linux 3.0.7 |
1459 |
- |
1460 |
Patch: 4420_grsecurity-2.2.2-3.0.8-201110250925.patch |
1461 |
From: http://www.grsecurity.net |
1462 |
Desc: hardened-sources base patch from upstream grsecurity |
1463 |
|
1464 |
diff --git a/3.0.7/4420_grsecurity-2.2.2-3.0.8-201110250925.patch b/3.0.8/4420_grsecurity-2.2.2-3.0.8-201110250925.patch |
1465 |
similarity index 100% |
1466 |
rename from 3.0.7/4420_grsecurity-2.2.2-3.0.8-201110250925.patch |
1467 |
rename to 3.0.8/4420_grsecurity-2.2.2-3.0.8-201110250925.patch |
1468 |
|
1469 |
diff --git a/3.0.7/4421_grsec-remove-localversion-grsec.patch b/3.0.8/4421_grsec-remove-localversion-grsec.patch |
1470 |
similarity index 100% |
1471 |
rename from 3.0.7/4421_grsec-remove-localversion-grsec.patch |
1472 |
rename to 3.0.8/4421_grsec-remove-localversion-grsec.patch |
1473 |
|
1474 |
diff --git a/3.0.7/4422_grsec-mute-warnings.patch b/3.0.8/4422_grsec-mute-warnings.patch |
1475 |
similarity index 100% |
1476 |
rename from 3.0.7/4422_grsec-mute-warnings.patch |
1477 |
rename to 3.0.8/4422_grsec-mute-warnings.patch |
1478 |
|
1479 |
diff --git a/3.0.7/4423_grsec-remove-protected-paths.patch b/3.0.8/4423_grsec-remove-protected-paths.patch |
1480 |
similarity index 100% |
1481 |
rename from 3.0.7/4423_grsec-remove-protected-paths.patch |
1482 |
rename to 3.0.8/4423_grsec-remove-protected-paths.patch |
1483 |
|
1484 |
diff --git a/3.0.7/4425_grsec-pax-without-grsec.patch b/3.0.8/4425_grsec-pax-without-grsec.patch |
1485 |
similarity index 100% |
1486 |
rename from 3.0.7/4425_grsec-pax-without-grsec.patch |
1487 |
rename to 3.0.8/4425_grsec-pax-without-grsec.patch |
1488 |
|
1489 |
diff --git a/3.0.7/4430_grsec-kconfig-default-gids.patch b/3.0.8/4430_grsec-kconfig-default-gids.patch |
1490 |
similarity index 100% |
1491 |
rename from 3.0.7/4430_grsec-kconfig-default-gids.patch |
1492 |
rename to 3.0.8/4430_grsec-kconfig-default-gids.patch |
1493 |
|
1494 |
diff --git a/3.0.7/4435_grsec-kconfig-gentoo.patch b/3.0.8/4435_grsec-kconfig-gentoo.patch |
1495 |
similarity index 100% |
1496 |
rename from 3.0.7/4435_grsec-kconfig-gentoo.patch |
1497 |
rename to 3.0.8/4435_grsec-kconfig-gentoo.patch |
1498 |
|
1499 |
diff --git a/3.0.7/4437-grsec-kconfig-proc-user.patch b/3.0.8/4437-grsec-kconfig-proc-user.patch |
1500 |
similarity index 100% |
1501 |
rename from 3.0.7/4437-grsec-kconfig-proc-user.patch |
1502 |
rename to 3.0.8/4437-grsec-kconfig-proc-user.patch |
1503 |
|
1504 |
diff --git a/3.0.7/4440_selinux-avc_audit-log-curr_ip.patch b/3.0.8/4440_selinux-avc_audit-log-curr_ip.patch |
1505 |
similarity index 100% |
1506 |
rename from 3.0.7/4440_selinux-avc_audit-log-curr_ip.patch |
1507 |
rename to 3.0.8/4440_selinux-avc_audit-log-curr_ip.patch |
1508 |
|
1509 |
diff --git a/3.0.7/4445_disable-compat_vdso.patch b/3.0.8/4445_disable-compat_vdso.patch |
1510 |
similarity index 100% |
1511 |
rename from 3.0.7/4445_disable-compat_vdso.patch |
1512 |
rename to 3.0.8/4445_disable-compat_vdso.patch |