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 --]
prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).