On 10/6/15 8:25 PM, Hemant Kumar wrote:
@@ -358,7 +357,12 @@ static bool handle_end_event(struct perf_kvm_stat *kvm,
        time_diff = sample->time - time_begin;

        if (kvm->duration && time_diff > kvm->duration) {
-               char decode[DECODE_STR_LEN];
+               char *decode = zalloc(decode_str_len);

decode can still be a stack variable even with variable length.

+
+               if (!decode) {
+                       pr_err("Not enough memory\n");
+                       return false;
+               }

                kvm->events_ops->decode_key(kvm, &event->key, decode);
                if (!skip_event(decode)) {
@@ -366,6 +370,7 @@ static bool handle_end_event(struct perf_kvm_stat *kvm,
                                 sample->time, sample->pid, 
vcpu_record->vcpu_id,
                                 decode, time_diff/1000);
                }
+               free(decode);
        }

        return update_kvm_event(event, vcpu, time_diff);
@@ -386,7 +391,8 @@ struct vcpu_event_record *per_vcpu_record(struct thread 
*thread,

-----8<-----

@@ -575,7 +581,7 @@ static void show_timeofday(void)

  static void print_result(struct perf_kvm_stat *kvm)
  {
-       char decode[DECODE_STR_LEN];
+       char *decode;

and a stack variable here too.

David
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to