irq = pci_dev->irq;
 
        /* Allocate buffer to hold values for AO channel scan. */
-       devpriv->ao_scan_vals = kmalloc(sizeof(devpriv->ao_scan_vals[0]) *
-                                       board->ao_chans, GFP_KERNEL);
+       devpriv->ao_scan_vals = kmalloc_array(board->ao_chans,
+                                             sizeof(devpriv->ao_scan_vals[0]),
+                                             GFP_KERNEL);
        if (!devpriv->ao_scan_vals)
                return -ENOMEM;
 
        /* Allocate buffer to hold AO channel scan order. */
-       devpriv->ao_scan_order = kmalloc(sizeof(devpriv->ao_scan_order[0]) *
-                                        board->ao_chans, GFP_KERNEL);
+       devpriv->ao_scan_order =
+                               kmalloc_array(board->ao_chans,
+                                             sizeof(devpriv->ao_scan_order[0]),
+                                             GFP_KERNEL);
        if (!devpriv->ao_scan_order)
                return -ENOMEM;
 
 
        if (s->n_chan == 32) {
                const struct comedi_lrange **range_table_list;
 
-               range_table_list = kmalloc(sizeof(struct comedi_lrange *) * 32,
-                                          GFP_KERNEL);
+               range_table_list = kmalloc_array(32,
+                                                sizeof(struct comedi_lrange *),
+                                                GFP_KERNEL);
                if (!range_table_list)
                        return -ENOMEM;
                s->range_table_list = range_table_list;