Contents of /trunk/kernel-alx/patches-5.4/0226-5.4.127-all-fixes.patch
Parent Directory | Revision Log
Revision 3635 -
(show annotations)
(download)
Mon Oct 24 12:34:12 2022 UTC (19 months ago) by niro
File size: 21830 byte(s)
Mon Oct 24 12:34:12 2022 UTC (19 months ago) by niro
File size: 21830 byte(s)
-sync kernel patches
1 | diff --git a/Makefile b/Makefile |
2 | index 184d9e029130c..ba10c68113427 100644 |
3 | --- a/Makefile |
4 | +++ b/Makefile |
5 | @@ -1,7 +1,7 @@ |
6 | # SPDX-License-Identifier: GPL-2.0 |
7 | VERSION = 5 |
8 | PATCHLEVEL = 4 |
9 | -SUBLEVEL = 126 |
10 | +SUBLEVEL = 127 |
11 | EXTRAVERSION = |
12 | NAME = Kleptomaniac Octopus |
13 | |
14 | diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c |
15 | index 418a61ecb8275..5e86145db0e2a 100644 |
16 | --- a/arch/arm/mach-omap2/board-n8x0.c |
17 | +++ b/arch/arm/mach-omap2/board-n8x0.c |
18 | @@ -322,6 +322,7 @@ static int n8x0_mmc_get_cover_state(struct device *dev, int slot) |
19 | |
20 | static void n8x0_mmc_callback(void *data, u8 card_mask) |
21 | { |
22 | +#ifdef CONFIG_MMC_OMAP |
23 | int bit, *openp, index; |
24 | |
25 | if (board_is_n800()) { |
26 | @@ -339,7 +340,6 @@ static void n8x0_mmc_callback(void *data, u8 card_mask) |
27 | else |
28 | *openp = 0; |
29 | |
30 | -#ifdef CONFIG_MMC_OMAP |
31 | omap_mmc_notify_cover_event(mmc_device, index, *openp); |
32 | #else |
33 | pr_warn("MMC: notify cover event not available\n"); |
34 | diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile |
35 | index f5e9142102454..1cbe0ad78b0f3 100644 |
36 | --- a/arch/riscv/Makefile |
37 | +++ b/arch/riscv/Makefile |
38 | @@ -34,6 +34,15 @@ else |
39 | KBUILD_LDFLAGS += -melf32lriscv |
40 | endif |
41 | |
42 | +ifeq ($(CONFIG_LD_IS_LLD),y) |
43 | + KBUILD_CFLAGS += -mno-relax |
44 | + KBUILD_AFLAGS += -mno-relax |
45 | +ifneq ($(LLVM_IAS),1) |
46 | + KBUILD_CFLAGS += -Wa,-mno-relax |
47 | + KBUILD_AFLAGS += -Wa,-mno-relax |
48 | +endif |
49 | +endif |
50 | + |
51 | # ISA string setting |
52 | riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima |
53 | riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima |
54 | diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c |
55 | index 08062de3fbebd..2b1175bb2daee 100644 |
56 | --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c |
57 | +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c |
58 | @@ -2917,7 +2917,7 @@ bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context, |
59 | voltage_supported = dcn20_validate_bandwidth_internal(dc, context, false); |
60 | dummy_pstate_supported = context->bw_ctx.bw.dcn.clk.p_state_change_support; |
61 | |
62 | - if (voltage_supported && dummy_pstate_supported) { |
63 | + if (voltage_supported && (dummy_pstate_supported || !(context->stream_count))) { |
64 | context->bw_ctx.bw.dcn.clk.p_state_change_support = false; |
65 | goto restore_dml_state; |
66 | } |
67 | diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c |
68 | index 6c3d221652393..0419b6105c8a5 100644 |
69 | --- a/drivers/gpu/drm/tegra/sor.c |
70 | +++ b/drivers/gpu/drm/tegra/sor.c |
71 | @@ -2875,21 +2875,21 @@ static int tegra_sor_init(struct host1x_client *client) |
72 | if (err < 0) { |
73 | dev_err(sor->dev, "failed to acquire SOR reset: %d\n", |
74 | err); |
75 | - return err; |
76 | + goto rpm_put; |
77 | } |
78 | |
79 | err = reset_control_assert(sor->rst); |
80 | if (err < 0) { |
81 | dev_err(sor->dev, "failed to assert SOR reset: %d\n", |
82 | err); |
83 | - return err; |
84 | + goto rpm_put; |
85 | } |
86 | } |
87 | |
88 | err = clk_prepare_enable(sor->clk); |
89 | if (err < 0) { |
90 | dev_err(sor->dev, "failed to enable clock: %d\n", err); |
91 | - return err; |
92 | + goto rpm_put; |
93 | } |
94 | |
95 | usleep_range(1000, 3000); |
96 | @@ -2900,7 +2900,7 @@ static int tegra_sor_init(struct host1x_client *client) |
97 | dev_err(sor->dev, "failed to deassert SOR reset: %d\n", |
98 | err); |
99 | clk_disable_unprepare(sor->clk); |
100 | - return err; |
101 | + goto rpm_put; |
102 | } |
103 | |
104 | reset_control_release(sor->rst); |
105 | @@ -2929,6 +2929,12 @@ static int tegra_sor_init(struct host1x_client *client) |
106 | tegra_sor_writel(sor, value, SOR_INT_MASK); |
107 | |
108 | return 0; |
109 | + |
110 | +rpm_put: |
111 | + if (sor->rst) |
112 | + pm_runtime_put(sor->dev); |
113 | + |
114 | + return err; |
115 | } |
116 | |
117 | static int tegra_sor_exit(struct host1x_client *client) |
118 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
119 | index 8d202011b2db5..550fff6e41eca 100644 |
120 | --- a/drivers/hid/hid-core.c |
121 | +++ b/drivers/hid/hid-core.c |
122 | @@ -1998,6 +1998,9 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask) |
123 | case BUS_I2C: |
124 | bus = "I2C"; |
125 | break; |
126 | + case BUS_VIRTUAL: |
127 | + bus = "VIRTUAL"; |
128 | + break; |
129 | default: |
130 | bus = "<UNKNOWN>"; |
131 | } |
132 | diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c |
133 | index 9453147d020db..01135713e8f9b 100644 |
134 | --- a/drivers/hid/hid-debug.c |
135 | +++ b/drivers/hid/hid-debug.c |
136 | @@ -929,6 +929,7 @@ static const char *keys[KEY_MAX + 1] = { |
137 | [KEY_APPSELECT] = "AppSelect", |
138 | [KEY_SCREENSAVER] = "ScreenSaver", |
139 | [KEY_VOICECOMMAND] = "VoiceCommand", |
140 | + [KEY_EMOJI_PICKER] = "EmojiPicker", |
141 | [KEY_BRIGHTNESS_MIN] = "BrightnessMin", |
142 | [KEY_BRIGHTNESS_MAX] = "BrightnessMax", |
143 | [KEY_BRIGHTNESS_AUTO] = "BrightnessAuto", |
144 | diff --git a/drivers/hid/hid-gt683r.c b/drivers/hid/hid-gt683r.c |
145 | index 898871c8c768e..29ccb0accfba8 100644 |
146 | --- a/drivers/hid/hid-gt683r.c |
147 | +++ b/drivers/hid/hid-gt683r.c |
148 | @@ -54,6 +54,7 @@ static const struct hid_device_id gt683r_led_id[] = { |
149 | { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) }, |
150 | { } |
151 | }; |
152 | +MODULE_DEVICE_TABLE(hid, gt683r_led_id); |
153 | |
154 | static void gt683r_brightness_set(struct led_classdev *led_cdev, |
155 | enum led_brightness brightness) |
156 | diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h |
157 | index 1bfa690143d79..6ed6158d4f732 100644 |
158 | --- a/drivers/hid/hid-ids.h |
159 | +++ b/drivers/hid/hid-ids.h |
160 | @@ -741,6 +741,7 @@ |
161 | #define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085 |
162 | #define USB_DEVICE_ID_LENOVO_X1_TAB 0x60a3 |
163 | #define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 |
164 | +#define USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E 0x600e |
165 | #define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d |
166 | #define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019 0x6019 |
167 | #define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E 0x602e |
168 | @@ -1028,6 +1029,7 @@ |
169 | #define USB_DEVICE_ID_SAITEK_X52 0x075c |
170 | #define USB_DEVICE_ID_SAITEK_X52_2 0x0255 |
171 | #define USB_DEVICE_ID_SAITEK_X52_PRO 0x0762 |
172 | +#define USB_DEVICE_ID_SAITEK_X65 0x0b6a |
173 | |
174 | #define USB_VENDOR_ID_SAMSUNG 0x0419 |
175 | #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001 |
176 | diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c |
177 | index ec08895e7b1dc..6d551ae251c0a 100644 |
178 | --- a/drivers/hid/hid-input.c |
179 | +++ b/drivers/hid/hid-input.c |
180 | @@ -957,6 +957,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel |
181 | |
182 | case 0x0cd: map_key_clear(KEY_PLAYPAUSE); break; |
183 | case 0x0cf: map_key_clear(KEY_VOICECOMMAND); break; |
184 | + |
185 | + case 0x0d9: map_key_clear(KEY_EMOJI_PICKER); break; |
186 | + |
187 | case 0x0e0: map_abs_clear(ABS_VOLUME); break; |
188 | case 0x0e2: map_key_clear(KEY_MUTE); break; |
189 | case 0x0e5: map_key_clear(KEY_BASSBOOST); break; |
190 | diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c |
191 | index f290ba856323a..37270b8f4e58b 100644 |
192 | --- a/drivers/hid/hid-multitouch.c |
193 | +++ b/drivers/hid/hid-multitouch.c |
194 | @@ -1587,13 +1587,13 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi) |
195 | /* we do not set suffix = "Touchscreen" */ |
196 | hi->input->name = hdev->name; |
197 | break; |
198 | - case HID_DG_STYLUS: |
199 | - /* force BTN_STYLUS to allow tablet matching in udev */ |
200 | - __set_bit(BTN_STYLUS, hi->input->keybit); |
201 | - break; |
202 | case HID_VD_ASUS_CUSTOM_MEDIA_KEYS: |
203 | suffix = "Custom Media Keys"; |
204 | break; |
205 | + case HID_DG_STYLUS: |
206 | + /* force BTN_STYLUS to allow tablet matching in udev */ |
207 | + __set_bit(BTN_STYLUS, hi->input->keybit); |
208 | + fallthrough; |
209 | case HID_DG_PEN: |
210 | suffix = "Stylus"; |
211 | break; |
212 | diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c |
213 | index f35d919c4ebab..efc9d0d281709 100644 |
214 | --- a/drivers/hid/hid-quirks.c |
215 | +++ b/drivers/hid/hid-quirks.c |
216 | @@ -110,6 +110,7 @@ static const struct hid_device_id hid_quirks[] = { |
217 | { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HID_QUIRK_MULTI_INPUT }, |
218 | { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HID_QUIRK_MULTI_INPUT }, |
219 | { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL }, |
220 | + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E), HID_QUIRK_ALWAYS_POLL }, |
221 | { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL }, |
222 | { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019), HID_QUIRK_ALWAYS_POLL }, |
223 | { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E), HID_QUIRK_ALWAYS_POLL }, |
224 | @@ -158,6 +159,7 @@ static const struct hid_device_id hid_quirks[] = { |
225 | { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, |
226 | { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, |
227 | { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, |
228 | + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X65), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, |
229 | { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2), HID_QUIRK_NO_INIT_REPORTS }, |
230 | { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), HID_QUIRK_NO_INIT_REPORTS }, |
231 | { HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB), HID_QUIRK_NOGET }, |
232 | diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c |
233 | index 3dd7d32467378..f9983145d4e70 100644 |
234 | --- a/drivers/hid/hid-sensor-hub.c |
235 | +++ b/drivers/hid/hid-sensor-hub.c |
236 | @@ -210,16 +210,21 @@ int sensor_hub_set_feature(struct hid_sensor_hub_device *hsdev, u32 report_id, |
237 | buffer_size = buffer_size / sizeof(__s32); |
238 | if (buffer_size) { |
239 | for (i = 0; i < buffer_size; ++i) { |
240 | - hid_set_field(report->field[field_index], i, |
241 | - (__force __s32)cpu_to_le32(*buf32)); |
242 | + ret = hid_set_field(report->field[field_index], i, |
243 | + (__force __s32)cpu_to_le32(*buf32)); |
244 | + if (ret) |
245 | + goto done_proc; |
246 | + |
247 | ++buf32; |
248 | } |
249 | } |
250 | if (remaining_bytes) { |
251 | value = 0; |
252 | memcpy(&value, (u8 *)buf32, remaining_bytes); |
253 | - hid_set_field(report->field[field_index], i, |
254 | - (__force __s32)cpu_to_le32(value)); |
255 | + ret = hid_set_field(report->field[field_index], i, |
256 | + (__force __s32)cpu_to_le32(value)); |
257 | + if (ret) |
258 | + goto done_proc; |
259 | } |
260 | hid_hw_request(hsdev->hdev, report, HID_REQ_SET_REPORT); |
261 | hid_hw_wait(hsdev->hdev); |
262 | diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c |
263 | index 17a638f150824..1cfbbaf6901da 100644 |
264 | --- a/drivers/hid/usbhid/hid-core.c |
265 | +++ b/drivers/hid/usbhid/hid-core.c |
266 | @@ -374,7 +374,7 @@ static int hid_submit_ctrl(struct hid_device *hid) |
267 | raw_report = usbhid->ctrl[usbhid->ctrltail].raw_report; |
268 | dir = usbhid->ctrl[usbhid->ctrltail].dir; |
269 | |
270 | - len = ((report->size - 1) >> 3) + 1 + (report->id > 0); |
271 | + len = hid_report_len(report); |
272 | if (dir == USB_DIR_OUT) { |
273 | usbhid->urbctrl->pipe = usb_sndctrlpipe(hid_to_usb_dev(hid), 0); |
274 | usbhid->urbctrl->transfer_buffer_length = len; |
275 | diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c |
276 | index c979f38a2e0cb..c4c7160949825 100644 |
277 | --- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c |
278 | +++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c |
279 | @@ -3849,6 +3849,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
280 | dev_err(&pdev->dev, |
281 | "invalid sram_size %dB or board span %ldB\n", |
282 | mgp->sram_size, mgp->board_span); |
283 | + status = -EINVAL; |
284 | goto abort_with_ioremap; |
285 | } |
286 | memcpy_fromio(mgp->eeprom_strings, |
287 | diff --git a/drivers/nvme/target/loop.c b/drivers/nvme/target/loop.c |
288 | index 82b87a4c50f63..f657a12bf1fef 100644 |
289 | --- a/drivers/nvme/target/loop.c |
290 | +++ b/drivers/nvme/target/loop.c |
291 | @@ -252,7 +252,8 @@ static const struct blk_mq_ops nvme_loop_admin_mq_ops = { |
292 | |
293 | static void nvme_loop_destroy_admin_queue(struct nvme_loop_ctrl *ctrl) |
294 | { |
295 | - clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags); |
296 | + if (!test_and_clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags)) |
297 | + return; |
298 | nvmet_sq_destroy(&ctrl->queues[0].nvme_sq); |
299 | blk_cleanup_queue(ctrl->ctrl.admin_q); |
300 | blk_cleanup_queue(ctrl->ctrl.fabrics_q); |
301 | @@ -288,6 +289,7 @@ static void nvme_loop_destroy_io_queues(struct nvme_loop_ctrl *ctrl) |
302 | clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[i].flags); |
303 | nvmet_sq_destroy(&ctrl->queues[i].nvme_sq); |
304 | } |
305 | + ctrl->ctrl.queue_count = 1; |
306 | } |
307 | |
308 | static int nvme_loop_init_io_queues(struct nvme_loop_ctrl *ctrl) |
309 | @@ -394,6 +396,7 @@ static int nvme_loop_configure_admin_queue(struct nvme_loop_ctrl *ctrl) |
310 | return 0; |
311 | |
312 | out_cleanup_queue: |
313 | + clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags); |
314 | blk_cleanup_queue(ctrl->ctrl.admin_q); |
315 | out_cleanup_fabrics_q: |
316 | blk_cleanup_queue(ctrl->ctrl.fabrics_q); |
317 | diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c |
318 | index 9c0955c334e3e..7a6306f8483ec 100644 |
319 | --- a/drivers/scsi/qedf/qedf_main.c |
320 | +++ b/drivers/scsi/qedf/qedf_main.c |
321 | @@ -1729,22 +1729,20 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled) |
322 | fcoe_wwn_to_str(vport->port_name, buf, sizeof(buf)); |
323 | QEDF_WARN(&(base_qedf->dbg_ctx), "Failed to create vport, " |
324 | "WWPN (0x%s) already exists.\n", buf); |
325 | - goto err1; |
326 | + return rc; |
327 | } |
328 | |
329 | if (atomic_read(&base_qedf->link_state) != QEDF_LINK_UP) { |
330 | QEDF_WARN(&(base_qedf->dbg_ctx), "Cannot create vport " |
331 | "because link is not up.\n"); |
332 | - rc = -EIO; |
333 | - goto err1; |
334 | + return -EIO; |
335 | } |
336 | |
337 | vn_port = libfc_vport_create(vport, sizeof(struct qedf_ctx)); |
338 | if (!vn_port) { |
339 | QEDF_WARN(&(base_qedf->dbg_ctx), "Could not create lport " |
340 | "for vport.\n"); |
341 | - rc = -ENOMEM; |
342 | - goto err1; |
343 | + return -ENOMEM; |
344 | } |
345 | |
346 | fcoe_wwn_to_str(vport->port_name, buf, sizeof(buf)); |
347 | @@ -1768,7 +1766,7 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled) |
348 | if (rc) { |
349 | QEDF_ERR(&(base_qedf->dbg_ctx), "Could not allocate memory " |
350 | "for lport stats.\n"); |
351 | - goto err2; |
352 | + goto err; |
353 | } |
354 | |
355 | fc_set_wwnn(vn_port, vport->node_name); |
356 | @@ -1786,7 +1784,7 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled) |
357 | if (rc) { |
358 | QEDF_WARN(&base_qedf->dbg_ctx, |
359 | "Error adding Scsi_Host rc=0x%x.\n", rc); |
360 | - goto err2; |
361 | + goto err; |
362 | } |
363 | |
364 | /* Set default dev_loss_tmo based on module parameter */ |
365 | @@ -1827,9 +1825,10 @@ static int qedf_vport_create(struct fc_vport *vport, bool disabled) |
366 | vport_qedf->dbg_ctx.host_no = vn_port->host->host_no; |
367 | vport_qedf->dbg_ctx.pdev = base_qedf->pdev; |
368 | |
369 | -err2: |
370 | + return 0; |
371 | + |
372 | +err: |
373 | scsi_host_put(vn_port->host); |
374 | -err1: |
375 | return rc; |
376 | } |
377 | |
378 | @@ -1870,8 +1869,7 @@ static int qedf_vport_destroy(struct fc_vport *vport) |
379 | fc_lport_free_stats(vn_port); |
380 | |
381 | /* Release Scsi_Host */ |
382 | - if (vn_port->host) |
383 | - scsi_host_put(vn_port->host); |
384 | + scsi_host_put(vn_port->host); |
385 | |
386 | out: |
387 | return 0; |
388 | diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c |
389 | index fb5a7832353ce..7f76bf5cc8a8a 100644 |
390 | --- a/drivers/scsi/scsi_devinfo.c |
391 | +++ b/drivers/scsi/scsi_devinfo.c |
392 | @@ -184,6 +184,7 @@ static struct { |
393 | {"HP", "C3323-300", "4269", BLIST_NOTQ}, |
394 | {"HP", "C5713A", NULL, BLIST_NOREPORTLUN}, |
395 | {"HP", "DISK-SUBSYSTEM", "*", BLIST_REPORTLUN2}, |
396 | + {"HPE", "OPEN-", "*", BLIST_REPORTLUN2 | BLIST_TRY_VPD_PAGES}, |
397 | {"IBM", "AuSaV1S2", NULL, BLIST_FORCELUN}, |
398 | {"IBM", "ProFibre 4000R", "*", BLIST_SPARSELUN | BLIST_LARGELUN}, |
399 | {"IBM", "2105", NULL, BLIST_RETRY_HWERROR}, |
400 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c |
401 | index a16835c0bb1dd..5cf9e7677926f 100644 |
402 | --- a/drivers/target/target_core_transport.c |
403 | +++ b/drivers/target/target_core_transport.c |
404 | @@ -2993,9 +2993,7 @@ __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop, |
405 | __releases(&cmd->t_state_lock) |
406 | __acquires(&cmd->t_state_lock) |
407 | { |
408 | - |
409 | - assert_spin_locked(&cmd->t_state_lock); |
410 | - WARN_ON_ONCE(!irqs_disabled()); |
411 | + lockdep_assert_held(&cmd->t_state_lock); |
412 | |
413 | if (fabric_stop) |
414 | cmd->transport_state |= CMD_T_FABRIC_STOP; |
415 | diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c |
416 | index 4a10b4e7092a9..69c52edf5713f 100644 |
417 | --- a/fs/gfs2/file.c |
418 | +++ b/fs/gfs2/file.c |
419 | @@ -875,8 +875,11 @@ static ssize_t gfs2_file_write_iter(struct kiocb *iocb, struct iov_iter *from) |
420 | current->backing_dev_info = inode_to_bdi(inode); |
421 | buffered = iomap_file_buffered_write(iocb, from, &gfs2_iomap_ops); |
422 | current->backing_dev_info = NULL; |
423 | - if (unlikely(buffered <= 0)) |
424 | + if (unlikely(buffered <= 0)) { |
425 | + if (!ret) |
426 | + ret = buffered; |
427 | goto out_unlock; |
428 | + } |
429 | |
430 | /* |
431 | * We need to ensure that the page cache pages are written to |
432 | diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c |
433 | index 9e1685a30bf8d..01c41087f0676 100644 |
434 | --- a/fs/gfs2/glock.c |
435 | +++ b/fs/gfs2/glock.c |
436 | @@ -1552,6 +1552,7 @@ __acquires(&lru_lock) |
437 | while(!list_empty(list)) { |
438 | gl = list_entry(list->next, struct gfs2_glock, gl_lru); |
439 | list_del_init(&gl->gl_lru); |
440 | + clear_bit(GLF_LRU, &gl->gl_flags); |
441 | if (!spin_trylock(&gl->gl_lockref.lock)) { |
442 | add_back_to_lru: |
443 | list_add(&gl->gl_lru, &lru_list); |
444 | @@ -1597,7 +1598,6 @@ static long gfs2_scan_glock_lru(int nr) |
445 | if (!test_bit(GLF_LOCK, &gl->gl_flags)) { |
446 | list_move(&gl->gl_lru, &dispose); |
447 | atomic_dec(&lru_count); |
448 | - clear_bit(GLF_LRU, &gl->gl_flags); |
449 | freed++; |
450 | continue; |
451 | } |
452 | diff --git a/include/linux/hid.h b/include/linux/hid.h |
453 | index ae906deb42e87..85bedeb9ca9f2 100644 |
454 | --- a/include/linux/hid.h |
455 | +++ b/include/linux/hid.h |
456 | @@ -1154,8 +1154,7 @@ static inline void hid_hw_wait(struct hid_device *hdev) |
457 | */ |
458 | static inline u32 hid_report_len(struct hid_report *report) |
459 | { |
460 | - /* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */ |
461 | - return ((report->size - 1) >> 3) + 1 + (report->id > 0); |
462 | + return DIV_ROUND_UP(report->size, 8) + (report->id > 0); |
463 | } |
464 | |
465 | int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, u32 size, |
466 | diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h |
467 | index 472cd5bc55676..311a57f3e01a2 100644 |
468 | --- a/include/uapi/linux/input-event-codes.h |
469 | +++ b/include/uapi/linux/input-event-codes.h |
470 | @@ -607,6 +607,7 @@ |
471 | #define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */ |
472 | #define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */ |
473 | #define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */ |
474 | +#define KEY_EMOJI_PICKER 0x249 /* Show/hide emoji picker (HUTRR101) */ |
475 | |
476 | #define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */ |
477 | #define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */ |
478 | diff --git a/net/compat.c b/net/compat.c |
479 | index c848bcb517f3e..f5b88166c44a5 100644 |
480 | --- a/net/compat.c |
481 | +++ b/net/compat.c |
482 | @@ -160,7 +160,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk, |
483 | if (kcmlen > stackbuf_size) |
484 | kcmsg_base = kcmsg = sock_kmalloc(sk, kcmlen, GFP_KERNEL); |
485 | if (kcmsg == NULL) |
486 | - return -ENOBUFS; |
487 | + return -ENOMEM; |
488 | |
489 | /* Now copy them over neatly. */ |
490 | memset(kcmsg, 0, kcmlen); |
491 | diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c |
492 | index bb11fc87bbaef..675f27ef6872f 100644 |
493 | --- a/net/core/fib_rules.c |
494 | +++ b/net/core/fib_rules.c |
495 | @@ -1138,7 +1138,7 @@ static void notify_rule_change(int event, struct fib_rule *rule, |
496 | { |
497 | struct net *net; |
498 | struct sk_buff *skb; |
499 | - int err = -ENOBUFS; |
500 | + int err = -ENOMEM; |
501 | |
502 | net = ops->fro_net; |
503 | skb = nlmsg_new(fib_rule_nlmsg_size(ops, rule), GFP_KERNEL); |
504 | diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c |
505 | index 73c09b5864d70..bdeb169a7a999 100644 |
506 | --- a/net/core/rtnetlink.c |
507 | +++ b/net/core/rtnetlink.c |
508 | @@ -4535,8 +4535,10 @@ static int rtnl_bridge_notify(struct net_device *dev) |
509 | if (err < 0) |
510 | goto errout; |
511 | |
512 | - if (!skb->len) |
513 | + if (!skb->len) { |
514 | + err = -EINVAL; |
515 | goto errout; |
516 | + } |
517 | |
518 | rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); |
519 | return 0; |
520 | diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c |
521 | index 328bb9f5342e5..b2ba1d2556f14 100644 |
522 | --- a/net/ieee802154/nl802154.c |
523 | +++ b/net/ieee802154/nl802154.c |
524 | @@ -1314,19 +1314,20 @@ ieee802154_llsec_parse_dev_addr(struct nlattr *nla, |
525 | if (!nla || nla_parse_nested_deprecated(attrs, NL802154_DEV_ADDR_ATTR_MAX, nla, nl802154_dev_addr_policy, NULL)) |
526 | return -EINVAL; |
527 | |
528 | - if (!attrs[NL802154_DEV_ADDR_ATTR_PAN_ID] || |
529 | - !attrs[NL802154_DEV_ADDR_ATTR_MODE] || |
530 | - !(attrs[NL802154_DEV_ADDR_ATTR_SHORT] || |
531 | - attrs[NL802154_DEV_ADDR_ATTR_EXTENDED])) |
532 | + if (!attrs[NL802154_DEV_ADDR_ATTR_PAN_ID] || !attrs[NL802154_DEV_ADDR_ATTR_MODE]) |
533 | return -EINVAL; |
534 | |
535 | addr->pan_id = nla_get_le16(attrs[NL802154_DEV_ADDR_ATTR_PAN_ID]); |
536 | addr->mode = nla_get_u32(attrs[NL802154_DEV_ADDR_ATTR_MODE]); |
537 | switch (addr->mode) { |
538 | case NL802154_DEV_ADDR_SHORT: |
539 | + if (!attrs[NL802154_DEV_ADDR_ATTR_SHORT]) |
540 | + return -EINVAL; |
541 | addr->short_addr = nla_get_le16(attrs[NL802154_DEV_ADDR_ATTR_SHORT]); |
542 | break; |
543 | case NL802154_DEV_ADDR_EXTENDED: |
544 | + if (!attrs[NL802154_DEV_ADDR_ATTR_EXTENDED]) |
545 | + return -EINVAL; |
546 | addr->extended_addr = nla_get_le64(attrs[NL802154_DEV_ADDR_ATTR_EXTENDED]); |
547 | break; |
548 | default: |
549 | diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c |
550 | index 9bcca08efec9e..c05ad600a4ff7 100644 |
551 | --- a/net/ipv4/ipconfig.c |
552 | +++ b/net/ipv4/ipconfig.c |
553 | @@ -870,7 +870,7 @@ static void __init ic_bootp_send_if(struct ic_device *d, unsigned long jiffies_d |
554 | |
555 | |
556 | /* |
557 | - * Copy BOOTP-supplied string if not already set. |
558 | + * Copy BOOTP-supplied string |
559 | */ |
560 | static int __init ic_bootp_string(char *dest, char *src, int len, int max) |
561 | { |
562 | @@ -919,12 +919,15 @@ static void __init ic_do_bootp_ext(u8 *ext) |
563 | } |
564 | break; |
565 | case 12: /* Host name */ |
566 | - ic_bootp_string(utsname()->nodename, ext+1, *ext, |
567 | - __NEW_UTS_LEN); |
568 | - ic_host_name_set = 1; |
569 | + if (!ic_host_name_set) { |
570 | + ic_bootp_string(utsname()->nodename, ext+1, *ext, |
571 | + __NEW_UTS_LEN); |
572 | + ic_host_name_set = 1; |
573 | + } |
574 | break; |
575 | case 15: /* Domain name (DNS) */ |
576 | - ic_bootp_string(ic_domain, ext+1, *ext, sizeof(ic_domain)); |
577 | + if (!ic_domain[0]) |
578 | + ic_bootp_string(ic_domain, ext+1, *ext, sizeof(ic_domain)); |
579 | break; |
580 | case 17: /* Root path */ |
581 | if (!root_server_path[0]) |
582 | diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c |
583 | index cb1f5016c433a..d8d603aa48875 100644 |
584 | --- a/net/x25/af_x25.c |
585 | +++ b/net/x25/af_x25.c |
586 | @@ -546,7 +546,7 @@ static int x25_create(struct net *net, struct socket *sock, int protocol, |
587 | if (protocol) |
588 | goto out; |
589 | |
590 | - rc = -ENOBUFS; |
591 | + rc = -ENOMEM; |
592 | if ((sk = x25_alloc_socket(net, kern)) == NULL) |
593 | goto out; |
594 |