Continue the program when the pointer assignment is successful. Signed-off-by: Dong Chuanjian <chuanjian@xxxxxxxxxxxx> diff --git a/drivers/media/v4l2-core/v4l2-h264.c b/drivers/media/v4l2-core/v4l2-h264.c index 72bd64f65198..1163cd48ff33 100644 --- a/drivers/media/v4l2-core/v4l2-h264.c +++ b/drivers/media/v4l2-core/v4l2-h264.c @@ -343,18 +343,19 @@ static const char *format_ref_list_b(const struct v4l2_h264_reflist_builder *bui int n = 0, i; *out_str = kmalloc(tmp_str_size, GFP_KERNEL); - - n += snprintf(*out_str + n, tmp_str_size - n, "|"); - - for (i = 0; i < builder->num_valid; i++) { - int frame_num = builder->refs[reflist[i].index].frame_num; - u32 poc = v4l2_h264_get_poc(builder, reflist + i); - bool longterm = builder->refs[reflist[i].index].longterm; - - n += scnprintf(*out_str + n, tmp_str_size - n, "%i%c%c|", - longterm ? frame_num : poc, - longterm ? 'l' : 's', - ref_type_to_char(reflist[i].fields)); + if (*out_str != NULL) { + n += snprintf(*out_str + n, tmp_str_size - n, "|"); + + for (i = 0; i < builder->num_valid; i++) { + int frame_num = builder->refs[reflist[i].index].frame_num; + u32 poc = v4l2_h264_get_poc(builder, reflist + i); + bool longterm = builder->refs[reflist[i].index].longterm; + + n += scnprintf(*out_str + n, tmp_str_size - n, "%i%c%c|", + longterm ? frame_num : poc, + longterm ? 'l' : 's', + ref_type_to_char(reflist[i].fields)); + } } return *out_str; -- 2.18.2