All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: zhengbin <zhengbin13@huawei.com>
Cc: kbuild-all@01.org, sakari.ailus@linux.intel.com,
	laurent.pinchart@ideasonboard.com, mchehab@kernel.org,
	linux-media@vger.kernel.org, yi.zhang@huawei.com,
	zhengbin13@huawei.com
Subject: Re: [PATCH] media: mc-device.c: fix memleak in media_device_register_entity
Date: Fri, 16 Aug 2019 19:57:21 +0800	[thread overview]
Message-ID: <201908161941.dEcDMn0k%lkp@intel.com> (raw)
In-Reply-To: <1565926382-91620-1-git-send-email-zhengbin13@huawei.com>

[-- Attachment #1: Type: text/plain, Size: 5929 bytes --]

Hi zhengbin,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[cannot apply to v5.3-rc4 next-20190814]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/zhengbin/media-mc-device-c-fix-memleak-in-media_device_register_entity/20190816-191628
base:   git://linuxtv.org/media_tree.git master
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=sparc64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/media//mc/mc-device.c: In function 'media_device_register_entity':
>> drivers/media//mc/mc-device.c:635:4: error: implicit declaration of function '__media_device_unregister_entity'; did you mean 'media_device_unregister_entity'? [-Werror=implicit-function-declaration]
       __media_device_unregister_entity(entity);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       media_device_unregister_entity
   drivers/media//mc/mc-device.c: At top level:
>> drivers/media//mc/mc-device.c:648:13: warning: conflicting types for '__media_device_unregister_entity'
    static void __media_device_unregister_entity(struct media_entity *entity)
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/media//mc/mc-device.c:648:13: error: static declaration of '__media_device_unregister_entity' follows non-static declaration
   drivers/media//mc/mc-device.c:635:4: note: previous implicit declaration of '__media_device_unregister_entity' was here
       __media_device_unregister_entity(entity);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +635 drivers/media//mc/mc-device.c

   577	
   578	/**
   579	 * media_device_register_entity - Register an entity with a media device
   580	 * @mdev:	The media device
   581	 * @entity:	The entity
   582	 */
   583	int __must_check media_device_register_entity(struct media_device *mdev,
   584						      struct media_entity *entity)
   585	{
   586		struct media_entity_notify *notify, *next;
   587		unsigned int i;
   588		int ret;
   589	
   590		if (entity->function == MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN ||
   591		    entity->function == MEDIA_ENT_F_UNKNOWN)
   592			dev_warn(mdev->dev,
   593				 "Entity type for entity %s was not initialized!\n",
   594				 entity->name);
   595	
   596		/* Warn if we apparently re-register an entity */
   597		WARN_ON(entity->graph_obj.mdev != NULL);
   598		entity->graph_obj.mdev = mdev;
   599		INIT_LIST_HEAD(&entity->links);
   600		entity->num_links = 0;
   601		entity->num_backlinks = 0;
   602	
   603		ret = ida_alloc_min(&mdev->entity_internal_idx, 1, GFP_KERNEL);
   604		if (ret < 0)
   605			return ret;
   606		entity->internal_idx = ret;
   607	
   608		mutex_lock(&mdev->graph_mutex);
   609		mdev->entity_internal_idx_max =
   610			max(mdev->entity_internal_idx_max, entity->internal_idx);
   611	
   612		/* Initialize media_gobj embedded at the entity */
   613		media_gobj_create(mdev, MEDIA_GRAPH_ENTITY, &entity->graph_obj);
   614	
   615		/* Initialize objects at the pads */
   616		for (i = 0; i < entity->num_pads; i++)
   617			media_gobj_create(mdev, MEDIA_GRAPH_PAD,
   618				       &entity->pads[i].graph_obj);
   619	
   620		/* invoke entity_notify callbacks */
   621		list_for_each_entry_safe(notify, next, &mdev->entity_notify, list)
   622			notify->notify(entity, notify->notify_data);
   623	
   624		if (mdev->entity_internal_idx_max
   625		    >= mdev->pm_count_walk.ent_enum.idx_max) {
   626			struct media_graph new = { .top = 0 };
   627	
   628			/*
   629			 * Initialise the new graph walk before cleaning up
   630			 * the old one in order not to spoil the graph walk
   631			 * object of the media device if graph walk init fails.
   632			 */
   633			ret = media_graph_walk_init(&new, mdev);
   634			if (ret) {
 > 635				__media_device_unregister_entity(entity);
   636				mutex_unlock(&mdev->graph_mutex);
   637				return ret;
   638			}
   639			media_graph_walk_cleanup(&mdev->pm_count_walk);
   640			mdev->pm_count_walk = new;
   641		}
   642		mutex_unlock(&mdev->graph_mutex);
   643	
   644		return 0;
   645	}
   646	EXPORT_SYMBOL_GPL(media_device_register_entity);
   647	
 > 648	static void __media_device_unregister_entity(struct media_entity *entity)
   649	{
   650		struct media_device *mdev = entity->graph_obj.mdev;
   651		struct media_link *link, *tmp;
   652		struct media_interface *intf;
   653		unsigned int i;
   654	
   655		ida_free(&mdev->entity_internal_idx, entity->internal_idx);
   656	
   657		/* Remove all interface links pointing to this entity */
   658		list_for_each_entry(intf, &mdev->interfaces, graph_obj.list) {
   659			list_for_each_entry_safe(link, tmp, &intf->links, list) {
   660				if (link->entity == entity)
   661					__media_remove_intf_link(link);
   662			}
   663		}
   664	
   665		/* Remove all data links that belong to this entity */
   666		__media_entity_remove_links(entity);
   667	
   668		/* Remove all pads that belong to this entity */
   669		for (i = 0; i < entity->num_pads; i++)
   670			media_gobj_destroy(&entity->pads[i].graph_obj);
   671	
   672		/* Remove the entity */
   673		media_gobj_destroy(&entity->graph_obj);
   674	
   675		/* invoke entity_notify callbacks to handle entity removal?? */
   676	
   677		entity->graph_obj.mdev = NULL;
   678	}
   679	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 58651 bytes --]

      parent reply	other threads:[~2019-08-16 11:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-16  3:33 [PATCH] media: mc-device.c: fix memleak in media_device_register_entity zhengbin
2019-08-16  9:49 ` Sakari Ailus
2019-08-16 11:57 ` kbuild test robot [this message]

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=201908161941.dEcDMn0k%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@01.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=yi.zhang@huawei.com \
    --cc=zhengbin13@huawei.com \
    /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.