Re: [RFC 2/5] ia64/sn/hwperf: use seq_open_data

From: Rasmus Villemoes
Date: Fri Mar 02 2018 - 03:23:09 EST


On 2 March 2018 at 00:37, Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> wrote:
> This code should check the return value of seq_open(); if it failed,
> file->private_data is NULL. But we can avoid the issue entirely and
> simplify the code by letting seq_open_data() set the ->private member
> to objbuf.
>
> if ((e = sn_hwperf_enum_objects(&nobj, &objbuf)) == 0) {
> - e = seq_open(file, &sn_topology_seq_ops);
> - seq = file->private_data;
> - seq->private = objbuf;
> + e = seq_open_data(file, &sn_topology_seq_ops, objbuf);
> }

Well, this turns a NULL deref into a resource leak; we still need to
add a check of the return value and vfree(objbuf) on failure.

Rasmus