Annotation of /trunk/kernel-alx/patches-4.14/0118-4.14.19-all-fixes.patch
Parent Directory | Revision Log
Revision 3238 -
(hide annotations)
(download)
Fri Nov 9 12:14:58 2018 UTC (5 years, 10 months ago) by niro
File size: 27415 byte(s)
Fri Nov 9 12:14:58 2018 UTC (5 years, 10 months ago) by niro
File size: 27415 byte(s)
-added up to patches-4.14.79
1 | niro | 3238 | diff --git a/.gitignore b/.gitignore |
2 | index 0c39aa20b6ba..f6050b88e95b 100644 | ||
3 | --- a/.gitignore | ||
4 | +++ b/.gitignore | ||
5 | @@ -7,38 +7,40 @@ | ||
6 | # command after changing this file, to see if there are | ||
7 | # any tracked files which get ignored after the change. | ||
8 | # | ||
9 | -# Normal rules | ||
10 | +# Normal rules (sorted alphabetically) | ||
11 | # | ||
12 | .* | ||
13 | +*.a | ||
14 | +*.bin | ||
15 | +*.bz2 | ||
16 | +*.c.[012]*.* | ||
17 | +*.dtb | ||
18 | +*.dtb.S | ||
19 | +*.dwo | ||
20 | +*.elf | ||
21 | +*.gcno | ||
22 | +*.gz | ||
23 | +*.i | ||
24 | +*.ko | ||
25 | +*.ll | ||
26 | +*.lst | ||
27 | +*.lz4 | ||
28 | +*.lzma | ||
29 | +*.lzo | ||
30 | +*.mod.c | ||
31 | *.o | ||
32 | *.o.* | ||
33 | -*.a | ||
34 | +*.order | ||
35 | +*.patch | ||
36 | *.s | ||
37 | -*.ko | ||
38 | *.so | ||
39 | *.so.dbg | ||
40 | -*.mod.c | ||
41 | -*.i | ||
42 | -*.lst | ||
43 | +*.su | ||
44 | *.symtypes | ||
45 | -*.order | ||
46 | -*.elf | ||
47 | -*.bin | ||
48 | *.tar | ||
49 | -*.gz | ||
50 | -*.bz2 | ||
51 | -*.lzma | ||
52 | *.xz | ||
53 | -*.lz4 | ||
54 | -*.lzo | ||
55 | -*.patch | ||
56 | -*.gcno | ||
57 | -*.ll | ||
58 | -modules.builtin | ||
59 | Module.symvers | ||
60 | -*.dwo | ||
61 | -*.su | ||
62 | -*.c.[012]*.* | ||
63 | +modules.builtin | ||
64 | |||
65 | # | ||
66 | # Top-level generic files | ||
67 | @@ -53,6 +55,11 @@ Module.symvers | ||
68 | /System.map | ||
69 | /Module.markers | ||
70 | |||
71 | +# | ||
72 | +# RPM spec file (make rpm-pkg) | ||
73 | +# | ||
74 | +/*.spec | ||
75 | + | ||
76 | # | ||
77 | # Debian directory (make deb-pkg) | ||
78 | # | ||
79 | diff --git a/Makefile b/Makefile | ||
80 | index a69e5da9ed86..76a0b13623f4 100644 | ||
81 | --- a/Makefile | ||
82 | +++ b/Makefile | ||
83 | @@ -1,7 +1,7 @@ | ||
84 | # SPDX-License-Identifier: GPL-2.0 | ||
85 | VERSION = 4 | ||
86 | PATCHLEVEL = 14 | ||
87 | -SUBLEVEL = 18 | ||
88 | +SUBLEVEL = 19 | ||
89 | EXTRAVERSION = | ||
90 | NAME = Petit Gorille | ||
91 | |||
92 | diff --git a/arch/arc/boot/.gitignore b/arch/arc/boot/.gitignore | ||
93 | index 5246969a20c5..c4c5fd529c25 100644 | ||
94 | --- a/arch/arc/boot/.gitignore | ||
95 | +++ b/arch/arc/boot/.gitignore | ||
96 | @@ -1,2 +1 @@ | ||
97 | -*.dtb* | ||
98 | uImage | ||
99 | diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore | ||
100 | index 3c79f85975aa..ce1c5ff746e7 100644 | ||
101 | --- a/arch/arm/boot/.gitignore | ||
102 | +++ b/arch/arm/boot/.gitignore | ||
103 | @@ -3,4 +3,3 @@ zImage | ||
104 | xipImage | ||
105 | bootpImage | ||
106 | uImage | ||
107 | -*.dtb | ||
108 | diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c | ||
109 | index 0fcd82f01388..b8dc3b516f93 100644 | ||
110 | --- a/arch/arm/kernel/traps.c | ||
111 | +++ b/arch/arm/kernel/traps.c | ||
112 | @@ -790,7 +790,6 @@ void abort(void) | ||
113 | /* if that doesn't kill us, halt */ | ||
114 | panic("Oops failed to kill thread"); | ||
115 | } | ||
116 | -EXPORT_SYMBOL(abort); | ||
117 | |||
118 | void __init trap_init(void) | ||
119 | { | ||
120 | diff --git a/arch/arm64/boot/dts/.gitignore b/arch/arm64/boot/dts/.gitignore | ||
121 | deleted file mode 100644 | ||
122 | index b60ed208c779..000000000000 | ||
123 | --- a/arch/arm64/boot/dts/.gitignore | ||
124 | +++ /dev/null | ||
125 | @@ -1 +0,0 @@ | ||
126 | -*.dtb | ||
127 | diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c | ||
128 | index cb79fba79d43..b88a8dd14933 100644 | ||
129 | --- a/arch/m32r/kernel/traps.c | ||
130 | +++ b/arch/m32r/kernel/traps.c | ||
131 | @@ -122,7 +122,6 @@ void abort(void) | ||
132 | /* if that doesn't kill us, halt */ | ||
133 | panic("Oops failed to kill thread"); | ||
134 | } | ||
135 | -EXPORT_SYMBOL(abort); | ||
136 | |||
137 | void __init trap_init(void) | ||
138 | { | ||
139 | diff --git a/arch/metag/boot/.gitignore b/arch/metag/boot/.gitignore | ||
140 | index 2d6c0c160884..6c662ddb909a 100644 | ||
141 | --- a/arch/metag/boot/.gitignore | ||
142 | +++ b/arch/metag/boot/.gitignore | ||
143 | @@ -1,4 +1,3 @@ | ||
144 | vmlinux* | ||
145 | uImage* | ||
146 | ramdisk.* | ||
147 | -*.dtb* | ||
148 | diff --git a/arch/microblaze/boot/.gitignore b/arch/microblaze/boot/.gitignore | ||
149 | index bf0459186027..679502d64a97 100644 | ||
150 | --- a/arch/microblaze/boot/.gitignore | ||
151 | +++ b/arch/microblaze/boot/.gitignore | ||
152 | @@ -1,3 +1,2 @@ | ||
153 | -*.dtb | ||
154 | linux.bin* | ||
155 | simpleImage.* | ||
156 | diff --git a/arch/mips/boot/.gitignore b/arch/mips/boot/.gitignore | ||
157 | index d3962cd5ce0c..a73d6e2c4f64 100644 | ||
158 | --- a/arch/mips/boot/.gitignore | ||
159 | +++ b/arch/mips/boot/.gitignore | ||
160 | @@ -5,4 +5,3 @@ zImage | ||
161 | zImage.tmp | ||
162 | calc_vmlinuz_load_addr | ||
163 | uImage | ||
164 | -*.dtb | ||
165 | diff --git a/arch/nios2/boot/.gitignore b/arch/nios2/boot/.gitignore | ||
166 | index 109279ca5a4d..64386a8dedd8 100644 | ||
167 | --- a/arch/nios2/boot/.gitignore | ||
168 | +++ b/arch/nios2/boot/.gitignore | ||
169 | @@ -1,2 +1 @@ | ||
170 | -*.dtb | ||
171 | vmImage | ||
172 | diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore | ||
173 | index 84774ccba1c2..f92d0530ceb1 100644 | ||
174 | --- a/arch/powerpc/boot/.gitignore | ||
175 | +++ b/arch/powerpc/boot/.gitignore | ||
176 | @@ -18,7 +18,6 @@ otheros.bld | ||
177 | uImage | ||
178 | cuImage.* | ||
179 | dtbImage.* | ||
180 | -*.dtb | ||
181 | treeImage.* | ||
182 | vmlinux.strip | ||
183 | zImage | ||
184 | diff --git a/arch/unicore32/kernel/traps.c b/arch/unicore32/kernel/traps.c | ||
185 | index 5f25b39f04d4..c4ac6043ebb0 100644 | ||
186 | --- a/arch/unicore32/kernel/traps.c | ||
187 | +++ b/arch/unicore32/kernel/traps.c | ||
188 | @@ -298,7 +298,6 @@ void abort(void) | ||
189 | /* if that doesn't kill us, halt */ | ||
190 | panic("Oops failed to kill thread"); | ||
191 | } | ||
192 | -EXPORT_SYMBOL(abort); | ||
193 | |||
194 | void __init trap_init(void) | ||
195 | { | ||
196 | diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c | ||
197 | index 21be0193d9dc..b034826a0b3b 100644 | ||
198 | --- a/arch/x86/kernel/alternative.c | ||
199 | +++ b/arch/x86/kernel/alternative.c | ||
200 | @@ -287,7 +287,7 @@ recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf) | ||
201 | tgt_rip = next_rip + o_dspl; | ||
202 | n_dspl = tgt_rip - orig_insn; | ||
203 | |||
204 | - DPRINTK("target RIP: %px, new_displ: 0x%x", tgt_rip, n_dspl); | ||
205 | + DPRINTK("target RIP: %p, new_displ: 0x%x", tgt_rip, n_dspl); | ||
206 | |||
207 | if (tgt_rip - orig_insn >= 0) { | ||
208 | if (n_dspl - 2 <= 127) | ||
209 | @@ -344,7 +344,7 @@ static void __init_or_module noinline optimize_nops(struct alt_instr *a, u8 *ins | ||
210 | add_nops(instr + (a->instrlen - a->padlen), a->padlen); | ||
211 | local_irq_restore(flags); | ||
212 | |||
213 | - DUMP_BYTES(instr, a->instrlen, "%px: [%d:%d) optimized NOPs: ", | ||
214 | + DUMP_BYTES(instr, a->instrlen, "%p: [%d:%d) optimized NOPs: ", | ||
215 | instr, a->instrlen - a->padlen, a->padlen); | ||
216 | } | ||
217 | |||
218 | @@ -365,7 +365,7 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start, | ||
219 | u8 *instr, *replacement; | ||
220 | u8 insnbuf[MAX_PATCH_LEN]; | ||
221 | |||
222 | - DPRINTK("alt table %px, -> %px", start, end); | ||
223 | + DPRINTK("alt table %p -> %p", start, end); | ||
224 | /* | ||
225 | * The scan order should be from start to end. A later scanned | ||
226 | * alternative code can overwrite previously scanned alternative code. | ||
227 | @@ -389,14 +389,14 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start, | ||
228 | continue; | ||
229 | } | ||
230 | |||
231 | - DPRINTK("feat: %d*32+%d, old: (%px len: %d), repl: (%px, len: %d), pad: %d", | ||
232 | + DPRINTK("feat: %d*32+%d, old: (%p, len: %d), repl: (%p, len: %d), pad: %d", | ||
233 | a->cpuid >> 5, | ||
234 | a->cpuid & 0x1f, | ||
235 | instr, a->instrlen, | ||
236 | replacement, a->replacementlen, a->padlen); | ||
237 | |||
238 | - DUMP_BYTES(instr, a->instrlen, "%px: old_insn: ", instr); | ||
239 | - DUMP_BYTES(replacement, a->replacementlen, "%px: rpl_insn: ", replacement); | ||
240 | + DUMP_BYTES(instr, a->instrlen, "%p: old_insn: ", instr); | ||
241 | + DUMP_BYTES(replacement, a->replacementlen, "%p: rpl_insn: ", replacement); | ||
242 | |||
243 | memcpy(insnbuf, replacement, a->replacementlen); | ||
244 | insnbuf_sz = a->replacementlen; | ||
245 | @@ -422,7 +422,7 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start, | ||
246 | a->instrlen - a->replacementlen); | ||
247 | insnbuf_sz += a->instrlen - a->replacementlen; | ||
248 | } | ||
249 | - DUMP_BYTES(insnbuf, insnbuf_sz, "%px: final_insn: ", instr); | ||
250 | + DUMP_BYTES(insnbuf, insnbuf_sz, "%p: final_insn: ", instr); | ||
251 | |||
252 | text_poke_early(instr, insnbuf, insnbuf_sz); | ||
253 | } | ||
254 | diff --git a/arch/xtensa/boot/.gitignore b/arch/xtensa/boot/.gitignore | ||
255 | index be7655998b26..38177c7ebcab 100644 | ||
256 | --- a/arch/xtensa/boot/.gitignore | ||
257 | +++ b/arch/xtensa/boot/.gitignore | ||
258 | @@ -1,3 +1,2 @@ | ||
259 | uImage | ||
260 | zImage.redboot | ||
261 | -*.dtb | ||
262 | diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c | ||
263 | index f5f58a6eee5d..e339960dcac7 100644 | ||
264 | --- a/crypto/tcrypt.c | ||
265 | +++ b/crypto/tcrypt.c | ||
266 | @@ -221,11 +221,13 @@ static void sg_init_aead(struct scatterlist *sg, char *xbuf[XBUFSIZE], | ||
267 | } | ||
268 | |||
269 | sg_init_table(sg, np + 1); | ||
270 | - np--; | ||
271 | + if (rem) | ||
272 | + np--; | ||
273 | for (k = 0; k < np; k++) | ||
274 | sg_set_buf(&sg[k + 1], xbuf[k], PAGE_SIZE); | ||
275 | |||
276 | - sg_set_buf(&sg[k + 1], xbuf[k], rem); | ||
277 | + if (rem) | ||
278 | + sg_set_buf(&sg[k + 1], xbuf[k], rem); | ||
279 | } | ||
280 | |||
281 | static void test_aead_speed(const char *algo, int enc, unsigned int secs, | ||
282 | diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_util.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_util.c | ||
283 | index 46768c056193..0c28d0b995cc 100644 | ||
284 | --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_util.c | ||
285 | +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_util.c | ||
286 | @@ -115,3 +115,6 @@ struct mtk_vcodec_ctx *mtk_vcodec_get_curr_ctx(struct mtk_vcodec_dev *dev) | ||
287 | return ctx; | ||
288 | } | ||
289 | EXPORT_SYMBOL(mtk_vcodec_get_curr_ctx); | ||
290 | + | ||
291 | +MODULE_LICENSE("GPL v2"); | ||
292 | +MODULE_DESCRIPTION("Mediatek video codec driver"); | ||
293 | diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.c b/drivers/media/platform/soc_camera/soc_scale_crop.c | ||
294 | index 0116097c0c0f..092c73f24589 100644 | ||
295 | --- a/drivers/media/platform/soc_camera/soc_scale_crop.c | ||
296 | +++ b/drivers/media/platform/soc_camera/soc_scale_crop.c | ||
297 | @@ -419,3 +419,7 @@ void soc_camera_calc_client_output(struct soc_camera_device *icd, | ||
298 | mf->height = soc_camera_shift_scale(rect->height, shift, scale_v); | ||
299 | } | ||
300 | EXPORT_SYMBOL(soc_camera_calc_client_output); | ||
301 | + | ||
302 | +MODULE_DESCRIPTION("soc-camera scaling-cropping functions"); | ||
303 | +MODULE_AUTHOR("Guennadi Liakhovetski <kernel@pengutronix.de>"); | ||
304 | +MODULE_LICENSE("GPL"); | ||
305 | diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | ||
306 | index f7080d0ab874..46b0372dd032 100644 | ||
307 | --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | ||
308 | +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | ||
309 | @@ -3891,7 +3891,7 @@ static void qlcnic_83xx_flush_mbx_queue(struct qlcnic_adapter *adapter) | ||
310 | struct list_head *head = &mbx->cmd_q; | ||
311 | struct qlcnic_cmd_args *cmd = NULL; | ||
312 | |||
313 | - spin_lock(&mbx->queue_lock); | ||
314 | + spin_lock_bh(&mbx->queue_lock); | ||
315 | |||
316 | while (!list_empty(head)) { | ||
317 | cmd = list_entry(head->next, struct qlcnic_cmd_args, list); | ||
318 | @@ -3902,7 +3902,7 @@ static void qlcnic_83xx_flush_mbx_queue(struct qlcnic_adapter *adapter) | ||
319 | qlcnic_83xx_notify_cmd_completion(adapter, cmd); | ||
320 | } | ||
321 | |||
322 | - spin_unlock(&mbx->queue_lock); | ||
323 | + spin_unlock_bh(&mbx->queue_lock); | ||
324 | } | ||
325 | |||
326 | static int qlcnic_83xx_check_mbx_status(struct qlcnic_adapter *adapter) | ||
327 | @@ -3938,12 +3938,12 @@ static void qlcnic_83xx_dequeue_mbx_cmd(struct qlcnic_adapter *adapter, | ||
328 | { | ||
329 | struct qlcnic_mailbox *mbx = adapter->ahw->mailbox; | ||
330 | |||
331 | - spin_lock(&mbx->queue_lock); | ||
332 | + spin_lock_bh(&mbx->queue_lock); | ||
333 | |||
334 | list_del(&cmd->list); | ||
335 | mbx->num_cmds--; | ||
336 | |||
337 | - spin_unlock(&mbx->queue_lock); | ||
338 | + spin_unlock_bh(&mbx->queue_lock); | ||
339 | |||
340 | qlcnic_83xx_notify_cmd_completion(adapter, cmd); | ||
341 | } | ||
342 | @@ -4008,7 +4008,7 @@ static int qlcnic_83xx_enqueue_mbx_cmd(struct qlcnic_adapter *adapter, | ||
343 | init_completion(&cmd->completion); | ||
344 | cmd->rsp_opcode = QLC_83XX_MBX_RESPONSE_UNKNOWN; | ||
345 | |||
346 | - spin_lock(&mbx->queue_lock); | ||
347 | + spin_lock_bh(&mbx->queue_lock); | ||
348 | |||
349 | list_add_tail(&cmd->list, &mbx->cmd_q); | ||
350 | mbx->num_cmds++; | ||
351 | @@ -4016,7 +4016,7 @@ static int qlcnic_83xx_enqueue_mbx_cmd(struct qlcnic_adapter *adapter, | ||
352 | *timeout = cmd->total_cmds * QLC_83XX_MBX_TIMEOUT; | ||
353 | queue_work(mbx->work_q, &mbx->work); | ||
354 | |||
355 | - spin_unlock(&mbx->queue_lock); | ||
356 | + spin_unlock_bh(&mbx->queue_lock); | ||
357 | |||
358 | return 0; | ||
359 | } | ||
360 | @@ -4112,15 +4112,15 @@ static void qlcnic_83xx_mailbox_worker(struct work_struct *work) | ||
361 | mbx->rsp_status = QLC_83XX_MBX_RESPONSE_WAIT; | ||
362 | spin_unlock_irqrestore(&mbx->aen_lock, flags); | ||
363 | |||
364 | - spin_lock(&mbx->queue_lock); | ||
365 | + spin_lock_bh(&mbx->queue_lock); | ||
366 | |||
367 | if (list_empty(head)) { | ||
368 | - spin_unlock(&mbx->queue_lock); | ||
369 | + spin_unlock_bh(&mbx->queue_lock); | ||
370 | return; | ||
371 | } | ||
372 | cmd = list_entry(head->next, struct qlcnic_cmd_args, list); | ||
373 | |||
374 | - spin_unlock(&mbx->queue_lock); | ||
375 | + spin_unlock_bh(&mbx->queue_lock); | ||
376 | |||
377 | mbx_ops->encode_cmd(adapter, cmd); | ||
378 | mbx_ops->nofity_fw(adapter, QLC_83XX_MBX_REQUEST); | ||
379 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
380 | index 958ff931e790..619a1b7281a0 100644 | ||
381 | --- a/drivers/net/ethernet/realtek/r8169.c | ||
382 | +++ b/drivers/net/ethernet/realtek/r8169.c | ||
383 | @@ -1388,7 +1388,7 @@ DECLARE_RTL_COND(rtl_ocp_tx_cond) | ||
384 | { | ||
385 | void __iomem *ioaddr = tp->mmio_addr; | ||
386 | |||
387 | - return RTL_R8(IBISR0) & 0x02; | ||
388 | + return RTL_R8(IBISR0) & 0x20; | ||
389 | } | ||
390 | |||
391 | static void rtl8168ep_stop_cmac(struct rtl8169_private *tp) | ||
392 | @@ -1396,7 +1396,7 @@ static void rtl8168ep_stop_cmac(struct rtl8169_private *tp) | ||
393 | void __iomem *ioaddr = tp->mmio_addr; | ||
394 | |||
395 | RTL_W8(IBCR2, RTL_R8(IBCR2) & ~0x01); | ||
396 | - rtl_msleep_loop_wait_low(tp, &rtl_ocp_tx_cond, 50, 2000); | ||
397 | + rtl_msleep_loop_wait_high(tp, &rtl_ocp_tx_cond, 50, 2000); | ||
398 | RTL_W8(IBISR0, RTL_R8(IBISR0) | 0x20); | ||
399 | RTL_W8(IBCR0, RTL_R8(IBCR0) & ~0x01); | ||
400 | } | ||
401 | diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c | ||
402 | index fc8f8bdf6579..056cb6093630 100644 | ||
403 | --- a/drivers/net/ethernet/rocker/rocker_main.c | ||
404 | +++ b/drivers/net/ethernet/rocker/rocker_main.c | ||
405 | @@ -2902,6 +2902,12 @@ static int rocker_probe(struct pci_dev *pdev, const struct pci_device_id *id) | ||
406 | goto err_alloc_ordered_workqueue; | ||
407 | } | ||
408 | |||
409 | + err = rocker_probe_ports(rocker); | ||
410 | + if (err) { | ||
411 | + dev_err(&pdev->dev, "failed to probe ports\n"); | ||
412 | + goto err_probe_ports; | ||
413 | + } | ||
414 | + | ||
415 | /* Only FIBs pointing to our own netdevs are programmed into | ||
416 | * the device, so no need to pass a callback. | ||
417 | */ | ||
418 | @@ -2918,22 +2924,16 @@ static int rocker_probe(struct pci_dev *pdev, const struct pci_device_id *id) | ||
419 | |||
420 | rocker->hw.id = rocker_read64(rocker, SWITCH_ID); | ||
421 | |||
422 | - err = rocker_probe_ports(rocker); | ||
423 | - if (err) { | ||
424 | - dev_err(&pdev->dev, "failed to probe ports\n"); | ||
425 | - goto err_probe_ports; | ||
426 | - } | ||
427 | - | ||
428 | dev_info(&pdev->dev, "Rocker switch with id %*phN\n", | ||
429 | (int)sizeof(rocker->hw.id), &rocker->hw.id); | ||
430 | |||
431 | return 0; | ||
432 | |||
433 | -err_probe_ports: | ||
434 | - unregister_switchdev_notifier(&rocker_switchdev_notifier); | ||
435 | err_register_switchdev_notifier: | ||
436 | unregister_fib_notifier(&rocker->fib_nb); | ||
437 | err_register_fib_notifier: | ||
438 | + rocker_remove_ports(rocker); | ||
439 | +err_probe_ports: | ||
440 | destroy_workqueue(rocker->rocker_owq); | ||
441 | err_alloc_ordered_workqueue: | ||
442 | free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); | ||
443 | @@ -2961,9 +2961,9 @@ static void rocker_remove(struct pci_dev *pdev) | ||
444 | { | ||
445 | struct rocker *rocker = pci_get_drvdata(pdev); | ||
446 | |||
447 | - rocker_remove_ports(rocker); | ||
448 | unregister_switchdev_notifier(&rocker_switchdev_notifier); | ||
449 | unregister_fib_notifier(&rocker->fib_nb); | ||
450 | + rocker_remove_ports(rocker); | ||
451 | rocker_write32(rocker, CONTROL, ROCKER_CONTROL_RESET); | ||
452 | destroy_workqueue(rocker->rocker_owq); | ||
453 | free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); | ||
454 | diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c | ||
455 | index 2092febfcb42..8d9f02b7a71f 100644 | ||
456 | --- a/drivers/net/usb/qmi_wwan.c | ||
457 | +++ b/drivers/net/usb/qmi_wwan.c | ||
458 | @@ -1243,6 +1243,7 @@ static const struct usb_device_id products[] = { | ||
459 | {QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ | ||
460 | {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */ | ||
461 | {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */ | ||
462 | + {QMI_QUIRK_SET_DTR(0x2c7c, 0x0306, 4)}, /* Quectel EP06 Mini PCIe */ | ||
463 | |||
464 | /* 4. Gobi 1000 devices */ | ||
465 | {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ | ||
466 | diff --git a/drivers/of/unittest-data/.gitignore b/drivers/of/unittest-data/.gitignore | ||
467 | deleted file mode 100644 | ||
468 | index 4b3cf8b16de2..000000000000 | ||
469 | --- a/drivers/of/unittest-data/.gitignore | ||
470 | +++ /dev/null | ||
471 | @@ -1,2 +0,0 @@ | ||
472 | -testcases.dtb | ||
473 | -testcases.dtb.S | ||
474 | diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c | ||
475 | index 5e7200f05873..c17ccb913fde 100644 | ||
476 | --- a/drivers/scsi/storvsc_drv.c | ||
477 | +++ b/drivers/scsi/storvsc_drv.c | ||
478 | @@ -1826,8 +1826,10 @@ static int storvsc_probe(struct hv_device *device, | ||
479 | fc_host_node_name(host) = stor_device->node_name; | ||
480 | fc_host_port_name(host) = stor_device->port_name; | ||
481 | stor_device->rport = fc_remote_port_add(host, 0, &ids); | ||
482 | - if (!stor_device->rport) | ||
483 | + if (!stor_device->rport) { | ||
484 | + ret = -ENOMEM; | ||
485 | goto err_out3; | ||
486 | + } | ||
487 | } | ||
488 | #endif | ||
489 | return 0; | ||
490 | diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c | ||
491 | index bd15309ac5f1..082891dffd9d 100644 | ||
492 | --- a/drivers/vhost/net.c | ||
493 | +++ b/drivers/vhost/net.c | ||
494 | @@ -1212,6 +1212,7 @@ static long vhost_net_reset_owner(struct vhost_net *n) | ||
495 | } | ||
496 | vhost_net_stop(n, &tx_sock, &rx_sock); | ||
497 | vhost_net_flush(n); | ||
498 | + vhost_dev_stop(&n->dev); | ||
499 | vhost_dev_reset_owner(&n->dev, umem); | ||
500 | vhost_net_vq_reset(n); | ||
501 | done: | ||
502 | diff --git a/kernel/exit.c b/kernel/exit.c | ||
503 | index f6cad39f35df..e3a08761eb40 100644 | ||
504 | --- a/kernel/exit.c | ||
505 | +++ b/kernel/exit.c | ||
506 | @@ -1755,3 +1755,12 @@ COMPAT_SYSCALL_DEFINE5(waitid, | ||
507 | return -EFAULT; | ||
508 | } | ||
509 | #endif | ||
510 | + | ||
511 | +__weak void abort(void) | ||
512 | +{ | ||
513 | + BUG(); | ||
514 | + | ||
515 | + /* if that doesn't kill us, halt */ | ||
516 | + panic("Oops failed to kill thread"); | ||
517 | +} | ||
518 | +EXPORT_SYMBOL(abort); | ||
519 | diff --git a/mm/memcontrol.c b/mm/memcontrol.c | ||
520 | index 53f7c919b916..66e7efabf0a1 100644 | ||
521 | --- a/mm/memcontrol.c | ||
522 | +++ b/mm/memcontrol.c | ||
523 | @@ -5828,6 +5828,20 @@ void mem_cgroup_sk_alloc(struct sock *sk) | ||
524 | if (!mem_cgroup_sockets_enabled) | ||
525 | return; | ||
526 | |||
527 | + /* | ||
528 | + * Socket cloning can throw us here with sk_memcg already | ||
529 | + * filled. It won't however, necessarily happen from | ||
530 | + * process context. So the test for root memcg given | ||
531 | + * the current task's memcg won't help us in this case. | ||
532 | + * | ||
533 | + * Respecting the original socket's memcg is a better | ||
534 | + * decision in this case. | ||
535 | + */ | ||
536 | + if (sk->sk_memcg) { | ||
537 | + css_get(&sk->sk_memcg->css); | ||
538 | + return; | ||
539 | + } | ||
540 | + | ||
541 | rcu_read_lock(); | ||
542 | memcg = mem_cgroup_from_task(current); | ||
543 | if (memcg == root_mem_cgroup) | ||
544 | diff --git a/net/core/sock.c b/net/core/sock.c | ||
545 | index 415f441c63b9..beb1e299fed3 100644 | ||
546 | --- a/net/core/sock.c | ||
547 | +++ b/net/core/sock.c | ||
548 | @@ -1677,16 +1677,13 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) | ||
549 | newsk->sk_dst_pending_confirm = 0; | ||
550 | newsk->sk_wmem_queued = 0; | ||
551 | newsk->sk_forward_alloc = 0; | ||
552 | - | ||
553 | - /* sk->sk_memcg will be populated at accept() time */ | ||
554 | - newsk->sk_memcg = NULL; | ||
555 | - | ||
556 | atomic_set(&newsk->sk_drops, 0); | ||
557 | newsk->sk_send_head = NULL; | ||
558 | newsk->sk_userlocks = sk->sk_userlocks & ~SOCK_BINDPORT_LOCK; | ||
559 | atomic_set(&newsk->sk_zckey, 0); | ||
560 | |||
561 | sock_reset_flag(newsk, SOCK_DONE); | ||
562 | + mem_cgroup_sk_alloc(newsk); | ||
563 | cgroup_sk_alloc(&newsk->sk_cgrp_data); | ||
564 | |||
565 | rcu_read_lock(); | ||
566 | diff --git a/net/core/sock_reuseport.c b/net/core/sock_reuseport.c | ||
567 | index 5eeb1d20cc38..676092d7bd81 100644 | ||
568 | --- a/net/core/sock_reuseport.c | ||
569 | +++ b/net/core/sock_reuseport.c | ||
570 | @@ -94,6 +94,16 @@ static struct sock_reuseport *reuseport_grow(struct sock_reuseport *reuse) | ||
571 | return more_reuse; | ||
572 | } | ||
573 | |||
574 | +static void reuseport_free_rcu(struct rcu_head *head) | ||
575 | +{ | ||
576 | + struct sock_reuseport *reuse; | ||
577 | + | ||
578 | + reuse = container_of(head, struct sock_reuseport, rcu); | ||
579 | + if (reuse->prog) | ||
580 | + bpf_prog_destroy(reuse->prog); | ||
581 | + kfree(reuse); | ||
582 | +} | ||
583 | + | ||
584 | /** | ||
585 | * reuseport_add_sock - Add a socket to the reuseport group of another. | ||
586 | * @sk: New socket to add to the group. | ||
587 | @@ -102,7 +112,7 @@ static struct sock_reuseport *reuseport_grow(struct sock_reuseport *reuse) | ||
588 | */ | ||
589 | int reuseport_add_sock(struct sock *sk, struct sock *sk2) | ||
590 | { | ||
591 | - struct sock_reuseport *reuse; | ||
592 | + struct sock_reuseport *old_reuse, *reuse; | ||
593 | |||
594 | if (!rcu_access_pointer(sk2->sk_reuseport_cb)) { | ||
595 | int err = reuseport_alloc(sk2); | ||
596 | @@ -113,10 +123,13 @@ int reuseport_add_sock(struct sock *sk, struct sock *sk2) | ||
597 | |||
598 | spin_lock_bh(&reuseport_lock); | ||
599 | reuse = rcu_dereference_protected(sk2->sk_reuseport_cb, | ||
600 | - lockdep_is_held(&reuseport_lock)), | ||
601 | - WARN_ONCE(rcu_dereference_protected(sk->sk_reuseport_cb, | ||
602 | - lockdep_is_held(&reuseport_lock)), | ||
603 | - "socket already in reuseport group"); | ||
604 | + lockdep_is_held(&reuseport_lock)); | ||
605 | + old_reuse = rcu_dereference_protected(sk->sk_reuseport_cb, | ||
606 | + lockdep_is_held(&reuseport_lock)); | ||
607 | + if (old_reuse && old_reuse->num_socks != 1) { | ||
608 | + spin_unlock_bh(&reuseport_lock); | ||
609 | + return -EBUSY; | ||
610 | + } | ||
611 | |||
612 | if (reuse->num_socks == reuse->max_socks) { | ||
613 | reuse = reuseport_grow(reuse); | ||
614 | @@ -134,19 +147,11 @@ int reuseport_add_sock(struct sock *sk, struct sock *sk2) | ||
615 | |||
616 | spin_unlock_bh(&reuseport_lock); | ||
617 | |||
618 | + if (old_reuse) | ||
619 | + call_rcu(&old_reuse->rcu, reuseport_free_rcu); | ||
620 | return 0; | ||
621 | } | ||
622 | |||
623 | -static void reuseport_free_rcu(struct rcu_head *head) | ||
624 | -{ | ||
625 | - struct sock_reuseport *reuse; | ||
626 | - | ||
627 | - reuse = container_of(head, struct sock_reuseport, rcu); | ||
628 | - if (reuse->prog) | ||
629 | - bpf_prog_destroy(reuse->prog); | ||
630 | - kfree(reuse); | ||
631 | -} | ||
632 | - | ||
633 | void reuseport_detach_sock(struct sock *sk) | ||
634 | { | ||
635 | struct sock_reuseport *reuse; | ||
636 | diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c | ||
637 | index 013fed55b610..fbeb35ad804b 100644 | ||
638 | --- a/net/ipv4/igmp.c | ||
639 | +++ b/net/ipv4/igmp.c | ||
640 | @@ -386,7 +386,11 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, unsigned int mtu) | ||
641 | pip->frag_off = htons(IP_DF); | ||
642 | pip->ttl = 1; | ||
643 | pip->daddr = fl4.daddr; | ||
644 | + | ||
645 | + rcu_read_lock(); | ||
646 | pip->saddr = igmpv3_get_srcaddr(dev, &fl4); | ||
647 | + rcu_read_unlock(); | ||
648 | + | ||
649 | pip->protocol = IPPROTO_IGMP; | ||
650 | pip->tot_len = 0; /* filled in later */ | ||
651 | ip_select_ident(net, skb, NULL); | ||
652 | diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c | ||
653 | index b47a59cb3573..0cc08c512202 100644 | ||
654 | --- a/net/ipv4/inet_connection_sock.c | ||
655 | +++ b/net/ipv4/inet_connection_sock.c | ||
656 | @@ -475,7 +475,6 @@ struct sock *inet_csk_accept(struct sock *sk, int flags, int *err, bool kern) | ||
657 | } | ||
658 | spin_unlock_bh(&queue->fastopenq.lock); | ||
659 | } | ||
660 | - mem_cgroup_sk_alloc(newsk); | ||
661 | out: | ||
662 | release_sock(sk); | ||
663 | if (req) | ||
664 | diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c | ||
665 | index 2a65d806b562..fe11128d7df4 100644 | ||
666 | --- a/net/ipv4/tcp.c | ||
667 | +++ b/net/ipv4/tcp.c | ||
668 | @@ -2379,6 +2379,12 @@ int tcp_disconnect(struct sock *sk, int flags) | ||
669 | |||
670 | WARN_ON(inet->inet_num && !icsk->icsk_bind_hash); | ||
671 | |||
672 | + if (sk->sk_frag.page) { | ||
673 | + put_page(sk->sk_frag.page); | ||
674 | + sk->sk_frag.page = NULL; | ||
675 | + sk->sk_frag.offset = 0; | ||
676 | + } | ||
677 | + | ||
678 | sk->sk_error_report(sk); | ||
679 | return err; | ||
680 | } | ||
681 | diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c | ||
682 | index 8322f26e770e..25c5a0b60cfc 100644 | ||
683 | --- a/net/ipv4/tcp_bbr.c | ||
684 | +++ b/net/ipv4/tcp_bbr.c | ||
685 | @@ -481,7 +481,8 @@ static void bbr_advance_cycle_phase(struct sock *sk) | ||
686 | |||
687 | bbr->cycle_idx = (bbr->cycle_idx + 1) & (CYCLE_LEN - 1); | ||
688 | bbr->cycle_mstamp = tp->delivered_mstamp; | ||
689 | - bbr->pacing_gain = bbr_pacing_gain[bbr->cycle_idx]; | ||
690 | + bbr->pacing_gain = bbr->lt_use_bw ? BBR_UNIT : | ||
691 | + bbr_pacing_gain[bbr->cycle_idx]; | ||
692 | } | ||
693 | |||
694 | /* Gain cycling: cycle pacing gain to converge to fair share of available bw. */ | ||
695 | @@ -490,8 +491,7 @@ static void bbr_update_cycle_phase(struct sock *sk, | ||
696 | { | ||
697 | struct bbr *bbr = inet_csk_ca(sk); | ||
698 | |||
699 | - if ((bbr->mode == BBR_PROBE_BW) && !bbr->lt_use_bw && | ||
700 | - bbr_is_next_cycle_phase(sk, rs)) | ||
701 | + if (bbr->mode == BBR_PROBE_BW && bbr_is_next_cycle_phase(sk, rs)) | ||
702 | bbr_advance_cycle_phase(sk); | ||
703 | } | ||
704 | |||
705 | diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c | ||
706 | index c5318f5f6a14..6a76e41e6d51 100644 | ||
707 | --- a/net/ipv6/addrconf.c | ||
708 | +++ b/net/ipv6/addrconf.c | ||
709 | @@ -184,7 +184,8 @@ static struct rt6_info *addrconf_get_prefix_route(const struct in6_addr *pfx, | ||
710 | |||
711 | static void addrconf_dad_start(struct inet6_ifaddr *ifp); | ||
712 | static void addrconf_dad_work(struct work_struct *w); | ||
713 | -static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id); | ||
714 | +static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id, | ||
715 | + bool send_na); | ||
716 | static void addrconf_dad_run(struct inet6_dev *idev); | ||
717 | static void addrconf_rs_timer(unsigned long data); | ||
718 | static void __ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa); | ||
719 | @@ -3825,12 +3826,17 @@ static void addrconf_dad_begin(struct inet6_ifaddr *ifp) | ||
720 | idev->cnf.accept_dad < 1) || | ||
721 | !(ifp->flags&IFA_F_TENTATIVE) || | ||
722 | ifp->flags & IFA_F_NODAD) { | ||
723 | + bool send_na = false; | ||
724 | + | ||
725 | + if (ifp->flags & IFA_F_TENTATIVE && | ||
726 | + !(ifp->flags & IFA_F_OPTIMISTIC)) | ||
727 | + send_na = true; | ||
728 | bump_id = ifp->flags & IFA_F_TENTATIVE; | ||
729 | ifp->flags &= ~(IFA_F_TENTATIVE|IFA_F_OPTIMISTIC|IFA_F_DADFAILED); | ||
730 | spin_unlock(&ifp->lock); | ||
731 | read_unlock_bh(&idev->lock); | ||
732 | |||
733 | - addrconf_dad_completed(ifp, bump_id); | ||
734 | + addrconf_dad_completed(ifp, bump_id, send_na); | ||
735 | return; | ||
736 | } | ||
737 | |||
738 | @@ -3959,16 +3965,21 @@ static void addrconf_dad_work(struct work_struct *w) | ||
739 | } | ||
740 | |||
741 | if (ifp->dad_probes == 0) { | ||
742 | + bool send_na = false; | ||
743 | + | ||
744 | /* | ||
745 | * DAD was successful | ||
746 | */ | ||
747 | |||
748 | + if (ifp->flags & IFA_F_TENTATIVE && | ||
749 | + !(ifp->flags & IFA_F_OPTIMISTIC)) | ||
750 | + send_na = true; | ||
751 | bump_id = ifp->flags & IFA_F_TENTATIVE; | ||
752 | ifp->flags &= ~(IFA_F_TENTATIVE|IFA_F_OPTIMISTIC|IFA_F_DADFAILED); | ||
753 | spin_unlock(&ifp->lock); | ||
754 | write_unlock_bh(&idev->lock); | ||
755 | |||
756 | - addrconf_dad_completed(ifp, bump_id); | ||
757 | + addrconf_dad_completed(ifp, bump_id, send_na); | ||
758 | |||
759 | goto out; | ||
760 | } | ||
761 | @@ -4006,7 +4017,8 @@ static bool ipv6_lonely_lladdr(struct inet6_ifaddr *ifp) | ||
762 | return true; | ||
763 | } | ||
764 | |||
765 | -static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id) | ||
766 | +static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id, | ||
767 | + bool send_na) | ||
768 | { | ||
769 | struct net_device *dev = ifp->idev->dev; | ||
770 | struct in6_addr lladdr; | ||
771 | @@ -4038,6 +4050,16 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id) | ||
772 | if (send_mld) | ||
773 | ipv6_mc_dad_complete(ifp->idev); | ||
774 | |||
775 | + /* send unsolicited NA if enabled */ | ||
776 | + if (send_na && | ||
777 | + (ifp->idev->cnf.ndisc_notify || | ||
778 | + dev_net(dev)->ipv6.devconf_all->ndisc_notify)) { | ||
779 | + ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifp->addr, | ||
780 | + /*router=*/ !!ifp->idev->cnf.forwarding, | ||
781 | + /*solicited=*/ false, /*override=*/ true, | ||
782 | + /*inc_opt=*/ true); | ||
783 | + } | ||
784 | + | ||
785 | if (send_rs) { | ||
786 | /* | ||
787 | * If a host as already performed a random delay | ||
788 | diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c | ||
789 | index bcbd5f3bf8bd..9ccbf74deb99 100644 | ||
790 | --- a/net/ipv6/af_inet6.c | ||
791 | +++ b/net/ipv6/af_inet6.c | ||
792 | @@ -284,6 +284,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | ||
793 | struct net *net = sock_net(sk); | ||
794 | __be32 v4addr = 0; | ||
795 | unsigned short snum; | ||
796 | + bool saved_ipv6only; | ||
797 | int addr_type = 0; | ||
798 | int err = 0; | ||
799 | |||
800 | @@ -389,19 +390,21 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | ||
801 | if (!(addr_type & IPV6_ADDR_MULTICAST)) | ||
802 | np->saddr = addr->sin6_addr; | ||
803 | |||
804 | + saved_ipv6only = sk->sk_ipv6only; | ||
805 | + if (addr_type != IPV6_ADDR_ANY && addr_type != IPV6_ADDR_MAPPED) | ||
806 | + sk->sk_ipv6only = 1; | ||
807 | + | ||
808 | /* Make sure we are allowed to bind here. */ | ||
809 | if ((snum || !inet->bind_address_no_port) && | ||
810 | sk->sk_prot->get_port(sk, snum)) { | ||
811 | + sk->sk_ipv6only = saved_ipv6only; | ||
812 | inet_reset_saddr(sk); | ||
813 | err = -EADDRINUSE; | ||
814 | goto out; | ||
815 | } | ||
816 | |||
817 | - if (addr_type != IPV6_ADDR_ANY) { | ||
818 | + if (addr_type != IPV6_ADDR_ANY) | ||
819 | sk->sk_userlocks |= SOCK_BINDADDR_LOCK; | ||
820 | - if (addr_type != IPV6_ADDR_MAPPED) | ||
821 | - sk->sk_ipv6only = 1; | ||
822 | - } | ||
823 | if (snum) | ||
824 | sk->sk_userlocks |= SOCK_BINDPORT_LOCK; | ||
825 | inet->inet_sport = htons(inet->inet_num); | ||
826 | diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c | ||
827 | index f5500f5444e9..e1060f28410d 100644 | ||
828 | --- a/net/ipv6/ip6mr.c | ||
829 | +++ b/net/ipv6/ip6mr.c | ||
830 | @@ -496,6 +496,7 @@ static void *ipmr_mfc_seq_start(struct seq_file *seq, loff_t *pos) | ||
831 | return ERR_PTR(-ENOENT); | ||
832 | |||
833 | it->mrt = mrt; | ||
834 | + it->cache = NULL; | ||
835 | return *pos ? ipmr_mfc_seq_idx(net, seq->private, *pos - 1) | ||
836 | : SEQ_START_TOKEN; | ||
837 | } | ||
838 | diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c | ||
839 | index 266a530414d7..2a937c8d19e9 100644 | ||
840 | --- a/net/ipv6/ndisc.c | ||
841 | +++ b/net/ipv6/ndisc.c | ||
842 | @@ -558,6 +558,11 @@ static void ndisc_send_unsol_na(struct net_device *dev) | ||
843 | |||
844 | read_lock_bh(&idev->lock); | ||
845 | list_for_each_entry(ifa, &idev->addr_list, if_list) { | ||
846 | + /* skip tentative addresses until dad completes */ | ||
847 | + if (ifa->flags & IFA_F_TENTATIVE && | ||
848 | + !(ifa->flags & IFA_F_OPTIMISTIC)) | ||
849 | + continue; | ||
850 | + | ||
851 | ndisc_send_na(dev, &in6addr_linklocal_allnodes, &ifa->addr, | ||
852 | /*router=*/ !!idev->cnf.forwarding, | ||
853 | /*solicited=*/ false, /*override=*/ true, | ||
854 | diff --git a/scripts/package/Makefile b/scripts/package/Makefile | ||
855 | index 34de8b953ecf..348af5b20618 100644 | ||
856 | --- a/scripts/package/Makefile | ||
857 | +++ b/scripts/package/Makefile | ||
858 | @@ -50,7 +50,6 @@ rpm-pkg rpm: FORCE | ||
859 | $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec | ||
860 | $(call cmd,src_tar,$(KERNELPATH),kernel.spec) | ||
861 | +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ta $(KERNELPATH).tar.gz | ||
862 | - rm $(KERNELPATH).tar.gz kernel.spec | ||
863 | |||
864 | # binrpm-pkg | ||
865 | # --------------------------------------------------------------------------- | ||
866 | @@ -59,7 +58,8 @@ binrpm-pkg: FORCE | ||
867 | $(CONFIG_SHELL) $(MKSPEC) prebuilt > $(objtree)/binkernel.spec | ||
868 | +rpmbuild $(RPMOPTS) --define "_builddir $(objtree)" --target \ | ||
869 | $(UTS_MACHINE) -bb $(objtree)/binkernel.spec | ||
870 | - rm binkernel.spec | ||
871 | + | ||
872 | +clean-files += $(objtree)/*.spec | ||
873 | |||
874 | # Deb target | ||
875 | # --------------------------------------------------------------------------- |