From: Joe Perches <joe@perches.com>
To: Allen Pais <allen.lkml@gmail.com>, linux-kernel@vger.kernel.org
Cc: x86@kernel.org
Subject: Re: [PATCH 1/1] x86:mm:return -ENOMEM if kzalloc() fails
Date: Wed, 06 Sep 2017 23:33:51 -0700 [thread overview]
Message-ID: <1504766031.7546.14.camel@perches.com> (raw)
In-Reply-To: <1504765607-23548-1-git-send-email-allen.lkml@gmail.com>
On Thu, 2017-09-07 at 11:56 +0530, Allen Pais wrote:
> Currently on failure the value returned from kzalloc() is -1.
> It should return -ENOMEM.
>
Looks like there are quite a few of these:
(probably several false positives too)
$ git grep -A3 alloc.*GFP|grep -B3 -P "return\s+\-\d+"
arch/powerpc/platforms/cell/spider-pci.c: dummy_page_va = kmalloc(PAGE_SIZE, GFP_KERNEL);
arch/powerpc/platforms/cell/spider-pci.c- if (!dummy_page_va) {
arch/powerpc/platforms/cell/spider-pci.c- pr_err("SPIDERPCI-IOWA:Alloc dummy_page_va failed.\n");
arch/powerpc/platforms/cell/spider-pci.c- return -1;
--
--
arch/x86/mm/kmmio.c: f = kzalloc(sizeof(*f), GFP_ATOMIC);
arch/x86/mm/kmmio.c- if (!f)
arch/x86/mm/kmmio.c- return -1;
--
drivers/bluetooth/bluecard_cs.c: skb = bt_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC);
drivers/bluetooth/bluecard_cs.c- if (!skb) {
drivers/bluetooth/bluecard_cs.c- BT_ERR("Can't allocate mem for new packet");
drivers/bluetooth/bluecard_cs.c- return -1;
--
drivers/crypto/omap-aes-gcm.c: sk_req = skcipher_request_alloc(ctx->ctr, GFP_KERNEL);
drivers/crypto/omap-aes-gcm.c- if (!sk_req) {
drivers/crypto/omap-aes-gcm.c- pr_err("skcipher: Failed to allocate request\n");
drivers/crypto/omap-aes-gcm.c- return -1;
--
--
drivers/gpu/drm/gma500/mid_bios.c: gct = kmalloc(sizeof(*gct) * vbt.panel_count, GFP_KERNEL);
drivers/gpu/drm/gma500/mid_bios.c- if (!gct)
drivers/gpu/drm/gma500/mid_bios.c- return -1;
--
drivers/hid/usbhid/hiddev.c- if ((len = usb_string(dev, idx, buf, HID_STRING_SIZE-1)) < 0) {
--
drivers/hid/usbhid/hiddev.c: if (!(hiddev = kzalloc(sizeof(struct hiddev), GFP_KERNEL)))
drivers/hid/usbhid/hiddev.c- return -1;
--
drivers/hid/usbhid/hiddev.c- init_waitqueue_head(&hiddev->wait);
--
drivers/hid/usbhid/usbkbd.c: if (!(kbd->irq = usb_alloc_urb(0, GFP_KERNEL)))
drivers/hid/usbhid/usbkbd.c- return -1;
drivers/hid/usbhid/usbkbd.c: if (!(kbd->led = usb_alloc_urb(0, GFP_KERNEL)))
drivers/hid/usbhid/usbkbd.c- return -1;
drivers/hid/usbhid/usbkbd.c: if (!(kbd->new = usb_alloc_coherent(dev, 8, GFP_ATOMIC, &kbd->new_dma)))
drivers/hid/usbhid/usbkbd.c- return -1;
drivers/hid/usbhid/usbkbd.c: if (!(kbd->cr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL)))
drivers/hid/usbhid/usbkbd.c- return -1;
drivers/hid/usbhid/usbkbd.c: if (!(kbd->leds = usb_alloc_coherent(dev, 1, GFP_ATOMIC, &kbd->leds_dma)))
drivers/hid/usbhid/usbkbd.c- return -1;
--
drivers/isdn/capi/capi.c: n = kmalloc(sizeof(*n), GFP_ATOMIC);
drivers/isdn/capi/capi.c- if (unlikely(!n)) {
drivers/isdn/capi/capi.c- printk(KERN_ERR "capi: alloc datahandle failed\n");
drivers/isdn/capi/capi.c- return -1;
--
drivers/isdn/capi/capidrv.c: n = kmalloc(sizeof(struct ncci_datahandle_queue), GFP_ATOMIC);
drivers/isdn/capi/capidrv.c- if (!n) {
drivers/isdn/capi/capidrv.c- printk(KERN_ERR "capidrv: kmalloc ncci_datahandle failed\n");
drivers/isdn/capi/capidrv.c- return -1;
--
drivers/isdn/capi/capidrv.c: if (!(card = kzalloc(sizeof(capidrv_contr), GFP_ATOMIC))) {
drivers/isdn/capi/capidrv.c- printk(KERN_WARNING
drivers/isdn/capi/capidrv.c- "capidrv: (%s) Could not allocate contr-struct.\n", id);
drivers/isdn/capi/capidrv.c- return -1;
--
--
drivers/isdn/i4l/isdn_common.c: if (!(d->rcverr = kzalloc(sizeof(int) * m, GFP_ATOMIC))) {
drivers/isdn/i4l/isdn_common.c- printk(KERN_WARNING "register_isdn: Could not alloc rcverr\n");
drivers/isdn/i4l/isdn_common.c- return -1;
--
--
drivers/media/pci/ivtv/ivtv-udma.c: dma->bouncemap[map_offset] = alloc_page(GFP_KERNEL);
drivers/media/pci/ivtv/ivtv-udma.c- if (dma->bouncemap[map_offset] == NULL)
drivers/media/pci/ivtv/ivtv-udma.c- return -1;
--
drivers/media/rc/ati_remote.c: ati_remote->inbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
drivers/media/rc/ati_remote.c- &ati_remote->inbuf_dma);
drivers/media/rc/ati_remote.c- if (!ati_remote->inbuf)
drivers/media/rc/ati_remote.c- return -1;
--
drivers/media/rc/ati_remote.c: ati_remote->outbuf = usb_alloc_coherent(udev, DATA_BUFSIZE, GFP_ATOMIC,
drivers/media/rc/ati_remote.c- &ati_remote->outbuf_dma);
drivers/media/rc/ati_remote.c- if (!ati_remote->outbuf)
drivers/media/rc/ati_remote.c- return -1;
--
drivers/media/rc/ati_remote.c: ati_remote->irq_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/media/rc/ati_remote.c- if (!ati_remote->irq_urb)
drivers/media/rc/ati_remote.c- return -1;
drivers/media/rc/ati_remote.c-
drivers/media/rc/ati_remote.c: ati_remote->out_urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/media/rc/ati_remote.c- if (!ati_remote->out_urb)
drivers/media/rc/ati_remote.c- return -1;
--
--
drivers/message/fusion/mptbase.c: mem = kmalloc(sz, GFP_ATOMIC);
drivers/message/fusion/mptbase.c- if (mem == NULL)
drivers/message/fusion/mptbase.c- return -1;
--
--
drivers/message/fusion/mptbase.c: mem = kmalloc(sz, GFP_ATOMIC);
drivers/message/fusion/mptbase.c- if (mem == NULL)
drivers/message/fusion/mptbase.c- return -1;
--
--
drivers/message/fusion/mptbase.c: mem = kmalloc(sz, GFP_ATOMIC);
drivers/message/fusion/mptbase.c- if (mem == NULL)
drivers/message/fusion/mptbase.c- return -1;
--
drivers/mtd/nand/nandsim.c: mypage->byte = kmem_cache_alloc(ns->nand_pages_slab, GFP_NOFS);
drivers/mtd/nand/nandsim.c- if (mypage->byte == NULL) {
drivers/mtd/nand/nandsim.c- NS_ERR("prog_page: error allocating memory for page %d\n", ns->regs.row);
drivers/mtd/nand/nandsim.c- return -1;
--
--
drivers/net/bonding/bond_alb.c: new_hashtbl = kmalloc(size, GFP_KERNEL);
drivers/net/bonding/bond_alb.c- if (!new_hashtbl)
drivers/net/bonding/bond_alb.c- return -1;
--
drivers/net/ethernet/ibm/ibmveth.c: pool->free_map = kmalloc(sizeof(u16) * pool->size, GFP_KERNEL);
drivers/net/ethernet/ibm/ibmveth.c-
drivers/net/ethernet/ibm/ibmveth.c- if (!pool->free_map)
drivers/net/ethernet/ibm/ibmveth.c- return -1;
--
--
drivers/net/ethernet/ibm/ibmvnic.c: allqueues = kcalloc(total_queues, sizeof(*allqueues), GFP_KERNEL);
drivers/net/ethernet/ibm/ibmvnic.c- if (!allqueues)
drivers/net/ethernet/ibm/ibmvnic.c- return -1;
--
drivers/net/ethernet/sun/cassini.c- if (page) {
--
drivers/net/ethernet/sun/cassini.c: if ((page[i] = cas_page_alloc(cp, GFP_KERNEL)) == NULL)
drivers/net/ethernet/sun/cassini.c- return -1;
--
--
drivers/net/wireless/marvell/mwifiex/sdio.c: skb = mwifiex_alloc_dma_align_buf(rx_len, GFP_KERNEL);
drivers/net/wireless/marvell/mwifiex/sdio.c- if (!skb)
drivers/net/wireless/marvell/mwifiex/sdio.c- return -1;
--
--
drivers/net/wireless/marvell/mwifiex/usb.c: card->rx_data_list[i].urb = usb_alloc_urb(0, GFP_KERNEL);
drivers/net/wireless/marvell/mwifiex/usb.c- if (!card->rx_data_list[i].urb)
drivers/net/wireless/marvell/mwifiex/usb.c- return -1;
--
drivers/parisc/eisa_enumerator.c- res->end = get_16(buf+len+1)+(c&HPEE_PORT_SIZE_MASK)+1;
--
drivers/parisc/eisa_enumerator.c: if (NULL == (board = kmalloc(8, GFP_KERNEL))) {
drivers/parisc/eisa_enumerator.c- return -1;
--
--
drivers/pnp/pnpbios/core.c: node = kzalloc(node_info.max_node_size, GFP_KERNEL);
drivers/pnp/pnpbios/core.c- if (!node)
drivers/pnp/pnpbios/core.c- return -1;
--
--
drivers/pnp/pnpbios/core.c: node = kzalloc(node_info.max_node_size, GFP_KERNEL);
drivers/pnp/pnpbios/core.c- if (!node)
drivers/pnp/pnpbios/core.c- return -1;
--
drivers/scsi/megaraid/megaraid_mbox.c- con_log(CL_ANN, (KERN_WARNING
--
drivers/scsi/megaraid/megaraid_mbox.c: raid_dev = kzalloc(sizeof(mraid_device_t), GFP_KERNEL);
drivers/scsi/megaraid/megaraid_mbox.c- if (raid_dev == NULL) return -1;
--
--
drivers/staging/rtlwifi/halmac/rtl_halmac.c: comp = kzalloc(sizeof(*comp), GFP_KERNEL);
drivers/staging/rtlwifi/halmac/rtl_halmac.c- if (!comp)
drivers/staging/rtlwifi/halmac/rtl_halmac.c- return -1;
--
--
drivers/staging/rtlwifi/halmac/rtl_halmac.c: indicator = kzalloc(size, GFP_KERNEL);
drivers/staging/rtlwifi/halmac/rtl_halmac.c- if (!indicator)
drivers/staging/rtlwifi/halmac/rtl_halmac.c- return -1;
--
--
drivers/target/iscsi/cxgbit/cxgbit_cm.c: skb = alloc_skb(len, GFP_KERNEL);
drivers/target/iscsi/cxgbit/cxgbit_cm.c- if (!skb)
drivers/target/iscsi/cxgbit/cxgbit_cm.c- return -1;
--
--
drivers/target/iscsi/cxgbit/cxgbit_target.c: page = alloc_page(GFP_KERNEL | __GFP_ZERO);
drivers/target/iscsi/cxgbit/cxgbit_target.c- if (!page)
drivers/target/iscsi/cxgbit/cxgbit_target.c- return -1;
--
--
drivers/target/iscsi/iscsi_target.c: iscsit_global = kzalloc(sizeof(*iscsit_global), GFP_KERNEL);
drivers/target/iscsi/iscsi_target.c- if (!iscsit_global)
drivers/target/iscsi/iscsi_target.c- return -1;
--
drivers/target/iscsi/iscsi_target_nego.c: tmpbuf = kzalloc(payload_length + 1, GFP_KERNEL);
drivers/target/iscsi/iscsi_target_nego.c- if (!tmpbuf) {
drivers/target/iscsi/iscsi_target_nego.c- pr_err("Unable to allocate memory for tmpbuf.\n");
drivers/target/iscsi/iscsi_target_nego.c- return -1;
--
drivers/target/iscsi/iscsi_target_util.c: r2t = kmem_cache_zalloc(lio_r2t_cache, GFP_ATOMIC);
drivers/target/iscsi/iscsi_target_util.c- if (!r2t) {
drivers/target/iscsi/iscsi_target_util.c- pr_err("Unable to allocate memory for struct iscsi_r2t.\n");
drivers/target/iscsi/iscsi_target_util.c- return -1;
--
--
drivers/usb/gadget/udc/fsl_udc_core.c: udc->eps = kzalloc(sizeof(struct fsl_ep) * udc->max_ep, GFP_KERNEL);
drivers/usb/gadget/udc/fsl_udc_core.c- if (!udc->eps)
drivers/usb/gadget/udc/fsl_udc_core.c- return -1;
--
--
drivers/usb/host/ehci-q.c: qtd = ehci_qtd_alloc(ehci, GFP_KERNEL);
drivers/usb/host/ehci-q.c- if (unlikely(!qtd))
drivers/usb/host/ehci-q.c- return -1;
--
--
drivers/usb/serial/io_edgeport.c: pStringDesc = kmalloc(StringDesc.bLength, GFP_KERNEL);
drivers/usb/serial/io_edgeport.c- if (!pStringDesc)
drivers/usb/serial/io_edgeport.c- return -1;
--
drivers/usb/storage/sddr55.c: buffer = kmalloc( numblocks * 2, GFP_NOIO );
drivers/usb/storage/sddr55.c-
drivers/usb/storage/sddr55.c- if (!buffer)
drivers/usb/storage/sddr55.c- return -1;
--
--
drivers/video/fbdev/matrox/matroxfb_base.c: minfo = kzalloc(sizeof(*minfo), GFP_KERNEL);
drivers/video/fbdev/matrox/matroxfb_base.c- if (!minfo)
drivers/video/fbdev/matrox/matroxfb_base.c- return -1;
--
--
fs/btrfs/check-integrity.c: block_ctx->pagev[i] = alloc_page(GFP_NOFS);
fs/btrfs/check-integrity.c- if (!block_ctx->pagev[i])
fs/btrfs/check-integrity.c- return -1;
--
fs/btrfs/check-integrity.c: state = kvzalloc(sizeof(*state), GFP_KERNEL);
fs/btrfs/check-integrity.c- if (!state) {
fs/btrfs/check-integrity.c- pr_info("btrfs check-integrity: allocation failed!\n");
fs/btrfs/check-integrity.c- return -1;
--
--
lib/string.c: p = kmalloc(256 * 2 * 2, GFP_KERNEL);
lib/string.c- if (!p)
lib/string.c- return -1;
--
--
lib/string.c: p = kmalloc(256 * 2 * 4, GFP_KERNEL);
lib/string.c- if (!p)
lib/string.c- return -1;
--
--
lib/string.c: p = kmalloc(256 * 2 * 8, GFP_KERNEL);
lib/string.c- if (!p)
lib/string.c- return -1;
--
--
net/atm/lec.c: skb = alloc_skb(sizeof(struct atmlec_msg), GFP_ATOMIC);
net/atm/lec.c- if (!skb)
net/atm/lec.c- return -1;
--
--
net/atm/lec.c: skb = alloc_skb(*sizeoftlvs, GFP_ATOMIC);
net/atm/lec.c- if (skb == NULL)
net/atm/lec.c- return -1;
--
net/ipv4/igmp.c: skb = alloc_skb(IGMP_SIZE + hlen + tlen, GFP_ATOMIC);
net/ipv4/igmp.c- if (!skb) {
net/ipv4/igmp.c- ip_rt_put(rt);
net/ipv4/igmp.c- return -1;
--
--
net/ipv4/tcp_output.c: nskb = sk_stream_alloc_skb(sk, probe_size, GFP_ATOMIC, false);
net/ipv4/tcp_output.c- if (!nskb)
net/ipv4/tcp_output.c- return -1;
--
net/netrom/af_netrom.c: dev_nr = kzalloc(nr_ndevs * sizeof(struct net_device *), GFP_KERNEL);
net/netrom/af_netrom.c- if (dev_nr == NULL) {
net/netrom/af_netrom.c- printk(KERN_ERR "NET/ROM: nr_proto_init - unable to allocate device array\n");
net/netrom/af_netrom.c- return -1;
--
--
net/sunrpc/auth_gss/svcauth_gss.c: xdr_seq = kmalloc(4, GFP_KERNEL);
net/sunrpc/auth_gss/svcauth_gss.c- if (!xdr_seq)
net/sunrpc/auth_gss/svcauth_gss.c- return -1;
--
sound/oss/ad1848.c: portc = kmalloc(sizeof(ad1848_port_info), GFP_KERNEL);
sound/oss/ad1848.c- if(portc==NULL) {
sound/oss/ad1848.c- release_region(devc->base, 4);
sound/oss/ad1848.c- return -1;
--
sound/oss/swarm_cs4297a.c: dma->descrtab = kzalloc(dma->ringsz * sizeof(serdma_descr_t), GFP_KERNEL);
sound/oss/swarm_cs4297a.c- if (!dma->descrtab) {
sound/oss/swarm_cs4297a.c- printk(KERN_ERR "cs4297a: kzalloc descrtab failed\n");
sound/oss/swarm_cs4297a.c- return -1;
--
sound/oss/swarm_cs4297a.c: if (!(s = kzalloc(sizeof(struct cs4297a_state), GFP_KERNEL))) {
sound/oss/swarm_cs4297a.c- CS_DBGOUT(CS_ERROR, 1, printk(KERN_ERR
sound/oss/swarm_cs4297a.c- "cs4297a: probe() no memory for state struct.\n"));
sound/oss/swarm_cs4297a.c- return -1;
>
next prev parent reply other threads:[~2017-09-07 6:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-07 6:26 [PATCH 1/1] x86:mm:return -ENOMEM if kzalloc() fails Allen Pais
2017-09-07 6:33 ` Joe Perches [this message]
2017-09-07 6:38 ` Allen
2017-09-07 6:46 ` Joe Perches
2017-09-07 6:54 ` Allen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1504766031.7546.14.camel@perches.com \
--to=joe@perches.com \
--cc=allen.lkml@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.