Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'staging-4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging and IIO driver fixes from Greg KH:
"Here are some small IIO and staging driver fixes for 4.20-rc5.

Nothing major, the IIO fix ended up touching the HID drivers at the
same time, but the HID maintainer acked it. The staging fixes are all
minor patches for reported issues and regressions, full details are in
the shortlog.

All of these have been in linux-next for a while with no reported
issues"

* tag 'staging-4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
iio/hid-sensors: Fix IIO_CHAN_INFO_RAW returning wrong values for signed numbers
staging: vchiq_arm: fix compat VCHIQ_IOC_AWAIT_COMPLETION
staging: mt7621-pinctrl: fix uninitialized variable ngroups
staging: rtl8723bs: Add missing return for cfg80211_rtw_get_station
staging: most: use format specifier "%s" in snprintf
staging: rtl8723bs: Fix incorrect sense of ether_addr_equal
staging: mt7621-dma: fix potentially dereferencing uninitialized 'tx_desc'
staging: comedi: clarify/unify macros for NI macro-defined terminals
drivers: staging: cedrus: find ctx before dereferencing it ctx
staging: rtl8723bs: Fix the return value in case of error in 'rtw_wx_read32()'
staging: comedi: ni_mio_common: scale ao INSN_CONFIG_GET_CMD_TIMING_CONSTRAINTS
iio:st_magn: Fix enable device after trigger

