BUG/MEDIUM: sample: make the CPU and latency sample fetches check for a stream
cpu_calls, cpu_ns_avg, cpu_ns_tot, lat_ns_avg and lat_ns_tot depend on the stream to find the current task and must check for it or they may cause a crash if misused or used in a log-format string after commit 5f940703b3 ("MINOR: log: Don't depends on a stream to process samples in log-format string"). This must be backported as far as 1.9.
This commit is contained in:
parent
eae837295d
commit
e0dd210cea
15
src/sample.c
15
src/sample.c
@ -3222,6 +3222,9 @@ smp_fetch_stopping(const struct arg *args, struct sample *smp, const char *kw, v
|
||||
static int
|
||||
smp_fetch_cpu_calls(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = smp->strm->task->calls;
|
||||
return 1;
|
||||
@ -3231,6 +3234,9 @@ smp_fetch_cpu_calls(const struct arg *args, struct sample *smp, const char *kw,
|
||||
static int
|
||||
smp_fetch_cpu_ns_avg(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = smp->strm->task->calls ? smp->strm->task->cpu_time / smp->strm->task->calls : 0;
|
||||
return 1;
|
||||
@ -3240,6 +3246,9 @@ smp_fetch_cpu_ns_avg(const struct arg *args, struct sample *smp, const char *kw,
|
||||
static int
|
||||
smp_fetch_cpu_ns_tot(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = smp->strm->task->cpu_time;
|
||||
return 1;
|
||||
@ -3249,6 +3258,9 @@ smp_fetch_cpu_ns_tot(const struct arg *args, struct sample *smp, const char *kw,
|
||||
static int
|
||||
smp_fetch_lat_ns_avg(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = smp->strm->task->calls ? smp->strm->task->lat_time / smp->strm->task->calls : 0;
|
||||
return 1;
|
||||
@ -3258,6 +3270,9 @@ smp_fetch_lat_ns_avg(const struct arg *args, struct sample *smp, const char *kw,
|
||||
static int
|
||||
smp_fetch_lat_ns_tot(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
if (!smp->strm)
|
||||
return 0;
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = smp->strm->task->lat_time;
|
||||
return 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user