From: Ian Abbott Date: Wed, 8 Mar 2017 18:44:30 +0000 (+0000) Subject: staging: comedi: jr3_pci: check sizes at compile time X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7cb1c5c2cd5fe2d4303eee415ca2ed207bd932a5;p=openwrt%2Fstaging%2Fblogic.git staging: comedi: jr3_pci: check sizes at compile time The driver currently checks the size of `struct jr3_sensor` is correct when a device is attached, returning an error if it is wrong. Replace that with a compile-time check. We don't care too much about the size of `struct jr3_sensor` as it is embedded in the larger `struct jr3_block` and is followed by a lot of padding. We should care more that the size of `struct jr3_block` is correct, as it describes the overall register layout of a block, and there is an array of such blocks (one per subdevice). Check its size at compile-time using the `BUILD_BUG_ON()` macro. Signed-off-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/jr3_pci.c b/drivers/staging/comedi/drivers/jr3_pci.c index 8399493e7472..c0ae92217932 100644 --- a/drivers/staging/comedi/drivers/jr3_pci.c +++ b/drivers/staging/comedi/drivers/jr3_pci.c @@ -688,12 +688,7 @@ static int jr3_pci_auto_attach(struct comedi_device *dev, int ret; int i; - if (sizeof(struct jr3_sensor) != 0xc00) { - dev_err(dev->class_dev, - "sizeof(struct jr3_sensor) = %x [expected %x]\n", - (unsigned int)sizeof(struct jr3_sensor), 0xc00); - return -EINVAL; - } + BUILD_BUG_ON(sizeof(struct jr3_block) != 0x80000); if (context < ARRAY_SIZE(jr3_pci_boards)) board = &jr3_pci_boards[context];