Merge "diag: Update mask pointers after reallocation"

This commit is contained in:
Linux Build Service Account 2018-07-02 06:08:31 -07:00 committed by Gerrit - the friendly Code Review server
commit 642d3ae98b
2 changed files with 33 additions and 11 deletions

View file

@ -909,10 +909,12 @@ static int diag_cmd_set_all_msg_mask(unsigned char *src_buf, int src_len,
mask_info->status = (req->rt_mask) ? DIAG_CTRL_MASK_ALL_ENABLED :
DIAG_CTRL_MASK_ALL_DISABLED;
for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
mutex_lock(&mask->lock);
memset(mask->ptr, req->rt_mask,
mask->range * sizeof(uint32_t));
mutex_unlock(&mask->lock);
if (mask && mask->ptr) {
mutex_lock(&mask->lock);
memset(mask->ptr, req->rt_mask,
mask->range * sizeof(uint32_t));
mutex_unlock(&mask->lock);
}
}
mutex_unlock(&driver->msg_mask_lock);
mutex_unlock(&mask_info->lock);
@ -1311,6 +1313,8 @@ static int diag_cmd_set_log_mask(unsigned char *src_buf, int src_len,
mutex_lock(&mask_info->lock);
for (i = 0; i < MAX_EQUIP_ID && !status; i++, mask++) {
if (!mask || !mask->ptr)
continue;
if (mask->equip_id != req->equip_id)
continue;
mutex_lock(&mask->lock);
@ -1432,9 +1436,11 @@ static int diag_cmd_disable_log_mask(unsigned char *src_buf, int src_len,
return -EINVAL;
}
for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
mutex_lock(&mask->lock);
memset(mask->ptr, 0, mask->range);
mutex_unlock(&mask->lock);
if (mask && mask->ptr) {
mutex_lock(&mask->lock);
memset(mask->ptr, 0, mask->range);
mutex_unlock(&mask->lock);
}
}
mask_info->status = DIAG_CTRL_MASK_ALL_DISABLED;
mutex_unlock(&driver->md_session_lock);

View file

@ -522,9 +522,8 @@ static void process_last_event_report(uint8_t *buf, uint32_t len,
header = (struct diag_ctrl_last_event_report *)ptr;
event_size = ((header->event_last_id / 8) + 1);
if (event_size >= driver->event_mask_size) {
DIAG_LOG(DIAG_DEBUG_CONTROL,
"diag: In %s, receiving event mask size more that Apps can handle\n",
__func__);
DIAG_LOG(DIAG_DEBUG_MASKS,
"diag: receiving event mask size more that Apps can handle\n");
temp = krealloc(driver->event_mask->ptr, event_size,
GFP_KERNEL);
if (!temp) {
@ -663,6 +662,10 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
found = 0;
for (j = 0; j < driver->msg_mask_tbl_count; j++, mask_ptr++) {
if (!mask_ptr || !ssid_range) {
found = 1;
break;
}
if (mask_ptr->ssid_first != ssid_range->ssid_first)
continue;
mutex_lock(&mask_ptr->lock);
@ -681,6 +684,8 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
new_size = (driver->msg_mask_tbl_count + 1) *
sizeof(struct diag_msg_mask_t);
DIAG_LOG(DIAG_DEBUG_MASKS,
"diag: receiving msg mask size more that Apps can handle\n");
temp = krealloc(msg_mask.ptr, new_size, GFP_KERNEL);
if (!temp) {
pr_err("diag: In %s, Unable to add new ssid table to msg mask, ssid first: %d, last: %d\n",
@ -689,6 +694,7 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
continue;
}
msg_mask.ptr = temp;
mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
err = diag_create_msg_mask_table_entry(mask_ptr, ssid_range);
if (err) {
pr_err("diag: In %s, Unable to create a new msg mask table entry, first: %d last: %d err: %d\n",
@ -735,6 +741,10 @@ static void diag_build_time_mask_update(uint8_t *buf,
num_items = range->ssid_last - range->ssid_first + 1;
for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
if (!build_mask) {
found = 1;
break;
}
if (build_mask->ssid_first != range->ssid_first)
continue;
found = 1;
@ -745,7 +755,8 @@ static void diag_build_time_mask_update(uint8_t *buf,
__func__);
}
dest_ptr = build_mask->ptr;
for (j = 0; j < build_mask->range; j++, mask_ptr++, dest_ptr++)
for (j = 0; (j < build_mask->range) && mask_ptr && dest_ptr;
j++, mask_ptr++, dest_ptr++)
*(uint32_t *)dest_ptr |= *mask_ptr;
mutex_unlock(&build_mask->lock);
break;
@ -753,8 +764,12 @@ static void diag_build_time_mask_update(uint8_t *buf,
if (found)
goto end;
new_size = (driver->bt_msg_mask_tbl_count + 1) *
sizeof(struct diag_msg_mask_t);
DIAG_LOG(DIAG_DEBUG_MASKS,
"diag: receiving build time mask size more that Apps can handle\n");
temp = krealloc(driver->build_time_mask->ptr, new_size, GFP_KERNEL);
if (!temp) {
pr_err("diag: In %s, unable to create a new entry for build time mask\n",
@ -762,6 +777,7 @@ static void diag_build_time_mask_update(uint8_t *buf,
goto end;
}
driver->build_time_mask->ptr = temp;
build_mask = (struct diag_msg_mask_t *)driver->build_time_mask->ptr;
err = diag_create_msg_mask_table_entry(build_mask, range);
if (err) {
pr_err("diag: In %s, Unable to create a new msg mask table entry, err: %d\n",