sparc64: viohs: Use struct_size() helper
authorGustavo A. R. Silva <gustavoars@kernel.org>
Sat, 20 Jun 2020 01:14:06 +0000 (20:14 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Jun 2020 22:43:16 +0000 (15:43 -0700)
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes. Also, remove unnecessary
variable _len_.

This code was detected with the help of Coccinelle and, audited and
fixed manually.

Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/viohs.c

index 7db5aabe9708576109bd028c241532150339ff59..e27afd233bf52628f89e471638673f81842eaa4b 100644 (file)
@@ -428,7 +428,7 @@ static int process_dreg_info(struct vio_driver_state *vio,
                             struct vio_dring_register *pkt)
 {
        struct vio_dring_state *dr;
-       int i, len;
+       int i;
 
        viodbg(HS, "GOT DRING_REG INFO ident[%llx] "
               "ndesc[%u] dsz[%u] opt[0x%x] ncookies[%u]\n",
@@ -482,9 +482,7 @@ static int process_dreg_info(struct vio_driver_state *vio,
               pkt->num_descr, pkt->descr_size, pkt->options,
               pkt->num_cookies);
 
-       len = (sizeof(*pkt) +
-              (dr->ncookies * sizeof(struct ldc_trans_cookie)));
-       if (send_ctrl(vio, &pkt->tag, len) < 0)
+       if (send_ctrl(vio, &pkt->tag, struct_size(pkt, cookies, dr->ncookies)) < 0)
                goto send_nack;
 
        vio->dr_state |= VIO_DR_STATE_RXREG;