Merge "diag: Proper update of user PD mdlog session variables"

This commit is contained in:
Linux Build Service Account 2017-06-18 09:47:24 -07:00 committed by Gerrit - the friendly Code Review server
commit 012ea7971e

View file

@ -481,20 +481,21 @@ static void diag_close_logging_process(const int pid)
params.req_mode = USB_MODE; params.req_mode = USB_MODE;
params.mode_param = 0; params.mode_param = 0;
params.pd_mask = 0;
params.peripheral_mask = params.peripheral_mask =
diag_translate_kernel_to_user_mask(session_mask); diag_translate_kernel_to_user_mask(session_mask);
for (i = UPD_WLAN; i < NUM_MD_SESSIONS; i++) { if (driver->num_pd_session > 0) {
if (session_mask & for (i = UPD_WLAN; ((i < NUM_MD_SESSIONS) &&
MD_PERIPHERAL_MASK(i)) { (session_mask & MD_PERIPHERAL_MASK(i)));
i++) {
j = i - UPD_WLAN; j = i - UPD_WLAN;
driver->pd_session_clear[j] = 1; driver->pd_session_clear[j] = 1;
driver->pd_logging_mode[j] = 0; driver->pd_logging_mode[j] = 0;
driver->num_pd_session -= 1; driver->num_pd_session -= 1;
params.pd_mask = params.pd_mask =
diag_translate_kernel_to_user_mask(session_mask); diag_translate_kernel_to_user_mask(session_mask);
} else }
params.pd_mask = 0;
} }
diag_switch_logging(&params); diag_switch_logging(&params);
@ -1612,7 +1613,7 @@ static uint32_t diag_translate_mask(uint32_t peripheral_mask)
static int diag_switch_logging(struct diag_logging_mode_param_t *param) static int diag_switch_logging(struct diag_logging_mode_param_t *param)
{ {
int new_mode, i; int new_mode, i = 0;
int curr_mode; int curr_mode;
int err = 0; int err = 0;
uint8_t do_switch = 1; uint8_t do_switch = 1;
@ -1653,6 +1654,8 @@ static int diag_switch_logging(struct diag_logging_mode_param_t *param)
diag_mux->mux_mask)) { diag_mux->mux_mask)) {
DIAG_LOG(DIAG_DEBUG_USERSPACE, DIAG_LOG(DIAG_DEBUG_USERSPACE,
"diag_fr: User PD is already logging onto active peripheral logging\n"); "diag_fr: User PD is already logging onto active peripheral logging\n");
i = upd - UPD_WLAN;
driver->pd_session_clear[i] = 0;
return -EINVAL; return -EINVAL;
} }
peripheral_mask = peripheral_mask =
@ -1662,8 +1665,8 @@ static int diag_switch_logging(struct diag_logging_mode_param_t *param)
if (!driver->pd_session_clear[i]) { if (!driver->pd_session_clear[i]) {
driver->pd_logging_mode[i] = 1; driver->pd_logging_mode[i] = 1;
driver->num_pd_session += 1; driver->num_pd_session += 1;
driver->pd_session_clear[i] = 0;
} }
driver->pd_session_clear[i] = 0;
} else { } else {
peripheral_mask = peripheral_mask =
diag_translate_mask(param->peripheral_mask); diag_translate_mask(param->peripheral_mask);