On Mon, Feb 13, 2017 at 07:51:06PM -0800, Dmitry Torokhov wrote: > @@ -269,13 +269,13 @@ static int ptp_populate_pins(struct ptp_clock *ptp) > struct ptp_clock_info *info = ptp->info; > int err = -ENOMEM, i, n_pins = info->n_pins; > > - ptp->pin_dev_attr = kzalloc(n_pins * sizeof(*ptp->pin_dev_attr), > + ptp->pin_dev_attr = kcalloc(n_pins, sizeof(*ptp->pin_dev_attr), > GFP_KERNEL); > if (!ptp->pin_dev_attr) > goto no_dev_attr; > > - ptp->pin_attr = kzalloc((1 + n_pins) * sizeof(struct attribute *), > - GFP_KERNEL); > + ptp->pin_attr = kmalloc_array(1 + n_pins, sizeof(*ptp->pin_attr), > + GFP_KERNEL);
I prefer kcalloc here as well, even if it isn't strictly necessary according to the current usage of pin_attr. That way, any future changes to the pin handling code won't have to worry about uninitialized memory. After all, this is hardly a performance path. > if (!ptp->pin_attr) > goto no_pin_attr; > > @@ -289,6 +289,9 @@ static int ptp_populate_pins(struct ptp_clock *ptp) > ptp->pin_attr[i] = &da->attr; > } > > + /* NULL terminator */ > + ptp->pin_attr[n_pins] = NULL; And drop this then, please. Thanks, Richard