All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/3] Drivers: hv: vmbus: vmbus_requestor data structure for VMBus hardening
@ 2020-11-04 15:40 Andrea Parri (Microsoft)
  2020-11-04 15:40 ` [PATCH v8 1/3] Drivers: hv: vmbus: Add " Andrea Parri (Microsoft)
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Andrea Parri (Microsoft) @ 2020-11-04 15:40 UTC (permalink / raw)
  To: linux-kernel
  Cc: K . Y . Srinivasan, Haiyang Zhang, Stephen Hemminger, Wei Liu,
	linux-hyperv, Andres Beltran, Michael Kelley, Saruhan Karademir,
	Juan Vazquez, Andrea Parri (Microsoft), James E . J . Bottomley,
	Martin K . Petersen, David S. Miller, Jakub Kicinski, linux-scsi,
	netdev

Hi all,

This is a resubmission of:

  https://lkml.kernel.org/r/20200907161920.71460-1-parri.andrea@gmail.com

based on 5.10-rc2.

  Andrea

Cc: James E.J. Bottomley <jejb@linux.ibm.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: linux-scsi@vger.kernel.org
Cc: netdev@vger.kernel.org

Andres Beltran (3):
  Drivers: hv: vmbus: Add vmbus_requestor data structure for VMBus
    hardening
  scsi: storvsc: Use vmbus_requestor to generate transaction IDs for
    VMBus hardening
  hv_netvsc: Use vmbus_requestor to generate transaction IDs for VMBus
    hardening

 drivers/hv/channel.c              | 174 ++++++++++++++++++++++++++++--
 drivers/hv/hyperv_vmbus.h         |   3 +-
 drivers/hv/ring_buffer.c          |  28 ++++-
 drivers/net/hyperv/hyperv_net.h   |  13 +++
 drivers/net/hyperv/netvsc.c       |  22 ++--
 drivers/net/hyperv/rndis_filter.c |   1 +
 drivers/scsi/storvsc_drv.c        |  26 ++++-
 include/linux/hyperv.h            |  23 ++++
 8 files changed, 272 insertions(+), 18 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread
* Re: [PATCH v8 1/3] Drivers: hv: vmbus: Add vmbus_requestor data structure for VMBus hardening
@ 2020-11-05  7:03 kernel test robot
  0 siblings, 0 replies; 11+ messages in thread
From: kernel test robot @ 2020-11-05  7:03 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20201104154027.319432-2-parri.andrea@gmail.com>
References: <20201104154027.319432-2-parri.andrea@gmail.com>
TO: "Andrea Parri (Microsoft)" <parri.andrea@gmail.com>

Hi "Andrea,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on scsi/for-next linus/master v5.10-rc2 next-20201104]
[cannot apply to linux/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Andrea-Parri-Microsoft/Drivers-hv-vmbus-vmbus_requestor-data-structure-for-VMBus-hardening/20201104-234406
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
:::::: branch date: 15 hours ago
:::::: commit date: 15 hours ago
config: i386-randconfig-m031-20201104 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
drivers/hv/ring_buffer.c:349 hv_ringbuffer_write() warn: inconsistent returns 'outring_info->ring_lock'.
drivers/hv/ring_buffer.c:349 hv_ringbuffer_write() warn: inconsistent returns 'flags'.

vim +349 drivers/hv/ring_buffer.c

3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  248  
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  249  /* Write to the ring buffer. */
1f6ee4e7d83586c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-11-06  250  int hv_ringbuffer_write(struct vmbus_channel *channel,
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  251  			const struct kvec *kv_list, u32 kv_count,
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  252  			u64 requestid)
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  253  {
2c616a8b6bd3b51 drivers/hv/ring_buffer.c         Stephen Hemminger  2017-03-04  254  	int i;
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  255  	u32 bytes_avail_towrite;
2c616a8b6bd3b51 drivers/hv/ring_buffer.c         Stephen Hemminger  2017-03-04  256  	u32 totalbytes_towrite = sizeof(u64);
66a605438146923 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  257  	u32 next_write_location;
98fa8cf4bcc79cb drivers/hv/ring_buffer.c         K. Y. Srinivasan   2012-12-01  258  	u32 old_write;
2c616a8b6bd3b51 drivers/hv/ring_buffer.c         Stephen Hemminger  2017-03-04  259  	u64 prev_indices;
2c616a8b6bd3b51 drivers/hv/ring_buffer.c         Stephen Hemminger  2017-03-04  260  	unsigned long flags;
1f6ee4e7d83586c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-11-06  261  	struct hv_ring_buffer_info *outring_info = &channel->outbound;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  262  	struct vmpacket_descriptor *desc = kv_list[0].iov_base;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  263  	u64 rqst_id = VMBUS_NO_RQSTOR;
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  264  
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  265  	if (channel->rescind)
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  266  		return -ENODEV;
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  267  
011a7c3cc3aa60c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2014-02-01  268  	for (i = 0; i < kv_count; i++)
011a7c3cc3aa60c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2014-02-01  269  		totalbytes_towrite += kv_list[i].iov_len;
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  270  
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  271  	spin_lock_irqsave(&outring_info->ring_lock, flags);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  272  
a6341f000024cdf drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-04-02  273  	bytes_avail_towrite = hv_get_bytes_to_write(outring_info);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  274  
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  275  	/*
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  276  	 * If there is only room for the packet, assume it is full.
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  277  	 * Otherwise, the next time around, we think the ring buffer
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  278  	 * is empty since the read index == write index.
822f18d4d3e9d4e drivers/hv/ring_buffer.c         Vitaly Kuznetsov   2015-12-14  279  	 */
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  280  	if (bytes_avail_towrite <= totalbytes_towrite) {
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  281  		++channel->out_full_total;
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  282  
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  283  		if (!channel->out_full_flag) {
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  284  			++channel->out_full_first;
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  285  			channel->out_full_flag = true;
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  286  		}
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  287  
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  288  		spin_unlock_irqrestore(&outring_info->ring_lock, flags);
d2598f017f02bbc drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-08-25  289  		return -EAGAIN;
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  290  	}
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  291  
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  292  	channel->out_full_flag = false;
396ae57ef1ef978 drivers/hv/ring_buffer.c         Kimberly Brown     2019-02-04  293  
454f18a963cf651 drivers/staging/hv/RingBuffer.c  Bill Pemberton     2009-07-27  294  	/* Write to the ring buffer */
2b8a912ef2713a7 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  295  	next_write_location = hv_get_next_write_location(outring_info);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  296  
98fa8cf4bcc79cb drivers/hv/ring_buffer.c         K. Y. Srinivasan   2012-12-01  297  	old_write = next_write_location;
98fa8cf4bcc79cb drivers/hv/ring_buffer.c         K. Y. Srinivasan   2012-12-01  298  
011a7c3cc3aa60c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2014-02-01  299  	for (i = 0; i < kv_count; i++) {
2b8a912ef2713a7 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  300  		next_write_location = hv_copyto_ringbuffer(outring_info,
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  301  						     next_write_location,
011a7c3cc3aa60c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2014-02-01  302  						     kv_list[i].iov_base,
011a7c3cc3aa60c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2014-02-01  303  						     kv_list[i].iov_len);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  304  	}
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  305  
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  306  	/*
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  307  	 * Allocate the request ID after the data has been copied into the
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  308  	 * ring buffer.  Once this request ID is allocated, the completion
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  309  	 * path could find the data and free it.
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  310  	 */
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  311  
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  312  	if (desc->flags == VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED) {
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  313  		rqst_id = vmbus_next_request_id(&channel->requestor, requestid);
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  314  		if (rqst_id == VMBUS_RQST_ERROR) {
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  315  			pr_err("No request id available\n");
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  316  			return -EAGAIN;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  317  		}
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  318  	}
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  319  	desc = hv_get_ring_buffer(outring_info) + old_write;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  320  	desc->trans_id = (rqst_id == VMBUS_NO_RQSTOR) ? requestid : rqst_id;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  321  
454f18a963cf651 drivers/staging/hv/RingBuffer.c  Bill Pemberton     2009-07-27  322  	/* Set previous packet start */
2b8a912ef2713a7 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  323  	prev_indices = hv_get_ring_bufferindices(outring_info);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  324  
2b8a912ef2713a7 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  325  	next_write_location = hv_copyto_ringbuffer(outring_info,
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  326  					     next_write_location,
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  327  					     &prev_indices,
59471438ccbebaf drivers/staging/hv/RingBuffer.c  Greg Kroah-Hartman 2009-07-14  328  					     sizeof(u64));
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  329  
98fa8cf4bcc79cb drivers/hv/ring_buffer.c         K. Y. Srinivasan   2012-12-01  330  	/* Issue a full memory barrier before updating the write index */
dcd0eeca4454d5c drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-04-02  331  	virt_mb();
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  332  
454f18a963cf651 drivers/staging/hv/RingBuffer.c  Bill Pemberton     2009-07-27  333  	/* Now, update the write location */
2b8a912ef2713a7 drivers/staging/hv/ring_buffer.c K. Y. Srinivasan   2011-05-10  334  	hv_set_next_write_location(outring_info, next_write_location);
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  335  
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  336  
fc8c72ebfa7547c drivers/staging/hv/ring_buffer.c Haiyang Zhang      2010-11-08  337  	spin_unlock_irqrestore(&outring_info->ring_lock, flags);
98fa8cf4bcc79cb drivers/hv/ring_buffer.c         K. Y. Srinivasan   2012-12-01  338  
b103a56f80878b4 drivers/hv/ring_buffer.c         Stephen Hemminger  2017-02-05  339  	hv_signal_on_write(old_write, channel);
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  340  
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  341  	if (channel->rescind) {
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  342  		if (rqst_id != VMBUS_NO_RQSTOR) {
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  343  			/* Reclaim request ID to avoid leak of IDs */
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  344  			vmbus_request_addr(&channel->requestor, rqst_id);
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  345  		}
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  346  		return -ENODEV;
4d6a4de24f39114 drivers/hv/ring_buffer.c         Andres Beltran     2020-11-04  347  	}
e7e97dd8b77ee73 drivers/hv/ring_buffer.c         K. Y. Srinivasan   2016-12-07  348  
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13 @349  	return 0;
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  350  }
3e7ee4902fe6996 drivers/staging/hv/RingBuffer.c  Hank Janssen       2009-07-13  351  

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

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-11-05 12:51 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-11-04 15:40 [PATCH v8 0/3] Drivers: hv: vmbus: vmbus_requestor data structure for VMBus hardening Andrea Parri (Microsoft)
2020-11-04 15:40 ` [PATCH v8 1/3] Drivers: hv: vmbus: Add " Andrea Parri (Microsoft)
2020-11-05 12:24   ` Dan Carpenter
2020-11-05 12:24     ` Dan Carpenter
2020-11-05 12:51   ` Andrea Parri
2020-11-04 15:40 ` [PATCH v8 2/3] scsi: storvsc: Use vmbus_requestor to generate transaction IDs " Andrea Parri (Microsoft)
2020-11-04 15:40 ` [PATCH v8 3/3] hv_netvsc: " Andrea Parri (Microsoft)
2020-11-04 21:43   ` Jakub Kicinski
2020-11-04 21:45     ` Jakub Kicinski
2020-11-05  3:32       ` Andrea Parri
  -- strict thread matches above, loose matches on Subject: below --
2020-11-05  7:03 [PATCH v8 1/3] Drivers: hv: vmbus: Add vmbus_requestor data structure " kernel test robot

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.