mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-17 12:56:46 +07:00
staging: comedi: ni_660x: allocate counters early in (*auto_attach)
The ni_gpct_device_construct() could fail allocating the memory for device and its counters. For aesthetics, call the function before initializing the subdevices. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2363cbf073
commit
f229594a32
@ -914,6 +914,16 @@ static int ni_660x_auto_attach(struct comedi_device *dev,
|
||||
|
||||
ni_660x_init_tio_chips(dev, board->n_chips);
|
||||
|
||||
n_counters = board->n_chips * NI660X_COUNTERS_PER_CHIP;
|
||||
gpct_dev = ni_gpct_device_construct(dev,
|
||||
ni_660x_gpct_write,
|
||||
ni_660x_gpct_read,
|
||||
ni_gpct_variant_660x,
|
||||
n_counters);
|
||||
if (!gpct_dev)
|
||||
return -ENOMEM;
|
||||
devpriv->counter_dev = gpct_dev;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 2 + NI660X_MAX_COUNTERS);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -986,16 +996,6 @@ static int ni_660x_auto_attach(struct comedi_device *dev,
|
||||
s->insn_bits = ni_660x_dio_insn_bits;
|
||||
s->insn_config = ni_660x_dio_insn_config;
|
||||
|
||||
n_counters = board->n_chips * NI660X_COUNTERS_PER_CHIP;
|
||||
gpct_dev = ni_gpct_device_construct(dev,
|
||||
ni_660x_gpct_write,
|
||||
ni_660x_gpct_read,
|
||||
ni_gpct_variant_660x,
|
||||
n_counters);
|
||||
if (!gpct_dev)
|
||||
return -ENOMEM;
|
||||
devpriv->counter_dev = gpct_dev;
|
||||
|
||||
/* Counter subdevices (4 NI TIO General Purpose Counters per chip) */
|
||||
for (i = 0; i < NI660X_MAX_COUNTERS; ++i) {
|
||||
s = &dev->subdevices[subdev++];
|
||||
|
Loading…
Reference in New Issue
Block a user