All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:1024:37: warning: Uninitialized variable: pdesc [uninitvar]
Date: Sun, 23 Jan 2022 05:51:51 +0800	[thread overview]
Message-ID: <202201230446.MgsaPDeX-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Martin Krastev <krastevm@vmware.com>
CC: Zack Rusin <zackr@vmware.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   1c52283265a462a100ae63ddf58b4e5884acde86
commit: 7a7a933edd6c3a6d5d64e08093f2d564104cefcd drm/vmwgfx: Introduce VMware mks-guest-stats
date:   8 months ago
:::::: branch date: 11 hours ago
:::::: commit date: 8 months ago
compiler: aarch64-linux-gcc (GCC) 11.2.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/message/fusion/mptbase.c:2888:3: warning: Variable 'i' is modified but its new value is never used. [unreadVariable]
     i++;
     ^
>> drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:1024:37: warning: Uninitialized variable: pdesc [uninitvar]
    struct page *pages_stat[ARRAY_SIZE(pdesc->statPPNs)];
                                       ^
   drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:1025:37: warning: Uninitialized variable: pdesc [uninitvar]
    struct page *pages_info[ARRAY_SIZE(pdesc->infoPPNs)];
                                       ^
   drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:1026:37: warning: Uninitialized variable: pdesc [uninitvar]
    struct page *pages_strs[ARRAY_SIZE(pdesc->strsPPNs)];
                                       ^
   drivers/gpu/drm/vmwgfx/vmwgfx_msg.c:1040:34: warning: Uninitialized variable: pdesc [uninitvar]
    if (num_pages_stat > ARRAY_SIZE(pdesc->statPPNs) ||
                                    ^

vim +1024 drivers/gpu/drm/vmwgfx/vmwgfx_msg.c

7a7a933edd6c3a Martin Krastev 2021-06-09   993  
7a7a933edd6c3a Martin Krastev 2021-06-09   994  /**
7a7a933edd6c3a Martin Krastev 2021-06-09   995   * vmw_mksstat_add_ioctl: Creates a single userspace-originating mksGuestStat
7a7a933edd6c3a Martin Krastev 2021-06-09   996   * instance descriptor and registers that with the hypervisor.
7a7a933edd6c3a Martin Krastev 2021-06-09   997   *
7a7a933edd6c3a Martin Krastev 2021-06-09   998   * Create a hypervisor PFN mapping, containing a single mksGuestStat instance
7a7a933edd6c3a Martin Krastev 2021-06-09   999   * descriptor and pin the corresponding userspace pages.
7a7a933edd6c3a Martin Krastev 2021-06-09  1000   *
7a7a933edd6c3a Martin Krastev 2021-06-09  1001   * @dev: Identifies the drm device.
7a7a933edd6c3a Martin Krastev 2021-06-09  1002   * @data: Pointer to the ioctl argument.
7a7a933edd6c3a Martin Krastev 2021-06-09  1003   * @file_priv: Identifies the caller; unused.
7a7a933edd6c3a Martin Krastev 2021-06-09  1004   * Return: Zero on success, negative error code on error.
7a7a933edd6c3a Martin Krastev 2021-06-09  1005   */
7a7a933edd6c3a Martin Krastev 2021-06-09  1006  
7a7a933edd6c3a Martin Krastev 2021-06-09  1007  int vmw_mksstat_add_ioctl(struct drm_device *dev, void *data,
7a7a933edd6c3a Martin Krastev 2021-06-09  1008  				struct drm_file *file_priv)
7a7a933edd6c3a Martin Krastev 2021-06-09  1009  {
7a7a933edd6c3a Martin Krastev 2021-06-09  1010  	struct drm_vmw_mksstat_add_arg *arg =
7a7a933edd6c3a Martin Krastev 2021-06-09  1011  		(struct drm_vmw_mksstat_add_arg *) data;
7a7a933edd6c3a Martin Krastev 2021-06-09  1012  
7a7a933edd6c3a Martin Krastev 2021-06-09  1013  	struct vmw_private *const dev_priv = vmw_priv(dev);
7a7a933edd6c3a Martin Krastev 2021-06-09  1014  
7a7a933edd6c3a Martin Krastev 2021-06-09  1015  	struct page *page;
7a7a933edd6c3a Martin Krastev 2021-06-09  1016  	MKSGuestStatInstanceDescriptor *pdesc;
7a7a933edd6c3a Martin Krastev 2021-06-09  1017  	const size_t num_pages_stat = vmw_num_pages(arg->stat_len);
7a7a933edd6c3a Martin Krastev 2021-06-09  1018  	const size_t num_pages_info = vmw_num_pages(arg->info_len);
7a7a933edd6c3a Martin Krastev 2021-06-09  1019  	const size_t num_pages_strs = vmw_num_pages(arg->strs_len);
7a7a933edd6c3a Martin Krastev 2021-06-09  1020  	long desc_len;
7a7a933edd6c3a Martin Krastev 2021-06-09  1021  	long nr_pinned_stat;
7a7a933edd6c3a Martin Krastev 2021-06-09  1022  	long nr_pinned_info;
7a7a933edd6c3a Martin Krastev 2021-06-09  1023  	long nr_pinned_strs;
7a7a933edd6c3a Martin Krastev 2021-06-09 @1024  	struct page *pages_stat[ARRAY_SIZE(pdesc->statPPNs)];
7a7a933edd6c3a Martin Krastev 2021-06-09  1025  	struct page *pages_info[ARRAY_SIZE(pdesc->infoPPNs)];
7a7a933edd6c3a Martin Krastev 2021-06-09  1026  	struct page *pages_strs[ARRAY_SIZE(pdesc->strsPPNs)];
7a7a933edd6c3a Martin Krastev 2021-06-09  1027  	size_t i, slot;
7a7a933edd6c3a Martin Krastev 2021-06-09  1028  
7a7a933edd6c3a Martin Krastev 2021-06-09  1029  	arg->id = -1;
7a7a933edd6c3a Martin Krastev 2021-06-09  1030  
7a7a933edd6c3a Martin Krastev 2021-06-09  1031  	if (!arg->stat || !arg->info || !arg->strs)
7a7a933edd6c3a Martin Krastev 2021-06-09  1032  		return -EINVAL;
7a7a933edd6c3a Martin Krastev 2021-06-09  1033  
7a7a933edd6c3a Martin Krastev 2021-06-09  1034  	if (!arg->stat_len || !arg->info_len || !arg->strs_len)
7a7a933edd6c3a Martin Krastev 2021-06-09  1035  		return -EINVAL;
7a7a933edd6c3a Martin Krastev 2021-06-09  1036  
7a7a933edd6c3a Martin Krastev 2021-06-09  1037  	if (!arg->description)
7a7a933edd6c3a Martin Krastev 2021-06-09  1038  		return -EINVAL;
7a7a933edd6c3a Martin Krastev 2021-06-09  1039  
7a7a933edd6c3a Martin Krastev 2021-06-09  1040  	if (num_pages_stat > ARRAY_SIZE(pdesc->statPPNs) ||
7a7a933edd6c3a Martin Krastev 2021-06-09  1041  		num_pages_info > ARRAY_SIZE(pdesc->infoPPNs) ||
7a7a933edd6c3a Martin Krastev 2021-06-09  1042  		num_pages_strs > ARRAY_SIZE(pdesc->strsPPNs))
7a7a933edd6c3a Martin Krastev 2021-06-09  1043  		return -EINVAL;
7a7a933edd6c3a Martin Krastev 2021-06-09  1044  
7a7a933edd6c3a Martin Krastev 2021-06-09  1045  	/* Find an available slot in the mksGuestStats user array and reserve it */
7a7a933edd6c3a Martin Krastev 2021-06-09  1046  	for (slot = 0; slot < ARRAY_SIZE(dev_priv->mksstat_user_pids); ++slot)
7a7a933edd6c3a Martin Krastev 2021-06-09  1047  		if (!atomic_cmpxchg(&dev_priv->mksstat_user_pids[slot], 0, MKSSTAT_PID_RESERVED))
7a7a933edd6c3a Martin Krastev 2021-06-09  1048  			break;
7a7a933edd6c3a Martin Krastev 2021-06-09  1049  
7a7a933edd6c3a Martin Krastev 2021-06-09  1050  	if (slot == ARRAY_SIZE(dev_priv->mksstat_user_pids))
7a7a933edd6c3a Martin Krastev 2021-06-09  1051  		return -ENOSPC;
7a7a933edd6c3a Martin Krastev 2021-06-09  1052  
7a7a933edd6c3a Martin Krastev 2021-06-09  1053  	BUG_ON(dev_priv->mksstat_user_pages[slot]);
7a7a933edd6c3a Martin Krastev 2021-06-09  1054  
7a7a933edd6c3a Martin Krastev 2021-06-09  1055  	/* Allocate a page for the instance descriptor */
7a7a933edd6c3a Martin Krastev 2021-06-09  1056  	page = alloc_page(GFP_KERNEL | __GFP_ZERO);
7a7a933edd6c3a Martin Krastev 2021-06-09  1057  
7a7a933edd6c3a Martin Krastev 2021-06-09  1058  	if (!page) {
7a7a933edd6c3a Martin Krastev 2021-06-09  1059  		atomic_set(&dev_priv->mksstat_user_pids[slot], 0);
7a7a933edd6c3a Martin Krastev 2021-06-09  1060  		return -ENOMEM;
7a7a933edd6c3a Martin Krastev 2021-06-09  1061  	}
7a7a933edd6c3a Martin Krastev 2021-06-09  1062  
7a7a933edd6c3a Martin Krastev 2021-06-09  1063  	/* Set up the instance descriptor */
7a7a933edd6c3a Martin Krastev 2021-06-09  1064  	pdesc = page_address(page);
7a7a933edd6c3a Martin Krastev 2021-06-09  1065  
7a7a933edd6c3a Martin Krastev 2021-06-09  1066  	pdesc->reservedMBZ = 0;
7a7a933edd6c3a Martin Krastev 2021-06-09  1067  	pdesc->statStartVA = arg->stat;
7a7a933edd6c3a Martin Krastev 2021-06-09  1068  	pdesc->strsStartVA = arg->strs;
7a7a933edd6c3a Martin Krastev 2021-06-09  1069  	pdesc->statLength = arg->stat_len;
7a7a933edd6c3a Martin Krastev 2021-06-09  1070  	pdesc->infoLength = arg->info_len;
7a7a933edd6c3a Martin Krastev 2021-06-09  1071  	pdesc->strsLength = arg->strs_len;
7a7a933edd6c3a Martin Krastev 2021-06-09  1072  	desc_len = strncpy_from_user(pdesc->description, u64_to_user_ptr(arg->description),
7a7a933edd6c3a Martin Krastev 2021-06-09  1073  		ARRAY_SIZE(pdesc->description) - 1);
7a7a933edd6c3a Martin Krastev 2021-06-09  1074  
7a7a933edd6c3a Martin Krastev 2021-06-09  1075  	if (desc_len < 0) {
7a7a933edd6c3a Martin Krastev 2021-06-09  1076  		atomic_set(&dev_priv->mksstat_user_pids[slot], 0);
7a7a933edd6c3a Martin Krastev 2021-06-09  1077  		return -EFAULT;
7a7a933edd6c3a Martin Krastev 2021-06-09  1078  	}
7a7a933edd6c3a Martin Krastev 2021-06-09  1079  
7a7a933edd6c3a Martin Krastev 2021-06-09  1080  	reset_ppn_array(pdesc->statPPNs, ARRAY_SIZE(pdesc->statPPNs));
7a7a933edd6c3a Martin Krastev 2021-06-09  1081  	reset_ppn_array(pdesc->infoPPNs, ARRAY_SIZE(pdesc->infoPPNs));
7a7a933edd6c3a Martin Krastev 2021-06-09  1082  	reset_ppn_array(pdesc->strsPPNs, ARRAY_SIZE(pdesc->strsPPNs));
7a7a933edd6c3a Martin Krastev 2021-06-09  1083  
7a7a933edd6c3a Martin Krastev 2021-06-09  1084  	/* Pin mksGuestStat user pages and store those in the instance descriptor */
7a7a933edd6c3a Martin Krastev 2021-06-09  1085  	nr_pinned_stat = pin_user_pages(arg->stat, num_pages_stat, FOLL_LONGTERM, pages_stat, NULL);
7a7a933edd6c3a Martin Krastev 2021-06-09  1086  	if (num_pages_stat != nr_pinned_stat)
7a7a933edd6c3a Martin Krastev 2021-06-09  1087  		goto err_pin_stat;
7a7a933edd6c3a Martin Krastev 2021-06-09  1088  
7a7a933edd6c3a Martin Krastev 2021-06-09  1089  	for (i = 0; i < num_pages_stat; ++i)
7a7a933edd6c3a Martin Krastev 2021-06-09  1090  		pdesc->statPPNs[i] = page_to_pfn(pages_stat[i]);
7a7a933edd6c3a Martin Krastev 2021-06-09  1091  
7a7a933edd6c3a Martin Krastev 2021-06-09  1092  	nr_pinned_info = pin_user_pages(arg->info, num_pages_info, FOLL_LONGTERM, pages_info, NULL);
7a7a933edd6c3a Martin Krastev 2021-06-09  1093  	if (num_pages_info != nr_pinned_info)
7a7a933edd6c3a Martin Krastev 2021-06-09  1094  		goto err_pin_info;
7a7a933edd6c3a Martin Krastev 2021-06-09  1095  
7a7a933edd6c3a Martin Krastev 2021-06-09  1096  	for (i = 0; i < num_pages_info; ++i)
7a7a933edd6c3a Martin Krastev 2021-06-09  1097  		pdesc->infoPPNs[i] = page_to_pfn(pages_info[i]);
7a7a933edd6c3a Martin Krastev 2021-06-09  1098  
7a7a933edd6c3a Martin Krastev 2021-06-09  1099  	nr_pinned_strs = pin_user_pages(arg->strs, num_pages_strs, FOLL_LONGTERM, pages_strs, NULL);
7a7a933edd6c3a Martin Krastev 2021-06-09  1100  	if (num_pages_strs != nr_pinned_strs)
7a7a933edd6c3a Martin Krastev 2021-06-09  1101  		goto err_pin_strs;
7a7a933edd6c3a Martin Krastev 2021-06-09  1102  
7a7a933edd6c3a Martin Krastev 2021-06-09  1103  	for (i = 0; i < num_pages_strs; ++i)
7a7a933edd6c3a Martin Krastev 2021-06-09  1104  		pdesc->strsPPNs[i] = page_to_pfn(pages_strs[i]);
7a7a933edd6c3a Martin Krastev 2021-06-09  1105  
7a7a933edd6c3a Martin Krastev 2021-06-09  1106  	/* Send the descriptor to the host via a hypervisor call. The mksGuestStat
7a7a933edd6c3a Martin Krastev 2021-06-09  1107  	   pages will remain in use until the user requests a matching remove stats
7a7a933edd6c3a Martin Krastev 2021-06-09  1108  	   or a stats reset occurs. */
7a7a933edd6c3a Martin Krastev 2021-06-09  1109  	hypervisor_ppn_add((PPN64)page_to_pfn(page));
7a7a933edd6c3a Martin Krastev 2021-06-09  1110  
7a7a933edd6c3a Martin Krastev 2021-06-09  1111  	dev_priv->mksstat_user_pages[slot] = page;
7a7a933edd6c3a Martin Krastev 2021-06-09  1112  	atomic_set(&dev_priv->mksstat_user_pids[slot], current->pid);
7a7a933edd6c3a Martin Krastev 2021-06-09  1113  
7a7a933edd6c3a Martin Krastev 2021-06-09  1114  	arg->id = slot;
7a7a933edd6c3a Martin Krastev 2021-06-09  1115  
7a7a933edd6c3a Martin Krastev 2021-06-09  1116  	DRM_DEV_INFO(dev->dev, "pid=%d arg.description='%.*s' id=%lu\n", current->pid, (int)desc_len, pdesc->description, slot);
7a7a933edd6c3a Martin Krastev 2021-06-09  1117  
7a7a933edd6c3a Martin Krastev 2021-06-09  1118  	return 0;
7a7a933edd6c3a Martin Krastev 2021-06-09  1119  
7a7a933edd6c3a Martin Krastev 2021-06-09  1120  err_pin_strs:
7a7a933edd6c3a Martin Krastev 2021-06-09  1121  	if (nr_pinned_strs > 0)
7a7a933edd6c3a Martin Krastev 2021-06-09  1122  		unpin_user_pages(pages_strs, nr_pinned_strs);
7a7a933edd6c3a Martin Krastev 2021-06-09  1123  
7a7a933edd6c3a Martin Krastev 2021-06-09  1124  err_pin_info:
7a7a933edd6c3a Martin Krastev 2021-06-09  1125  	if (nr_pinned_info > 0)
7a7a933edd6c3a Martin Krastev 2021-06-09  1126  		unpin_user_pages(pages_info, nr_pinned_info);
7a7a933edd6c3a Martin Krastev 2021-06-09  1127  
7a7a933edd6c3a Martin Krastev 2021-06-09  1128  err_pin_stat:
7a7a933edd6c3a Martin Krastev 2021-06-09  1129  	if (nr_pinned_stat > 0)
7a7a933edd6c3a Martin Krastev 2021-06-09  1130  		unpin_user_pages(pages_stat, nr_pinned_stat);
7a7a933edd6c3a Martin Krastev 2021-06-09  1131  
7a7a933edd6c3a Martin Krastev 2021-06-09  1132  	atomic_set(&dev_priv->mksstat_user_pids[slot], 0);
7a7a933edd6c3a Martin Krastev 2021-06-09  1133  	__free_page(page);
7a7a933edd6c3a Martin Krastev 2021-06-09  1134  	return -ENOMEM;
7a7a933edd6c3a Martin Krastev 2021-06-09  1135  }
7a7a933edd6c3a Martin Krastev 2021-06-09  1136  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

                 reply	other threads:[~2022-01-22 21:51 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202201230446.MgsaPDeX-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.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.