+103 -72
+1 -1
drivers/hid/hid-sensor-custom.c
··· 358 358 sensor_inst->hsdev, 359 359 sensor_inst->hsdev->usage, 360 360 usage, report_id, 361 - SENSOR_HUB_SYNC); 361 + SENSOR_HUB_SYNC, false); 362 362 } else if (!strncmp(name, "units", strlen("units"))) 363 363 value = sensor_inst->fields[field_index].attribute.units; 364 364 else if (!strncmp(name, "unit-expo", strlen("unit-expo")))
+10 -3
drivers/hid/hid-sensor-hub.c
··· 299 299 int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev, 300 300 u32 usage_id, 301 301 u32 attr_usage_id, u32 report_id, 302 - enum sensor_hub_read_flags flag) 302 + enum sensor_hub_read_flags flag, 303 + bool is_signed) 303 304 { 304 305 struct sensor_hub_data *data = hid_get_drvdata(hsdev->hdev); 305 306 unsigned long flags; ··· 332 331 &hsdev->pending.ready, HZ*5); 333 332 switch (hsdev->pending.raw_size) { 334 333 case 1: 335 - ret_val = *(u8 *)hsdev->pending.raw_data; 334 + if (is_signed) 335 + ret_val = *(s8 *)hsdev->pending.raw_data; 336 + else 337 + ret_val = *(u8 *)hsdev->pending.raw_data; 336 338 break; 337 339 case 2: 338 - ret_val = *(u16 *)hsdev->pending.raw_data; 340 + if (is_signed) 341 + ret_val = *(s16 *)hsdev->pending.raw_data; 342 + else 343 + ret_val = *(u16 *)hsdev->pending.raw_data; 339 344 break; 340 345 case 4: 341 346 ret_val = *(u32 *)hsdev->pending.raw_data;
+4 -1
drivers/iio/accel/hid-sensor-accel-3d.c
··· 149 149 int report_id = -1; 150 150 u32 address; 151 151 int ret_type; 152 + s32 min; 152 153 struct hid_sensor_hub_device *hsdev = 153 154 accel_state->common_attributes.hsdev; 154 155 ··· 159 158 case IIO_CHAN_INFO_RAW: 160 159 hid_sensor_power_state(&accel_state->common_attributes, true); 161 160 report_id = accel_state->accel[chan->scan_index].report_id; 161 + min = accel_state->accel[chan->scan_index].logical_minimum; 162 162 address = accel_3d_addresses[chan->scan_index]; 163 163 if (report_id >= 0) 164 164 *val = sensor_hub_input_attr_get_raw_value( 165 165 accel_state->common_attributes.hsdev, 166 166 hsdev->usage, address, report_id, 167 - SENSOR_HUB_SYNC); 167 + SENSOR_HUB_SYNC, 168 + min < 0); 168 169 else { 169 170 *val = 0; 170 171 hid_sensor_power_state(&accel_state->common_attributes,
+4 -1
drivers/iio/gyro/hid-sensor-gyro-3d.c
··· 111 111 int report_id = -1; 112 112 u32 address; 113 113 int ret_type; 114 + s32 min; 114 115 115 116 *val = 0; 116 117 *val2 = 0; ··· 119 118 case IIO_CHAN_INFO_RAW: 120 119 hid_sensor_power_state(&gyro_state->common_attributes, true); 121 120 report_id = gyro_state->gyro[chan->scan_index].report_id; 121 + min = gyro_state->gyro[chan->scan_index].logical_minimum; 122 122 address = gyro_3d_addresses[chan->scan_index]; 123 123 if (report_id >= 0) 124 124 *val = sensor_hub_input_attr_get_raw_value( 125 125 gyro_state->common_attributes.hsdev, 126 126 HID_USAGE_SENSOR_GYRO_3D, address, 127 127 report_id, 128 - SENSOR_HUB_SYNC); 128 + SENSOR_HUB_SYNC, 129 + min < 0); 129 130 else { 130 131 *val = 0; 131 132 hid_sensor_power_state(&gyro_state->common_attributes,
+2 -1
drivers/iio/humidity/hid-sensor-humidity.c
··· 75 75 HID_USAGE_SENSOR_HUMIDITY, 76 76 HID_USAGE_SENSOR_ATMOSPHERIC_HUMIDITY, 77 77 humid_st->humidity_attr.report_id, 78 - SENSOR_HUB_SYNC); 78 + SENSOR_HUB_SYNC, 79 + humid_st->humidity_attr.logical_minimum < 0); 79 80 hid_sensor_power_state(&humid_st->common_attributes, false); 80 81 81 82 return IIO_VAL_INT;
+5 -3
drivers/iio/light/hid-sensor-als.c
··· 93 93 int report_id = -1; 94 94 u32 address; 95 95 int ret_type; 96 + s32 min; 96 97 97 98 *val = 0; 98 99 *val2 = 0; ··· 103 102 case CHANNEL_SCAN_INDEX_INTENSITY: 104 103 case CHANNEL_SCAN_INDEX_ILLUM: 105 104 report_id = als_state->als_illum.report_id; 106 - address = 107 - HID_USAGE_SENSOR_LIGHT_ILLUM; 105 + min = als_state->als_illum.logical_minimum; 106 + address = HID_USAGE_SENSOR_LIGHT_ILLUM; 108 107 break; 109 108 default: 110 109 report_id = -1; ··· 117 116 als_state->common_attributes.hsdev, 118 117 HID_USAGE_SENSOR_ALS, address, 119 118 report_id, 120 - SENSOR_HUB_SYNC); 119 + SENSOR_HUB_SYNC, 120 + min < 0); 121 121 hid_sensor_power_state(&als_state->common_attributes, 122 122 false); 123 123 } else {
+5 -3
drivers/iio/light/hid-sensor-prox.c
··· 73 73 int report_id = -1; 74 74 u32 address; 75 75 int ret_type; 76 + s32 min; 76 77 77 78 *val = 0; 78 79 *val2 = 0; ··· 82 81 switch (chan->scan_index) { 83 82 case CHANNEL_SCAN_INDEX_PRESENCE: 84 83 report_id = prox_state->prox_attr.report_id; 85 - address = 86 - HID_USAGE_SENSOR_HUMAN_PRESENCE; 84 + min = prox_state->prox_attr.logical_minimum; 85 + address = HID_USAGE_SENSOR_HUMAN_PRESENCE; 87 86 break; 88 87 default: 89 88 report_id = -1; ··· 96 95 prox_state->common_attributes.hsdev, 97 96 HID_USAGE_SENSOR_PROX, address, 98 97 report_id, 99 - SENSOR_HUB_SYNC); 98 + SENSOR_HUB_SYNC, 99 + min < 0); 100 100 hid_sensor_power_state(&prox_state->common_attributes, 101 101 false); 102 102 } else {
+5 -3
drivers/iio/magnetometer/hid-sensor-magn-3d.c
··· 163 163 int report_id = -1; 164 164 u32 address; 165 165 int ret_type; 166 + s32 min; 166 167 167 168 *val = 0; 168 169 *val2 = 0; 169 170 switch (mask) { 170 171 case IIO_CHAN_INFO_RAW: 171 172 hid_sensor_power_state(&magn_state->magn_flux_attributes, true); 172 - report_id = 173 - magn_state->magn[chan->address].report_id; 173 + report_id = magn_state->magn[chan->address].report_id; 174 + min = magn_state->magn[chan->address].logical_minimum; 174 175 address = magn_3d_addresses[chan->address]; 175 176 if (report_id >= 0) 176 177 *val = sensor_hub_input_attr_get_raw_value( 177 178 magn_state->magn_flux_attributes.hsdev, 178 179 HID_USAGE_SENSOR_COMPASS_3D, address, 179 180 report_id, 180 - SENSOR_HUB_SYNC); 181 + SENSOR_HUB_SYNC, 182 + min < 0); 181 183 else { 182 184 *val = 0; 183 185 hid_sensor_power_state(
+3 -9
drivers/iio/magnetometer/st_magn_buffer.c
··· 30 30 return st_sensors_set_dataready_irq(indio_dev, state); 31 31 } 32 32 33 - static int st_magn_buffer_preenable(struct iio_dev *indio_dev) 34 - { 35 - return st_sensors_set_enable(indio_dev, true); 36 - } 37 - 38 33 static int st_magn_buffer_postenable(struct iio_dev *indio_dev) 39 34 { 40 35 int err; ··· 45 50 if (err < 0) 46 51 goto st_magn_buffer_postenable_error; 47 52 48 - return err; 53 + return st_sensors_set_enable(indio_dev, true); 49 54 50 55 st_magn_buffer_postenable_error: 51 56 kfree(mdata->buffer_data); ··· 58 63 int err; 59 64 struct st_sensor_data *mdata = iio_priv(indio_dev); 60 65 61 - err = iio_triggered_buffer_predisable(indio_dev); 66 + err = st_sensors_set_enable(indio_dev, false); 62 67 if (err < 0) 63 68 goto st_magn_buffer_predisable_error; 64 69 65 - err = st_sensors_set_enable(indio_dev, false); 70 + err = iio_triggered_buffer_predisable(indio_dev); 66 71 67 72 st_magn_buffer_predisable_error: 68 73 kfree(mdata->buffer_data); ··· 70 75 } 71 76 72 77 static const struct iio_buffer_setup_ops st_magn_buffer_setup_ops = { 73 - .preenable = &st_magn_buffer_preenable, 74 78 .postenable = &st_magn_buffer_postenable, 75 79 .predisable = &st_magn_buffer_predisable, 76 80 };
+5 -3
drivers/iio/orientation/hid-sensor-incl-3d.c
··· 111 111 int report_id = -1; 112 112 u32 address; 113 113 int ret_type; 114 + s32 min; 114 115 115 116 *val = 0; 116 117 *val2 = 0; 117 118 switch (mask) { 118 119 case IIO_CHAN_INFO_RAW: 119 120 hid_sensor_power_state(&incl_state->common_attributes, true); 120 - report_id = 121 - incl_state->incl[chan->scan_index].report_id; 121 + report_id = incl_state->incl[chan->scan_index].report_id; 122 + min = incl_state->incl[chan->scan_index].logical_minimum; 122 123 address = incl_3d_addresses[chan->scan_index]; 123 124 if (report_id >= 0) 124 125 *val = sensor_hub_input_attr_get_raw_value( 125 126 incl_state->common_attributes.hsdev, 126 127 HID_USAGE_SENSOR_INCLINOMETER_3D, address, 127 128 report_id, 128 - SENSOR_HUB_SYNC); 129 + SENSOR_HUB_SYNC, 130 + min < 0); 129 131 else { 130 132 hid_sensor_power_state(&incl_state->common_attributes, 131 133 false);
+5 -3
drivers/iio/pressure/hid-sensor-press.c
··· 77 77 int report_id = -1; 78 78 u32 address; 79 79 int ret_type; 80 + s32 min; 80 81 81 82 *val = 0; 82 83 *val2 = 0; ··· 86 85 switch (chan->scan_index) { 87 86 case CHANNEL_SCAN_INDEX_PRESSURE: 88 87 report_id = press_state->press_attr.report_id; 89 - address = 90 - HID_USAGE_SENSOR_ATMOSPHERIC_PRESSURE; 88 + min = press_state->press_attr.logical_minimum; 89 + address = HID_USAGE_SENSOR_ATMOSPHERIC_PRESSURE; 91 90 break; 92 91 default: 93 92 report_id = -1; ··· 100 99 press_state->common_attributes.hsdev, 101 100 HID_USAGE_SENSOR_PRESSURE, address, 102 101 report_id, 103 - SENSOR_HUB_SYNC); 102 + SENSOR_HUB_SYNC, 103 + min < 0); 104 104 hid_sensor_power_state(&press_state->common_attributes, 105 105 false); 106 106 } else {
+2 -1
drivers/iio/temperature/hid-sensor-temperature.c
··· 76 76 HID_USAGE_SENSOR_TEMPERATURE, 77 77 HID_USAGE_SENSOR_DATA_ENVIRONMENTAL_TEMPERATURE, 78 78 temp_st->temperature_attr.report_id, 79 - SENSOR_HUB_SYNC); 79 + SENSOR_HUB_SYNC, 80 + temp_st->temperature_attr.logical_minimum < 0); 80 81 hid_sensor_power_state( 81 82 &temp_st->common_attributes, 82 83 false);
+1 -1
drivers/rtc/rtc-hid-sensor-time.c
··· 213 213 /* get a report with all values through requesting one value */ 214 214 sensor_hub_input_attr_get_raw_value(time_state->common_attributes.hsdev, 215 215 HID_USAGE_SENSOR_TIME, hid_time_addresses[0], 216 - time_state->info[0].report_id, SENSOR_HUB_SYNC); 216 + time_state->info[0].report_id, SENSOR_HUB_SYNC, false); 217 217 /* wait for all values (event) */ 218 218 ret = wait_for_completion_killable_timeout( 219 219 &time_state->comp_last_time, HZ*6);
+21 -18
drivers/staging/comedi/comedi.h
··· 1005 1005 * and INSN_DEVICE_CONFIG_GET_ROUTES. 1006 1006 */ 1007 1007 #define NI_NAMES_BASE 0x8000u 1008 + 1009 + #define _TERM_N(base, n, x) ((base) + ((x) & ((n) - 1))) 1010 + 1008 1011 /* 1009 1012 * not necessarily all allowed 64 PFIs are valid--certainly not for all devices 1010 1013 */ 1011 - #define NI_PFI(x) (NI_NAMES_BASE + ((x) & 0x3f)) 1014 + #define NI_PFI(x) _TERM_N(NI_NAMES_BASE, 64, x) 1012 1015 /* 8 trigger lines by standard, Some devices cannot talk to all eight. */ 1013 - #define TRIGGER_LINE(x) (NI_PFI(-1) + 1 + ((x) & 0x7)) 1016 + #define TRIGGER_LINE(x) _TERM_N(NI_PFI(-1) + 1, 8, x) 1014 1017 /* 4 RTSI shared MUXes to route signals to/from TRIGGER_LINES on NI hardware */ 1015 - #define NI_RTSI_BRD(x) (TRIGGER_LINE(-1) + 1 + ((x) & 0x3)) 1018 + #define NI_RTSI_BRD(x) _TERM_N(TRIGGER_LINE(-1) + 1, 4, x) 1016 1019 1017 1020 /* *** Counter/timer names : 8 counters max *** */ 1018 - #define NI_COUNTER_NAMES_BASE (NI_RTSI_BRD(-1) + 1) 1019 - #define NI_MAX_COUNTERS 7 1020 - #define NI_CtrSource(x) (NI_COUNTER_NAMES_BASE + ((x) & NI_MAX_COUNTERS)) 1021 + #define NI_MAX_COUNTERS 8 1022 + #define NI_COUNTER_NAMES_BASE (NI_RTSI_BRD(-1) + 1) 1023 + #define NI_CtrSource(x) _TERM_N(NI_COUNTER_NAMES_BASE, NI_MAX_COUNTERS, x) 1021 1024 /* Gate, Aux, A,B,Z are all treated, at times as gates */ 1022 - #define NI_GATES_NAMES_BASE (NI_CtrSource(-1) + 1) 1023 - #define NI_CtrGate(x) (NI_GATES_NAMES_BASE + ((x) & NI_MAX_COUNTERS)) 1024 - #define NI_CtrAux(x) (NI_CtrGate(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1025 - #define NI_CtrA(x) (NI_CtrAux(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1026 - #define NI_CtrB(x) (NI_CtrA(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1027 - #define NI_CtrZ(x) (NI_CtrB(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1028 - #define NI_GATES_NAMES_MAX NI_CtrZ(-1) 1029 - #define NI_CtrArmStartTrigger(x) (NI_CtrZ(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1025 + #define NI_GATES_NAMES_BASE (NI_CtrSource(-1) + 1) 1026 + #define NI_CtrGate(x) _TERM_N(NI_GATES_NAMES_BASE, NI_MAX_COUNTERS, x) 1027 + #define NI_CtrAux(x) _TERM_N(NI_CtrGate(-1) + 1, NI_MAX_COUNTERS, x) 1028 + #define NI_CtrA(x) _TERM_N(NI_CtrAux(-1) + 1, NI_MAX_COUNTERS, x) 1029 + #define NI_CtrB(x) _TERM_N(NI_CtrA(-1) + 1, NI_MAX_COUNTERS, x) 1030 + #define NI_CtrZ(x) _TERM_N(NI_CtrB(-1) + 1, NI_MAX_COUNTERS, x) 1031 + #define NI_GATES_NAMES_MAX NI_CtrZ(-1) 1032 + #define NI_CtrArmStartTrigger(x) _TERM_N(NI_CtrZ(-1) + 1, NI_MAX_COUNTERS, x) 1030 1033 #define NI_CtrInternalOutput(x) \ 1031 - (NI_CtrArmStartTrigger(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1034 + _TERM_N(NI_CtrArmStartTrigger(-1) + 1, NI_MAX_COUNTERS, x) 1032 1035 /** external pin(s) labeled conveniently as Ctr<i>Out. */ 1033 - #define NI_CtrOut(x) (NI_CtrInternalOutput(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1036 + #define NI_CtrOut(x) _TERM_N(NI_CtrInternalOutput(-1) + 1, NI_MAX_COUNTERS, x) 1034 1037 /** For Buffered sampling of ctr -- x series capability. */ 1035 - #define NI_CtrSampleClock(x) (NI_CtrOut(-1) + 1 + ((x) & NI_MAX_COUNTERS)) 1036 - #define NI_COUNTER_NAMES_MAX NI_CtrSampleClock(-1) 1038 + #define NI_CtrSampleClock(x) _TERM_N(NI_CtrOut(-1) + 1, NI_MAX_COUNTERS, x) 1039 + #define NI_COUNTER_NAMES_MAX NI_CtrSampleClock(-1) 1037 1040 1038 1041 enum ni_common_signal_names { 1039 1042 /* PXI_Star: this is a non-NI-specific signal */
+2 -1
drivers/staging/comedi/drivers/ni_mio_common.c
··· 2843 2843 return ni_ao_arm(dev, s); 2844 2844 case INSN_CONFIG_GET_CMD_TIMING_CONSTRAINTS: 2845 2845 /* we don't care about actual channels */ 2846 - data[1] = board->ao_speed; 2846 + /* data[3] : chanlist_len */ 2847 + data[1] = board->ao_speed * data[3]; 2847 2848 data[2] = 0; 2848 2849 return 0; 2849 2850 default:
+11 -11
drivers/staging/media/sunxi/cedrus/cedrus.c
··· 108 108 unsigned int count; 109 109 unsigned int i; 110 110 111 - count = vb2_request_buffer_cnt(req); 112 - if (!count) { 113 - v4l2_info(&ctx->dev->v4l2_dev, 114 - "No buffer was provided with the request\n"); 115 - return -ENOENT; 116 - } else if (count > 1) { 117 - v4l2_info(&ctx->dev->v4l2_dev, 118 - "More than one buffer was provided with the request\n"); 119 - return -EINVAL; 120 - } 121 - 122 111 list_for_each_entry(obj, &req->objects, list) { 123 112 struct vb2_buffer *vb; 124 113 ··· 121 132 122 133 if (!ctx) 123 134 return -ENOENT; 135 + 136 + count = vb2_request_buffer_cnt(req); 137 + if (!count) { 138 + v4l2_info(&ctx->dev->v4l2_dev, 139 + "No buffer was provided with the request\n"); 140 + return -ENOENT; 141 + } else if (count > 1) { 142 + v4l2_info(&ctx->dev->v4l2_dev, 143 + "More than one buffer was provided with the request\n"); 144 + return -EINVAL; 145 + } 124 146 125 147 parent_hdl = &ctx->hdl; 126 148
+1 -1
drivers/staging/most/core.c
··· 351 351 352 352 for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) { 353 353 if (c->cfg.data_type & ch_data_type[i].most_ch_data_type) 354 - return snprintf(buf, PAGE_SIZE, ch_data_type[i].name); 354 + return snprintf(buf, PAGE_SIZE, "%s", ch_data_type[i].name); 355 355 } 356 356 return snprintf(buf, PAGE_SIZE, "unconfigured\n"); 357 357 }
+2 -1
drivers/staging/mt7621-dma/mtk-hsdma.c
··· 335 335 /* tx desc */ 336 336 src = sg->src_addr; 337 337 for (i = 0; i < chan->desc->num_sgs; i++) { 338 + tx_desc = &chan->tx_ring[chan->tx_idx]; 339 + 338 340 if (len > HSDMA_MAX_PLEN) 339 341 tlen = HSDMA_MAX_PLEN; 340 342 else ··· 346 344 tx_desc->addr1 = src; 347 345 tx_desc->flags |= HSDMA_DESC_PLEN1(tlen); 348 346 } else { 349 - tx_desc = &chan->tx_ring[chan->tx_idx]; 350 347 tx_desc->addr0 = src; 351 348 tx_desc->flags = HSDMA_DESC_PLEN0(tlen); 352 349
+1 -1
drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
··· 82 82 struct property *prop; 83 83 const char *function_name, *group_name; 84 84 int ret; 85 - int ngroups; 85 + int ngroups = 0; 86 86 unsigned int reserved_maps = 0; 87 87 88 88 for_each_node_with_property(np_config, "group")
+2 -2
drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
··· 109 109 rx_bssid = get_hdr_bssid(wlanhdr); 110 110 pkt_info.bssid_match = ((!IsFrameTypeCtrl(wlanhdr)) && 111 111 !pattrib->icv_err && !pattrib->crc_err && 112 - !ether_addr_equal(rx_bssid, my_bssid)); 112 + ether_addr_equal(rx_bssid, my_bssid)); 113 113 114 114 rx_ra = get_ra(wlanhdr); 115 115 my_hwaddr = myid(&padapter->eeprompriv); 116 116 pkt_info.to_self = pkt_info.bssid_match && 117 - !ether_addr_equal(rx_ra, my_hwaddr); 117 + ether_addr_equal(rx_ra, my_hwaddr); 118 118 119 119 120 120 pkt_info.is_beacon = pkt_info.bssid_match &&
+1 -1
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
··· 1277 1277 1278 1278 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); 1279 1279 sinfo->tx_packets = psta->sta_stats.tx_pkts; 1280 - 1280 + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED); 1281 1281 } 1282 1282 1283 1283 /* for Ad-Hoc/AP mode */
+1 -1
drivers/staging/rtl8723bs/os_dep/ioctl_linux.c
··· 2289 2289 exit: 2290 2290 kfree(ptmp); 2291 2291 2292 - return 0; 2292 + return ret; 2293 2293 } 2294 2294 2295 2295 static int rtw_wx_write32(struct net_device *dev,
+6 -1
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
··· 1795 1795 struct vchiq_await_completion32 args32; 1796 1796 struct vchiq_completion_data32 completion32; 1797 1797 unsigned int *msgbufcount32; 1798 + unsigned int msgbufcount_native; 1798 1799 compat_uptr_t msgbuf32; 1799 1800 void *msgbuf; 1800 1801 void **msgbufptr; ··· 1907 1906 sizeof(completion32))) 1908 1907 return -EFAULT; 1909 1908 1910 - args32.msgbufcount--; 1909 + if (get_user(msgbufcount_native, &args->msgbufcount)) 1910 + return -EFAULT; 1911 + 1912 + if (!msgbufcount_native) 1913 + args32.msgbufcount--; 1911 1914 1912 1915 msgbufcount32 = 1913 1916 &((struct vchiq_await_completion32 __user *)arg)->msgbufcount;
+3 -1
include/linux/hid-sensor-hub.h
··· 177 177 * @attr_usage_id: Attribute usage id as per spec 178 178 * @report_id: Report id to look for 179 179 * @flag: Synchronous or asynchronous read 180 + * @is_signed: If true then fields < 32 bits will be sign-extended 180 181 * 181 182 * Issues a synchronous or asynchronous read request for an input attribute. 182 183 * Returns data upto 32 bits. ··· 191 190 int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev, 192 191 u32 usage_id, 193 192 u32 attr_usage_id, u32 report_id, 194 - enum sensor_hub_read_flags flag 193 + enum sensor_hub_read_flags flag, 194 + bool is_signed 195 195 ); 196 196 197 197 /**