Messages in this thread | | | Date | Tue, 12 May 2009 09:15:47 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [Patch] RCU trace: use scnprintf instead of snprintf |
| |
On Tue, May 12, 2009 at 06:04:15AM -0400, Amerigo Wang wrote: > > snprintf can return more than the size of buffer, this case > is not expected here, obviously. Use scnprintf instead.
Good catch!!! I would welcome a simlarly careful review of the tracing for the other RCU variants.
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Signed-off-by: WANG Cong <amwang@redhat.com> > Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> > > --- > diff --git a/kernel/rcupreempt_trace.c b/kernel/rcupreempt_trace.c > index 7c2665c..4ea4300 100644 > --- a/kernel/rcupreempt_trace.c > +++ b/kernel/rcupreempt_trace.c > @@ -234,11 +234,11 @@ static ssize_t rcuctrs_read(struct file *filp, char __user *buffer, > > mutex_lock(&rcupreempt_trace_mutex); > > - cnt += snprintf(&rcupreempt_trace_buf[cnt], RCUPREEMPT_TRACE_BUF_SIZE, > + cnt += scnprintf(&rcupreempt_trace_buf[cnt], RCUPREEMPT_TRACE_BUF_SIZE, > "CPU last cur F M\n"); > for_each_online_cpu(cpu) { > long *flipctr = rcupreempt_flipctr(cpu); > - cnt += snprintf(&rcupreempt_trace_buf[cnt], > + cnt += scnprintf(&rcupreempt_trace_buf[cnt], > RCUPREEMPT_TRACE_BUF_SIZE - cnt, > "%3d %4ld %3ld %d %d\n", > cpu, > @@ -247,12 +247,12 @@ static ssize_t rcuctrs_read(struct file *filp, char __user *buffer, > rcupreempt_flip_flag(cpu), > rcupreempt_mb_flag(cpu)); > } > - cnt += snprintf(&rcupreempt_trace_buf[cnt], > + cnt += scnprintf(&rcupreempt_trace_buf[cnt], > RCUPREEMPT_TRACE_BUF_SIZE - cnt, > "ggp = %ld, state = %s\n", > rcu_batches_completed(), > rcupreempt_try_flip_state_name()); > - cnt += snprintf(&rcupreempt_trace_buf[cnt], > + cnt += scnprintf(&rcupreempt_trace_buf[cnt], > RCUPREEMPT_TRACE_BUF_SIZE - cnt, > "\n"); > bcount = simple_read_from_buffer(buffer, count, ppos,
| |