All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v8 1/3] Drivers: hv: vmbus: Add vmbus_requestor data structure for VMBus hardening
Date: Thu, 05 Nov 2020 15:24:20 +0300	[thread overview]
Message-ID: <20201105122420.GB29398@kadam> (raw)
In-Reply-To: <20201104154027.319432-2-parri.andrea@gmail.com>

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

Hi Andrea,

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
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

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;

Need to call spin_unlock_irqrestore(&outring_info->ring_lock, flags);
before returning.

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  }

---
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 --]

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v8 1/3] Drivers: hv: vmbus: Add vmbus_requestor data structure for VMBus hardening
Date: Thu, 05 Nov 2020 15:24:20 +0300	[thread overview]
Message-ID: <20201105122420.GB29398@kadam> (raw)
In-Reply-To: <20201104154027.319432-2-parri.andrea@gmail.com>

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

Hi Andrea,

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
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

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;

Need to call spin_unlock_irqrestore(&outring_info->ring_lock, flags);
before returning.

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  }

---
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 --]

  reply	other threads:[~2020-11-05 12:24 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

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=20201105122420.GB29398@kadam \
    --to=dan.carpenter@oracle.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.