Merge "diag: Update mask pointers after reallocation"
This commit is contained in:
commit
642d3ae98b
2 changed files with 33 additions and 11 deletions
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Add table
Reference in a new issue