I would really really prefer if we can keep these as const*const
conversions instead of const, const.

We will see performance losses from doing this operation at runtime.

> On Wed, Jul 16, 2014 at 04:54:49AM +0000, Doug Hogan wrote:
> > 
> > +           if ((fake_table = mallocarray(3, sizeof(struct est_op),
> 
> It's not necessary to use mallocarray() for well known constants.
> Few examples below.
> 
> > --- sys/arch/i386/i386/est.c        12 Jul 2014 18:44:41 -0000      1.43
> > +++ sys/arch/i386/i386/est.c        15 Jul 2014 23:48:23 -0000
> ...
>  
> >  
> > -           if ((fake_table = malloc(sizeof(struct est_op) * 3, M_DEVBUF,
>                                                               ^^^
> 
> > diff -u -p -d -r1.31 if_tsec.c
> > --- sys/arch/socppc/dev/if_tsec.c   12 Jul 2014 18:44:42 -0000      1.31
> > +++ sys/arch/socppc/dev/if_tsec.c   15 Jul 2014 23:48:25 -0000
> > @@ -909,7 +909,7 @@ tsec_up(struct tsec_softc *sc)
> >         TSEC_NTXDESC * sizeof(struct tsec_desc), 8);
> >     sc->sc_txdesc = TSEC_DMA_KVA(sc->sc_txring);
> >  
> > -   sc->sc_txbuf = malloc(sizeof(struct tsec_buf) * TSEC_NTXDESC,
> > +   sc->sc_txbuf = mallocarray(TSEC_NTXDESC, sizeof(struct tsec_buf),
>                                  ^^^^^^^^^^^^
> >         M_DEVBUF, M_WAITOK);
> >     for (i = 0; i < TSEC_NTXDESC; i++) {
> >             txb = &sc->sc_txbuf[i];
> > @@ -935,7 +935,7 @@ tsec_up(struct tsec_softc *sc)
> >         TSEC_NRXDESC * sizeof(struct tsec_desc), 8);
> >     sc->sc_rxdesc = TSEC_DMA_KVA(sc->sc_rxring);
> >  
> > -   sc->sc_rxbuf = malloc(sizeof(struct tsec_buf) * TSEC_NRXDESC,
> > +   sc->sc_rxbuf = mallocarray(TSEC_NRXDESC, sizeof(struct tsec_buf),
>                                  ^^^^^^^^^^^^
> >         M_DEVBUF, M_WAITOK);
> >  
> >     for (i = 0; i < TSEC_NRXDESC; i++) {
> > Index: sys/arch/sparc/dev/obio.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/sparc/dev/obio.c,v
> > retrieving revision 1.22
> > diff -u -p -d -r1.22 obio.c
> > --- sys/arch/sparc/dev/obio.c       5 Sep 2010 18:10:10 -0000       1.22
> > +++ sys/arch/sparc/dev/obio.c       15 Jul 2014 23:48:26 -0000
> > @@ -310,7 +310,7 @@ vmesattach(parent, self, args)
> >     printf("\n");
> >  
> >     if (vmeints == NULL) {
> > -           vmeints = malloc(256 * sizeof(struct intrhand *), M_TEMP,
> > +           vmeints = mallocarray(256, sizeof(struct intrhand *), M_TEMP,
>                                     ^^^
> >                 M_NOWAIT | M_ZERO);
> >             if (vmeints == NULL)
> >                     panic("vmesattach: can't allocate intrhand");
> > @@ -332,7 +332,7 @@ vmelattach(parent, self, args)
> >     printf("\n");
> >  
> >     if (vmeints == NULL) {
> > -           vmeints = malloc(256 * sizeof(struct intrhand *), M_TEMP,
> > +           vmeints = mallocarray(256, sizeof(struct intrhand *), M_TEMP,
>                                     ^^^
> >                 M_NOWAIT | M_ZERO);
> >             if (vmeints == NULL)
> >                     panic("vmelattach: can't allocate intrhand");
> > Index: sys/arch/sparc/dev/xd.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/sparc/dev/xd.c,v
> > retrieving revision 1.62
> > diff -u -p -d -r1.62 xd.c
> > --- sys/arch/sparc/dev/xd.c 11 Jul 2014 16:35:40 -0000      1.62
> > +++ sys/arch/sparc/dev/xd.c 15 Jul 2014 23:48:26 -0000
> > @@ -414,7 +414,7 @@ xdcattach(parent, self, aux)
> >     /* Setup device view of DVMA address */
> >     xdc->dvmaiopb = (struct xd_iopb *) ((u_long) xdc->iopbase - DVMA_BASE);
> >  
> > -   xdc->reqs = malloc(XDC_MAXIOPB * sizeof(struct xd_iorq), M_DEVBUF,
> > +   xdc->reqs = mallocarray(XDC_MAXIOPB, sizeof(struct xd_iorq), M_DEVBUF,
>                               ^^^^^^^^^^^
> >         M_NOWAIT | M_ZERO);
> >     if (xdc->reqs == NULL)
> >             panic("xdc malloc");
> > Index: sys/arch/sparc/dev/xy.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/sparc/dev/xy.c,v
> > retrieving revision 1.59
> > diff -u -p -d -r1.59 xy.c
> > --- sys/arch/sparc/dev/xy.c 11 Jul 2014 16:35:40 -0000      1.59
> > +++ sys/arch/sparc/dev/xy.c 15 Jul 2014 23:48:26 -0000
> > @@ -364,7 +364,7 @@ xycattach(parent, self, aux)
> >     xyc->iopbase = tmp;
> >     xyc->iopbase = dtmp; /* XXX TMP HACK */
> >     xyc->dvmaiopb = (struct xy_iopb *) ((u_long)dtmp - DVMA_BASE);
> > -   xyc->reqs = malloc(XYC_MAXIOPB * sizeof(struct xy_iorq), M_DEVBUF,
> > +   xyc->reqs = mallocarray(XYC_MAXIOPB, sizeof(struct xy_iorq), M_DEVBUF,
>                               ^^^^^^^^^^^
> >         M_NOWAIT | M_ZERO);
> >     if (xyc->reqs == NULL)
> >             panic("xyc malloc");
> 
> > Index: sys/arch/sparc64/dev/vdsk.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/sparc64/dev/vdsk.c,v
> > retrieving revision 1.39
> > diff -u -p -d -r1.39 vdsk.c
> > --- sys/arch/sparc64/dev/vdsk.c     12 Jul 2014 18:44:43 -0000      1.39
> > +++ sys/arch/sparc64/dev/vdsk.c     15 Jul 2014 23:48:27 -0000
> > @@ -298,7 +298,7 @@ vdsk_attach(struct device *parent, struc
> >             printf(", can't allocate dring\n");
> >             goto free_map;
> >     }
> > -   sc->sc_vsd = malloc(32 * sizeof(*sc->sc_vsd), M_DEVBUF, M_NOWAIT);
> > +   sc->sc_vsd = mallocarray(32, sizeof(*sc->sc_vsd), M_DEVBUF, M_NOWAIT);
>                               ^^^^
> >     if (sc->sc_vsd == NULL) {
> >             printf(", can't allocate software ring\n");
> >             goto free_dring;
> > Index: sys/arch/sparc64/dev/vnet.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/sparc64/dev/vnet.c,v
> > retrieving revision 1.33
> > diff -u -p -d -r1.33 vnet.c
> > --- sys/arch/sparc64/dev/vnet.c     12 Jul 2014 18:44:43 -0000      1.33
> > +++ sys/arch/sparc64/dev/vnet.c     15 Jul 2014 23:48:27 -0000
> > @@ -1381,7 +1381,7 @@ vnet_init(struct ifnet *ifp)
> >     sc->sc_vd = vnet_dring_alloc(sc->sc_dmatag, 128);
> >     if (sc->sc_vd == NULL)
> >             return;
> > -   sc->sc_vsd = malloc(128 * sizeof(*sc->sc_vsd), M_DEVBUF, M_NOWAIT);
> > +   sc->sc_vsd = mallocarray(128, sizeof(*sc->sc_vsd), M_DEVBUF, M_NOWAIT);
>                                ^^^
> >     if (sc->sc_vsd == NULL)
> >             return;
> >  
> > Index: sys/dev/ic/aac.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/ic/aac.c,v
> > retrieving revision 1.64
> > diff -u -p -d -r1.64 aac.c
> > --- sys/dev/ic/aac.c        12 Jul 2014 18:48:17 -0000      1.64
> > +++ sys/dev/ic/aac.c        15 Jul 2014 23:48:30 -0000
> > @@ -1548,8 +1548,8 @@ aac_init(struct aac_softc *sc)
> >      
> >     /* Allocate some FIBs and associated command structs */
> >     TAILQ_INIT(&sc->aac_fibmap_tqh);
> > -   sc->aac_commands = malloc(AAC_MAX_FIBS * sizeof(struct aac_command),
> > -       M_DEVBUF, M_WAITOK | M_ZERO);
> > +   sc->aac_commands = mallocarray(AAC_MAX_FIBS,
>                                      ^^^^^^^^^^^^
> > +       sizeof(struct aac_command), M_DEVBUF, M_WAITOK | M_ZERO);
> >     while (sc->total_fibs < AAC_MAX_FIBS) {
> >             if (aac_alloc_commands(sc) != 0)
> >                     break;
> > Index: sys/dev/ic/adw.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/ic/adw.c,v
> > retrieving revision 1.50
> > diff -u -p -d -r1.50 adw.c
> > --- sys/dev/ic/adw.c        11 Jan 2012 16:22:32 -0000      1.50
> > +++ sys/dev/ic/adw.c        15 Jul 2014 23:48:30 -0000
> > @@ -146,7 +146,7 @@ adw_alloc_carriers(ADW_SOFTC *sc)
> >           * Allocate the control structure.
> >           */
> >     sc->sc_control->carriers = 
> > -           malloc(sizeof(ADW_CARRIER) * ADW_MAX_CARRIER, M_DEVBUF, 
> > +           mallocarray(ADW_MAX_CARRIER, sizeof(ADW_CARRIER), M_DEVBUF,
>                           ^^^^^^^^^^^^^^^
> >                    M_NOWAIT);
> >     if (sc->sc_control->carriers == NULL)
> >             return (ENOMEM);
> > Index: sys/dev/ic/ath.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/ic/ath.c,v
> > retrieving revision 1.101
> > diff -u -p -d -r1.101 ath.c
> > --- sys/dev/ic/ath.c        12 Jul 2014 18:48:17 -0000      1.101
> > +++ sys/dev/ic/ath.c        15 Jul 2014 23:48:30 -0000
> > @@ -2989,7 +2989,7 @@ ath_getchannels(struct ath_softc *sc, HA
> >     int i, ix, nchan;
> >  
> >     sc->sc_nchan = 0;
> > -   chans = malloc(IEEE80211_CHAN_MAX * sizeof(HAL_CHANNEL),
> > +   chans = mallocarray(IEEE80211_CHAN_MAX, sizeof(HAL_CHANNEL),
>                           ^^^^^^^^^^^^^^^^^^^
> >                     M_TEMP, M_NOWAIT);
> >     if (chans == NULL) {
> >             printf("%s: unable to allocate channel table\n", ifp->if_xname);
> 
> > Index: sys/dev/pci/azalia.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/azalia.c,v
> > retrieving revision 1.215
> > diff -u -p -d -r1.215 azalia.c
> > --- sys/dev/pci/azalia.c    13 Jul 2014 23:10:23 -0000      1.215
> > +++ sys/dev/pci/azalia.c    15 Jul 2014 23:48:32 -0000
> > @@ -1128,7 +1128,7 @@ azalia_init_rirb(azalia_t *az, int resum
> >             DPRINTF(("%s: RIRB allocation succeeded.\n", __func__));
> >  
> >             /* setup the unsolicited response queue */
> > -           az->unsolq = malloc(sizeof(rirb_entry_t) * UNSOLQ_SIZE,
> > +           az->unsolq = mallocarray(UNSOLQ_SIZE, sizeof(rirb_entry_t),
>                                        ^^^^^^^^^^^
> >                 M_DEVBUF, M_NOWAIT | M_ZERO);
> >             if (az->unsolq == NULL) {
> >                     DPRINTF(("%s: can't allocate unsolicited response 
> > queue.\n",
> > Index: sys/dev/pci/if_ix.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/if_ix.c,v
> > retrieving revision 1.96
> > diff -u -p -d -r1.96 if_ix.c
> > --- sys/dev/pci/if_ix.c     13 Jul 2014 23:10:23 -0000      1.96
> > +++ sys/dev/pci/if_ix.c     15 Jul 2014 23:48:33 -0000
> > @@ -229,8 +229,8 @@ ixgbe_attach(struct device *parent, stru
> >             goto err_out;
> >  
> >     /* Allocate multicast array memory. */
> > -   sc->mta = malloc(sizeof(uint8_t) * IXGBE_ETH_LENGTH_OF_ADDRESS *
> > -       MAX_NUM_MULTICAST_ADDRESSES, M_DEVBUF, M_NOWAIT);
> > +   sc->mta = mallocarray(MAX_NUM_MULTICAST_ADDRESSES,
>                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > +       IXGBE_ETH_LENGTH_OF_ADDRESS * sizeof(uint8_t), M_DEVBUF, M_NOWAIT);
> >     if (sc->mta == NULL) {
> >             printf(": Can not allocate multicast setup array\n");
> >             goto err_late;
> > Index: sys/dev/pci/if_san_xilinx.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/if_san_xilinx.c,v
> > retrieving revision 1.29
> > diff -u -p -d -r1.29 if_san_xilinx.c
> > --- sys/dev/pci/if_san_xilinx.c     12 Jul 2014 18:48:52 -0000      1.29
> > +++ sys/dev/pci/if_san_xilinx.c     15 Jul 2014 23:48:33 -0000
> > @@ -2390,7 +2390,8 @@ aft_alloc_rx_buffers(xilinx_softc_t *sc)
> >     SIMPLEQ_INIT(&sc->wp_rx_complete_list);
> >  
> >     /* allocate receive buffers in one cluster */
> > -   buf = malloc(sizeof(*buf) * MAX_RX_BUF, M_DEVBUF, M_NOWAIT | M_ZERO);
> > +   buf = mallocarray(MAX_RX_BUF, sizeof(*buf), M_DEVBUF,
>                         ^^^^^^^^^^
> > +       M_NOWAIT | M_ZERO);
> >     if (buf == NULL)
> >             return (1);
> >  
> > Index: sys/dev/sdmmc/sdmmc_scsi.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/sdmmc/sdmmc_scsi.c,v
> > retrieving revision 1.31
> > diff -u -p -d -r1.31 sdmmc_scsi.c
> > --- sys/dev/sdmmc/sdmmc_scsi.c      12 Jul 2014 18:48:52 -0000      1.31
> > +++ sys/dev/sdmmc/sdmmc_scsi.c      15 Jul 2014 23:48:34 -0000
> > @@ -104,8 +104,8 @@ sdmmc_scsi_attach(struct sdmmc_softc *sc
> >  
> >     scbus = malloc(sizeof *scbus, M_DEVBUF, M_WAITOK | M_ZERO);
> >  
> > -   scbus->sc_tgt = malloc(sizeof(*scbus->sc_tgt) *
> > -       (SDMMC_SCSIID_MAX+1), M_DEVBUF, M_WAITOK | M_ZERO);
> > +   scbus->sc_tgt = mallocarray(SDMMC_SCSIID_MAX + 1,
>                                   ^^^^^^^^^^^^^^^^^^^^^
> > +       sizeof(*scbus->sc_tgt), M_DEVBUF, M_WAITOK | M_ZERO);
> >  
> >     /*
> >      * Each card that sent us a CID in the identification stage
> > @@ -1962,7 +1962,8 @@ uaudio_identify_ac(struct uaudio_softc *
> >     ibufend = ibuf + aclen;
> >     dp = (const usb_descriptor_t *)ibuf;
> >     ndps = 0;
> > -   iot = malloc(sizeof(struct io_terminal) * 256, M_TEMP, M_NOWAIT | 
> > M_ZERO);
> > +   iot = mallocarray(256, sizeof(struct io_terminal), M_TEMP,
>                         ^^^^
> > +       M_NOWAIT | M_ZERO);
> >     if (iot == NULL) {
> >             printf("%s: no memory\n", __func__);
> >             return USBD_NOMEM;
> > Index: sys/dev/usb/uhci.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/uhci.c,v
> > retrieving revision 1.128
> > diff -u -p -d -r1.128 uhci.c
> > --- sys/dev/usb/uhci.c      12 Jul 2014 20:13:48 -0000      1.128
> > +++ sys/dev/usb/uhci.c      15 Jul 2014 23:48:37 -0000
> > @@ -2378,9 +2378,8 @@ uhci_setup_isoc(struct usbd_pipe *pipe)
> >     int i, s;
> >  
> >     iso = &upipe->u.iso;
> > -   iso->stds = malloc(UHCI_VFRAMELIST_COUNT *
> > -                      sizeof (struct uhci_soft_td *),
> > -                      M_USBHC, M_WAITOK);
> > +   iso->stds = mallocarray(UHCI_VFRAMELIST_COUNT,
>                               ^^^^^^^^^^^^^^^^^^^^^
> > +       sizeof(struct uhci_soft_td *), M_USBHC, M_WAITOK);
> >  
> >     token = rd ? UHCI_TD_IN (0, endpt, addr, 0) :
> >                  UHCI_TD_OUT(0, endpt, addr, 0);
> > Index: sys/dev/usb/usb_subr.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/usb_subr.c,v
> > retrieving revision 1.106
> > diff -u -p -d -r1.106 usb_subr.c
> > --- sys/dev/usb/usb_subr.c  12 Jul 2014 18:48:53 -0000      1.106
> > +++ sys/dev/usb/usb_subr.c  15 Jul 2014 23:48:37 -0000
> > @@ -875,7 +875,7 @@ usbd_probe_and_attach(struct device *par
> >     DPRINTF(("usbd_probe_and_attach trying device specific drivers\n"));
> >     dv = config_found_sm(parent, &uaa, usbd_print, usbd_submatch);
> >     if (dv) {
> > -           dev->subdevs = malloc(2 * sizeof dv, M_USB, M_NOWAIT);
> > +           dev->subdevs = mallocarray(2, sizeof(dv), M_USB, M_NOWAIT);
>                                       ^^^^^^^
> >             if (dev->subdevs == NULL) {
> >                     err = USBD_NOMEM;
> >                     goto fail;
> > @@ -974,7 +974,8 @@ generic:
> >     dv = config_found_sm(parent, &uaa, usbd_print, usbd_submatch);
> >     if (dv != NULL) {
> >             if (dev->ndevs == 0) {
> > -                   dev->subdevs = malloc(2 * sizeof dv, M_USB, M_NOWAIT);
> > +                   dev->subdevs = mallocarray(2, sizeof(dv), M_USB,
>                                               ^^^^^^^
> > +                       M_NOWAIT);
> >                     if (dev->subdevs == NULL) {
> >                             err = USBD_NOMEM;
> >                             goto fail;
> > Index: sys/dev/wscons/wsemul_vt100.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wsemul_vt100.c,v
> > retrieving revision 1.32
> > diff -u -p -d -r1.32 wsemul_vt100.c
> > --- sys/dev/wscons/wsemul_vt100.c   12 Jul 2014 18:48:53 -0000      1.32
> > +++ sys/dev/wscons/wsemul_vt100.c   15 Jul 2014 23:48:37 -0000
> > @@ -222,10 +222,10 @@ wsemul_vt100_attach(int console, const s
> >     edp->dblwid = malloc(edp->nrows, M_DEVBUF, M_NOWAIT | M_ZERO);
> >     edp->dw = 0;
> >     edp->dcsarg = malloc(DCS_MAXLEN, M_DEVBUF, M_NOWAIT);
> > -   edp->isolatin1tab = malloc(128 * sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > -   edp->decgraphtab = malloc(128 * sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > -   edp->dectechtab = malloc(128 * sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > -   edp->nrctab = malloc(128 * sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > +   edp->isolatin1tab = mallocarray(128, sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > +   edp->decgraphtab = mallocarray(128, sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > +   edp->dectechtab = mallocarray(128, sizeof(u_int), M_DEVBUF, M_NOWAIT);
> > +   edp->nrctab = mallocarray(128, sizeof(u_int), M_DEVBUF, M_NOWAIT);
> 
> dotto
> 
> >     vt100_initchartables(edp);
> >     wsemul_vt100_reset(edp);
> >     return (edp);
> > Index: sys/dev/wscons/wsevent.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wsevent.c,v
> > retrieving revision 1.9
> > diff -u -p -d -r1.9 wsevent.c
> > --- sys/dev/wscons/wsevent.c        12 Jul 2014 18:48:53 -0000      1.9
> > +++ sys/dev/wscons/wsevent.c        15 Jul 2014 23:48:38 -0000
> > @@ -101,7 +101,7 @@ wsevent_init(struct wseventvar *ev)
> >             return;
> >     }
> >     ev->get = ev->put = 0;
> > -   ev->q = malloc((u_long)WSEVENT_QSIZE * sizeof(struct wscons_event),
> > +   ev->q = mallocarray((u_long)WSEVENT_QSIZE, sizeof(struct wscons_event),
>                                   ^^^^^^^^^^^^^
> >         M_DEVBUF, M_WAITOK | M_ZERO);
> >  }
> >  
> > Index: sys/net80211/ieee80211_input.c
> > ===================================================================
> > RCS file: /cvs/src/sys/net80211/ieee80211_input.c,v
> > retrieving revision 1.126
> > diff -u -p -d -r1.126 ieee80211_input.c
> > --- sys/net80211/ieee80211_input.c  12 Jul 2014 18:44:22 -0000      1.126
> > +++ sys/net80211/ieee80211_input.c  15 Jul 2014 23:48:41 -0000
> > @@ -2433,7 +2433,7 @@ ieee80211_recv_addba_req(struct ieee8021
> >     ba->ba_winstart = ssn;
> >     ba->ba_winend = (ba->ba_winstart + ba->ba_winsize - 1) & 0xfff;
> >     /* allocate and setup our reordering buffer */
> > -   ba->ba_buf = malloc(IEEE80211_BA_MAX_WINSZ * sizeof(*ba->ba_buf),
> > +   ba->ba_buf = mallocarray(IEEE80211_BA_MAX_WINSZ, sizeof(*ba->ba_buf),
>                                ^^^^^^^^^^^^^^^^^^^^^^
> >         M_DEVBUF, M_NOWAIT | M_ZERO);
> >     if (ba->ba_buf == NULL) {
> >             status = IEEE80211_STATUS_REFUSED;
> 

Reply via email to