* [PATCH 0/5] Drivers: hv: Miscellaneous fixes @ 2018-10-17 3:12 kys 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys 0 siblings, 1 reply; 21+ messages in thread From: kys @ 2018-10-17 3:12 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: K. Y. Srinivasan From: "K. Y. Srinivasan" <kys@microsoft.com> Miscellaneous fixes. Dexuan Cui (3): Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up Drivers: hv: kvp: Use %u to print U32 Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 Haiyang Zhang (1): hv_utils: update name in struct hv_driver util_drv K. Y. Srinivasan (1): Drivers: hv: vmbus: Get rid of unnecessary state in hv_context drivers/hv/hv.c | 10 +++------- drivers/hv/hv_kvp.c | 28 +++++++++++++++++++++++----- drivers/hv/hv_util.c | 2 +- drivers/hv/hyperv_vmbus.h | 2 -- tools/hv/hv_kvp_daemon.c | 2 +- 5 files changed, 28 insertions(+), 16 deletions(-) -- 2.18.0 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context 2018-10-17 3:12 [PATCH 0/5] Drivers: hv: Miscellaneous fixes kys @ 2018-10-17 3:14 ` kys 2018-10-17 3:14 ` [PATCH 2/5] hv_utils: update name in struct hv_driver util_drv kys ` (4 more replies) 0 siblings, 5 replies; 21+ messages in thread From: kys @ 2018-10-17 3:14 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: K. Y. Srinivasan From: "K. Y. Srinivasan" <kys@microsoft.com> Currently we are replicating state in struct hv_context that is unnecessary - this state can be retrieved from the hypervisor. Furthermore, this is a per-cpu state that is being maintained as a global state in struct hv_context. Get rid of this state in struct hv_context. Reply-To: kys@microsoft.com Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> --- drivers/hv/hv.c | 10 +++------- drivers/hv/hyperv_vmbus.h | 2 -- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 332d7c34be5c..166c2501de17 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -33,9 +33,7 @@ #include "hyperv_vmbus.h" /* The one and only */ -struct hv_context hv_context = { - .synic_initialized = false, -}; +struct hv_context hv_context; /* * If false, we're using the old mechanism for stimer0 interrupts @@ -326,8 +324,6 @@ int hv_synic_init(unsigned int cpu) hv_set_synic_state(sctrl.as_uint64); - hv_context.synic_initialized = true; - /* * Register the per-cpu clockevent source. */ @@ -373,7 +369,8 @@ int hv_synic_cleanup(unsigned int cpu) bool channel_found = false; unsigned long flags; - if (!hv_context.synic_initialized) + hv_get_synic_state(sctrl.as_uint64); + if (sctrl.enable != 1) return -EFAULT; /* @@ -435,7 +432,6 @@ int hv_synic_cleanup(unsigned int cpu) hv_set_siefp(siefp.as_uint64); /* Disable the global synic bit */ - hv_get_synic_state(sctrl.as_uint64); sctrl.enable = 0; hv_set_synic_state(sctrl.as_uint64); diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index 72eaba3d50fc..f17c06a5e74b 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -230,8 +230,6 @@ struct hv_context { void *tsc_page; - bool synic_initialized; - struct hv_per_cpu_context __percpu *cpu_context; /* -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 2/5] hv_utils: update name in struct hv_driver util_drv 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys @ 2018-10-17 3:14 ` kys 2018-10-17 3:14 ` [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up kys ` (3 subsequent siblings) 4 siblings, 0 replies; 21+ messages in thread From: kys @ 2018-10-17 3:14 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: Haiyang Zhang, K . Y . Srinivasan From: Haiyang Zhang <haiyangz@microsoft.com> The correct module name is hv_utils. This patch corrects the name in struct hv_driver util_drv. Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> --- drivers/hv/hv_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c index 423205077bf6..f10eeb120c8b 100644 --- a/drivers/hv/hv_util.c +++ b/drivers/hv/hv_util.c @@ -483,7 +483,7 @@ MODULE_DEVICE_TABLE(vmbus, id_table); /* The one and only one */ static struct hv_driver util_drv = { - .name = "hv_util", + .name = "hv_utils", .id_table = id_table, .probe = util_probe, .remove = util_remove, -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys 2018-10-17 3:14 ` [PATCH 2/5] hv_utils: update name in struct hv_driver util_drv kys @ 2018-10-17 3:14 ` kys 2018-10-17 5:07 ` Greg KH 2018-10-17 3:14 ` [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 kys ` (2 subsequent siblings) 4 siblings, 1 reply; 21+ messages in thread From: kys @ 2018-10-17 3:14 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: Dexuan Cui, K . Y . Srinivasan, Haiyang Zhang, Stable From: Dexuan Cui <decui@microsoft.com> In kvp_send_key(), we do need call process_ib_ipinfo() if message->kvp_hdr.operation is KVP_OP_GET_IP_INFO, because it turns out the userland hv_kvp_daemon needs the info of operation, adapter_id and addr_family. With the incorrect fc62c3b1977d, the host can't get the VM's IP via KVP. And, fc62c3b1977d added a "break;", but actually forgot to initialize the key_size/value in the case of KVP_OP_SET, so the default key_size of 0 is passed to the kvp daemon, and the pool files /var/lib/hyperv/.kvp_pool_* can't be updated. This patch effectively rolls back the previous fc62c3b1977d, and correctly fixes the "this statement may fall through" warnings. This patch is tested on WS 2012 R2 and 2016. Fixes: fc62c3b1977d ("Drivers: hv: kvp: Fix two "this statement may fall through" warnings") Signed-off-by: Dexuan Cui <decui@microsoft.com> Cc: K. Y. Srinivasan <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: <Stable@vger.kernel.org> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> --- drivers/hv/hv_kvp.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c index a7513a8a8e37..9fbb15c62c6c 100644 --- a/drivers/hv/hv_kvp.c +++ b/drivers/hv/hv_kvp.c @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void *out_msg, int op) out->body.kvp_ip_val.dhcp_enabled = in->kvp_ip_val.dhcp_enabled; + __attribute__ ((fallthrough)); + + case KVP_OP_GET_IP_INFO: utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, MAX_ADAPTER_ID_SIZE, UTF16_LITTLE_ENDIAN, @@ -405,7 +408,11 @@ kvp_send_key(struct work_struct *dummy) process_ib_ipinfo(in_msg, message, KVP_OP_SET_IP_INFO); break; case KVP_OP_GET_IP_INFO: - /* We only need to pass on message->kvp_hdr.operation. */ + /* + * We only need to pass on the info of operation, adapter_id + * and addr_family to the userland kvp daemon. + */ + process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); break; case KVP_OP_SET: switch (in_msg->body.kvp_set.data.value_type) { @@ -446,9 +453,9 @@ kvp_send_key(struct work_struct *dummy) } - break; - - case KVP_OP_GET: + /* + * The key is always a string - utf16 encoding. + */ message->body.kvp_set.data.key_size = utf16s_to_utf8s( (wchar_t *)in_msg->body.kvp_set.data.key, @@ -456,6 +463,17 @@ kvp_send_key(struct work_struct *dummy) UTF16_LITTLE_ENDIAN, message->body.kvp_set.data.key, HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; + + break; + + case KVP_OP_GET: + message->body.kvp_get.data.key_size = + utf16s_to_utf8s( + (wchar_t *)in_msg->body.kvp_get.data.key, + in_msg->body.kvp_get.data.key_size, + UTF16_LITTLE_ENDIAN, + message->body.kvp_get.data.key, + HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; break; case KVP_OP_DELETE: -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 3:14 ` [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up kys @ 2018-10-17 5:07 ` Greg KH 2018-10-17 5:11 ` Gustavo A. R. Silva ` (3 more replies) 0 siblings, 4 replies; 21+ messages in thread From: Greg KH @ 2018-10-17 5:07 UTC (permalink / raw) To: kys Cc: linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets, Haiyang Zhang, Stable On Wed, Oct 17, 2018 at 03:14:04AM +0000, kys@linuxonhyperv.com wrote: > From: Dexuan Cui <decui@microsoft.com> > > In kvp_send_key(), we do need call process_ib_ipinfo() if > message->kvp_hdr.operation is KVP_OP_GET_IP_INFO, because it turns out > the userland hv_kvp_daemon needs the info of operation, adapter_id and > addr_family. With the incorrect fc62c3b1977d, the host can't get the > VM's IP via KVP. > > And, fc62c3b1977d added a "break;", but actually forgot to initialize > the key_size/value in the case of KVP_OP_SET, so the default key_size of > 0 is passed to the kvp daemon, and the pool files > /var/lib/hyperv/.kvp_pool_* can't be updated. > > This patch effectively rolls back the previous fc62c3b1977d, and > correctly fixes the "this statement may fall through" warnings. > > This patch is tested on WS 2012 R2 and 2016. > > Fixes: fc62c3b1977d ("Drivers: hv: kvp: Fix two "this statement may fall through" warnings") > Signed-off-by: Dexuan Cui <decui@microsoft.com> > Cc: K. Y. Srinivasan <kys@microsoft.com> > Cc: Haiyang Zhang <haiyangz@microsoft.com> > Cc: Stephen Hemminger <sthemmin@microsoft.com> > Cc: <Stable@vger.kernel.org> > Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> > --- > drivers/hv/hv_kvp.c | 26 ++++++++++++++++++++++---- > 1 file changed, 22 insertions(+), 4 deletions(-) > > diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c > index a7513a8a8e37..9fbb15c62c6c 100644 > --- a/drivers/hv/hv_kvp.c > +++ b/drivers/hv/hv_kvp.c > @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void *out_msg, int op) > > out->body.kvp_ip_val.dhcp_enabled = in->kvp_ip_val.dhcp_enabled; > > + __attribute__ ((fallthrough)); The comment should be sufficient for this, right? I haven't seen many uses of this attribute before, how common is it? > + > + case KVP_OP_GET_IP_INFO: > utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, > MAX_ADAPTER_ID_SIZE, > UTF16_LITTLE_ENDIAN, > @@ -405,7 +408,11 @@ kvp_send_key(struct work_struct *dummy) > process_ib_ipinfo(in_msg, message, KVP_OP_SET_IP_INFO); > break; > case KVP_OP_GET_IP_INFO: > - /* We only need to pass on message->kvp_hdr.operation. */ > + /* > + * We only need to pass on the info of operation, adapter_id > + * and addr_family to the userland kvp daemon. > + */ > + process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); > break; > case KVP_OP_SET: > switch (in_msg->body.kvp_set.data.value_type) { > @@ -446,9 +453,9 @@ kvp_send_key(struct work_struct *dummy) > > } > > - break; > - > - case KVP_OP_GET: > + /* > + * The key is always a string - utf16 encoding. > + */ > message->body.kvp_set.data.key_size = > utf16s_to_utf8s( > (wchar_t *)in_msg->body.kvp_set.data.key, > @@ -456,6 +463,17 @@ kvp_send_key(struct work_struct *dummy) > UTF16_LITTLE_ENDIAN, > message->body.kvp_set.data.key, > HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; > + > + break; > + > + case KVP_OP_GET: > + message->body.kvp_get.data.key_size = > + utf16s_to_utf8s( > + (wchar_t *)in_msg->body.kvp_get.data.key, > + in_msg->body.kvp_get.data.key_size, > + UTF16_LITTLE_ENDIAN, > + message->body.kvp_get.data.key, > + HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; Worst indentation ever :( Yeah, I know it follows the others above it, but you should reconsider it in the future... thanks, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 5:07 ` Greg KH @ 2018-10-17 5:11 ` Gustavo A. R. Silva 2018-10-17 6:02 ` KY Srinivasan ` (2 subsequent siblings) 3 siblings, 0 replies; 21+ messages in thread From: Gustavo A. R. Silva @ 2018-10-17 5:11 UTC (permalink / raw) To: Greg KH, kys Cc: linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets, Haiyang Zhang, Stable On 10/17/18 7:07 AM, Greg KH wrote: > On Wed, Oct 17, 2018 at 03:14:04AM +0000, kys@linuxonhyperv.com wrote: >> From: Dexuan Cui <decui@microsoft.com> >> >> In kvp_send_key(), we do need call process_ib_ipinfo() if >> message->kvp_hdr.operation is KVP_OP_GET_IP_INFO, because it turns out >> the userland hv_kvp_daemon needs the info of operation, adapter_id and >> addr_family. With the incorrect fc62c3b1977d, the host can't get the >> VM's IP via KVP. >> >> And, fc62c3b1977d added a "break;", but actually forgot to initialize >> the key_size/value in the case of KVP_OP_SET, so the default key_size of >> 0 is passed to the kvp daemon, and the pool files >> /var/lib/hyperv/.kvp_pool_* can't be updated. >> >> This patch effectively rolls back the previous fc62c3b1977d, and >> correctly fixes the "this statement may fall through" warnings. >> >> This patch is tested on WS 2012 R2 and 2016. >> >> Fixes: fc62c3b1977d ("Drivers: hv: kvp: Fix two "this statement may fall through" warnings") >> Signed-off-by: Dexuan Cui <decui@microsoft.com> >> Cc: K. Y. Srinivasan <kys@microsoft.com> >> Cc: Haiyang Zhang <haiyangz@microsoft.com> >> Cc: Stephen Hemminger <sthemmin@microsoft.com> >> Cc: <Stable@vger.kernel.org> >> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> >> --- >> drivers/hv/hv_kvp.c | 26 ++++++++++++++++++++++---- >> 1 file changed, 22 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c >> index a7513a8a8e37..9fbb15c62c6c 100644 >> --- a/drivers/hv/hv_kvp.c >> +++ b/drivers/hv/hv_kvp.c >> @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void *out_msg, int op) >> >> out->body.kvp_ip_val.dhcp_enabled = in->kvp_ip_val.dhcp_enabled; >> >> + __attribute__ ((fallthrough)); > > The comment should be sufficient for this, right? I haven't seen many > uses of this attribute before, how common is it? > It's not common at all. Dexuan, please use a comment instead: /* fall through */ Thanks -- Gustavo > >> + >> + case KVP_OP_GET_IP_INFO: >> utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, >> MAX_ADAPTER_ID_SIZE, >> UTF16_LITTLE_ENDIAN, >> @@ -405,7 +408,11 @@ kvp_send_key(struct work_struct *dummy) >> process_ib_ipinfo(in_msg, message, KVP_OP_SET_IP_INFO); >> break; >> case KVP_OP_GET_IP_INFO: >> - /* We only need to pass on message->kvp_hdr.operation. */ >> + /* >> + * We only need to pass on the info of operation, adapter_id >> + * and addr_family to the userland kvp daemon. >> + */ >> + process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); >> break; >> case KVP_OP_SET: >> switch (in_msg->body.kvp_set.data.value_type) { >> @@ -446,9 +453,9 @@ kvp_send_key(struct work_struct *dummy) >> >> } >> >> - break; >> - >> - case KVP_OP_GET: >> + /* >> + * The key is always a string - utf16 encoding. >> + */ >> message->body.kvp_set.data.key_size = >> utf16s_to_utf8s( >> (wchar_t *)in_msg->body.kvp_set.data.key, >> @@ -456,6 +463,17 @@ kvp_send_key(struct work_struct *dummy) >> UTF16_LITTLE_ENDIAN, >> message->body.kvp_set.data.key, >> HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; >> + >> + break; >> + >> + case KVP_OP_GET: >> + message->body.kvp_get.data.key_size = >> + utf16s_to_utf8s( >> + (wchar_t *)in_msg->body.kvp_get.data.key, >> + in_msg->body.kvp_get.data.key_size, >> + UTF16_LITTLE_ENDIAN, >> + message->body.kvp_get.data.key, >> + HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; > > Worst indentation ever :( > > Yeah, I know it follows the others above it, but you should reconsider > it in the future... > > thanks, > > greg k-h > ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 5:07 ` Greg KH 2018-10-17 5:11 ` Gustavo A. R. Silva @ 2018-10-17 6:02 ` KY Srinivasan 2018-10-17 17:56 ` Dexuan Cui 2018-10-17 6:22 ` Dan Carpenter 2018-10-17 18:01 ` Dexuan Cui 3 siblings, 1 reply; 21+ messages in thread From: KY Srinivasan @ 2018-10-17 6:02 UTC (permalink / raw) To: Greg KH Cc: linux-kernel, devel, olaf, apw, jasowang, Stephen Hemminger, Michael Kelley (EOSG), vkuznets, Haiyang Zhang, Stable > -----Original Message----- > From: Greg KH <gregkh@linuxfoundation.org> > Sent: Tuesday, October 16, 2018 10:07 PM > To: KY Srinivasan <kys@microsoft.com> > Cc: linux-kernel@vger.kernel.org; devel@linuxdriverproject.org; > olaf@aepfle.de; apw@canonical.com; jasowang@redhat.com; Stephen > Hemminger <sthemmin@microsoft.com>; Michael Kelley (EOSG) > <Michael.H.Kelley@microsoft.com>; vkuznets <vkuznets@redhat.com>; > Haiyang Zhang <haiyangz@microsoft.com>; Stable@vger.kernel.org > Subject: Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by > incorrect clean-up > > On Wed, Oct 17, 2018 at 03:14:04AM +0000, kys@linuxonhyperv.com wrote: > > From: Dexuan Cui <decui@microsoft.com> > > > > In kvp_send_key(), we do need call process_ib_ipinfo() if > > message->kvp_hdr.operation is KVP_OP_GET_IP_INFO, because it turns > out > > the userland hv_kvp_daemon needs the info of operation, adapter_id and > > addr_family. With the incorrect fc62c3b1977d, the host can't get the > > VM's IP via KVP. > > > > And, fc62c3b1977d added a "break;", but actually forgot to initialize > > the key_size/value in the case of KVP_OP_SET, so the default key_size of > > 0 is passed to the kvp daemon, and the pool files > > /var/lib/hyperv/.kvp_pool_* can't be updated. > > > > This patch effectively rolls back the previous fc62c3b1977d, and > > correctly fixes the "this statement may fall through" warnings. > > > > This patch is tested on WS 2012 R2 and 2016. > > > > Fixes: fc62c3b1977d ("Drivers: hv: kvp: Fix two "this statement may fall > through" warnings") > > Signed-off-by: Dexuan Cui <decui@microsoft.com> > > Cc: K. Y. Srinivasan <kys@microsoft.com> > > Cc: Haiyang Zhang <haiyangz@microsoft.com> > > Cc: Stephen Hemminger <sthemmin@microsoft.com> > > Cc: <Stable@vger.kernel.org> > > Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> > > --- > > drivers/hv/hv_kvp.c | 26 ++++++++++++++++++++++---- > > 1 file changed, 22 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c > > index a7513a8a8e37..9fbb15c62c6c 100644 > > --- a/drivers/hv/hv_kvp.c > > +++ b/drivers/hv/hv_kvp.c > > @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void > *out_msg, int op) > > > > out->body.kvp_ip_val.dhcp_enabled = in- > >kvp_ip_val.dhcp_enabled; > > > > + __attribute__ ((fallthrough)); > > The comment should be sufficient for this, right? I haven't seen many > uses of this attribute before, how common is it? Yes; a common should be sufficient. > > > > + > > + case KVP_OP_GET_IP_INFO: > > utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, > > MAX_ADAPTER_ID_SIZE, > > UTF16_LITTLE_ENDIAN, > > @@ -405,7 +408,11 @@ kvp_send_key(struct work_struct *dummy) > > process_ib_ipinfo(in_msg, message, KVP_OP_SET_IP_INFO); > > break; > > case KVP_OP_GET_IP_INFO: > > - /* We only need to pass on message->kvp_hdr.operation. > */ > > + /* > > + * We only need to pass on the info of operation, adapter_id > > + * and addr_family to the userland kvp daemon. > > + */ > > + process_ib_ipinfo(in_msg, message, > KVP_OP_GET_IP_INFO); > > break; > > case KVP_OP_SET: > > switch (in_msg->body.kvp_set.data.value_type) { > > @@ -446,9 +453,9 @@ kvp_send_key(struct work_struct *dummy) > > > > } > > > > - break; > > - > > - case KVP_OP_GET: > > + /* > > + * The key is always a string - utf16 encoding. > > + */ > > message->body.kvp_set.data.key_size = > > utf16s_to_utf8s( > > (wchar_t *)in_msg->body.kvp_set.data.key, > > @@ -456,6 +463,17 @@ kvp_send_key(struct work_struct *dummy) > > UTF16_LITTLE_ENDIAN, > > message->body.kvp_set.data.key, > > HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; > > + > > + break; > > + > > + case KVP_OP_GET: > > + message->body.kvp_get.data.key_size = > > + utf16s_to_utf8s( > > + (wchar_t *)in_msg->body.kvp_get.data.key, > > + in_msg->body.kvp_get.data.key_size, > > + UTF16_LITTLE_ENDIAN, > > + message->body.kvp_get.data.key, > > + HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; > > Worst indentation ever :( > > Yeah, I know it follows the others above it, but you should reconsider > it in the future... > > thanks, > > greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 6:02 ` KY Srinivasan @ 2018-10-17 17:56 ` Dexuan Cui 0 siblings, 0 replies; 21+ messages in thread From: Dexuan Cui @ 2018-10-17 17:56 UTC (permalink / raw) To: KY Srinivasan, Greg KH Cc: olaf, Stephen Hemminger, jasowang, linux-kernel, Stable, Michael Kelley, apw, devel, vkuznets, Haiyang Zhang, Gustavo A. R. Silva, Dan Carpenter > From: devel <driverdev-devel-bounces@linuxdriverproject.org> On Behalf Of > KY Srinivasan > Sent: Tuesday, October 16, 2018 23:02 > > > --- a/drivers/hv/hv_kvp.c > > > +++ b/drivers/hv/hv_kvp.c > > > @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void > > *out_msg, int op) > > > > > > out->body.kvp_ip_val.dhcp_enabled = in- > > >kvp_ip_val.dhcp_enabled; > > > > > > + __attribute__ ((fallthrough)); > > > > The comment should be sufficient for this, right? I haven't seen many > > uses of this attribute before, how common is it? > > Yes; a common should be sufficient. You all are right. Right now, I realized the gcc warning can also be suppressed by a simple line of comment: /* fallthrough */ It looks gcc treats this comment specially. If I add something more in the comment, like /* add fallthrough */ , the warning can not be suppressed. :-) I'll do a new version for KY. Thank you all! -- Dexuan ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 5:07 ` Greg KH 2018-10-17 5:11 ` Gustavo A. R. Silva 2018-10-17 6:02 ` KY Srinivasan @ 2018-10-17 6:22 ` Dan Carpenter 2018-10-20 14:42 ` Miguel Ojeda 2018-10-17 18:01 ` Dexuan Cui 3 siblings, 1 reply; 21+ messages in thread From: Dan Carpenter @ 2018-10-17 6:22 UTC (permalink / raw) To: Greg KH Cc: kys, olaf, sthemmin, jasowang, linux-kernel, Stable, Michael.H.Kelley, apw, devel, vkuznets, Haiyang Zhang On Wed, Oct 17, 2018 at 07:07:05AM +0200, Greg KH wrote: > On Wed, Oct 17, 2018 at 03:14:04AM +0000, kys@linuxonhyperv.com wrote: > > From: Dexuan Cui <decui@microsoft.com> > > > > In kvp_send_key(), we do need call process_ib_ipinfo() if > > message->kvp_hdr.operation is KVP_OP_GET_IP_INFO, because it turns out > > the userland hv_kvp_daemon needs the info of operation, adapter_id and > > addr_family. With the incorrect fc62c3b1977d, the host can't get the > > VM's IP via KVP. > > > > And, fc62c3b1977d added a "break;", but actually forgot to initialize > > the key_size/value in the case of KVP_OP_SET, so the default key_size of > > 0 is passed to the kvp daemon, and the pool files > > /var/lib/hyperv/.kvp_pool_* can't be updated. > > > > This patch effectively rolls back the previous fc62c3b1977d, and > > correctly fixes the "this statement may fall through" warnings. > > > > This patch is tested on WS 2012 R2 and 2016. > > > > Fixes: fc62c3b1977d ("Drivers: hv: kvp: Fix two "this statement may fall through" warnings") > > Signed-off-by: Dexuan Cui <decui@microsoft.com> > > Cc: K. Y. Srinivasan <kys@microsoft.com> > > Cc: Haiyang Zhang <haiyangz@microsoft.com> > > Cc: Stephen Hemminger <sthemmin@microsoft.com> > > Cc: <Stable@vger.kernel.org> > > Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> > > --- > > drivers/hv/hv_kvp.c | 26 ++++++++++++++++++++++---- > > 1 file changed, 22 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c > > index a7513a8a8e37..9fbb15c62c6c 100644 > > --- a/drivers/hv/hv_kvp.c > > +++ b/drivers/hv/hv_kvp.c > > @@ -353,6 +353,9 @@ static void process_ib_ipinfo(void *in_msg, void *out_msg, int op) > > > > out->body.kvp_ip_val.dhcp_enabled = in->kvp_ip_val.dhcp_enabled; > > > > + __attribute__ ((fallthrough)); > > The comment should be sufficient for this, right? I haven't seen many > uses of this attribute before, how common is it? > It's not common at all. It should be wrapped in a macro and put into compiler.h. But I hope it does become adopted. It's better than randomly grepping for non-standard comments. regards, dan carpenter ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 6:22 ` Dan Carpenter @ 2018-10-20 14:42 ` Miguel Ojeda 2018-10-20 19:22 ` Dan Carpenter 0 siblings, 1 reply; 21+ messages in thread From: Miguel Ojeda @ 2018-10-20 14:42 UTC (permalink / raw) To: Dan Cc: Greg KH, kys, olaf, sthemmin, jasowang, linux-kernel, Stable, Michael.H.Kelley, Robo Bot, devel, vkuznets, haiyangz +On Wed, Oct 17, 2018 at 8:25 AM Dan Carpenter <dan.carpenter@oracle.com> wrote: > > It's not common at all. It should be wrapped in a macro and put into > compiler.h. > > But I hope it does become adopted. It's better than randomly grepping > for non-standard comments. Using an attribute is indeed better whenever possible. In C++17 it is an standard attribute and there have been proposals to include some of them for C as well since 2016 at least, e.g. the latest for fallthrough at: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2268.pdf I have taken a quick look into supporting it (typing it here to save it on the mailing list :-), and we have: * gcc >= 7.1 supports -Wimplicit-fallthrough with __attribute__((fallthrough)), the comment syntax and the C++ [[fallthrough]] syntax. * gcc < 7.1 complains about empty declarations (it does not know about attributes for null statements) and also -Wdeclaration-after-statement. * clang 7 supports -Wimplicit-fallthrough (not enabled in -Wall/extra/pedantic like gcc, though) but *only* in C++ mode and with the C++ syntax [[fallthrough]]. In other words, in C mode, no syntax works and no diagnostics are emitted. It complains about Wmissing-declarations. [IMO they should allow the __attribute__ syntax for fallthrough (and enable it on C mode) to be compatible with gcc. Maybe they are simply waiting for the C2x attributes... :-)] * icc 19 does not know about -Wimplicit-fallthrough at all (but seems to allow [[fallthrough]] on C++17 mode to comply with the standard). Therefore, the only improvement we could do right now is starting to use the attribute for gcc > 7.1, and a comment for everybody else. However, even if that was worth the trouble of changing the 2500+ instances of fall through markings that we have, comments are replaced before the preprocessor stage, so we would need some (probably non-portable) macro magic. So, I would say, let's revisit this again in a few years. Possibly, when we move the minimum version to gcc 7.1, clang and icc may both support the fallthrough warning in C mode; so that we can always use the __attribute__((fallthrough)) unconditionally under a __fallthrough #define. Cheers, Miguel ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-20 14:42 ` Miguel Ojeda @ 2018-10-20 19:22 ` Dan Carpenter 2018-10-21 4:15 ` Miguel Ojeda 0 siblings, 1 reply; 21+ messages in thread From: Dan Carpenter @ 2018-10-20 19:22 UTC (permalink / raw) To: Miguel Ojeda Cc: olaf, sthemmin, Greg KH, jasowang, linux-kernel, Stable, Michael.H.Kelley, Robo Bot, devel, vkuznets, haiyangz On Sat, Oct 20, 2018 at 04:42:07PM +0200, Miguel Ojeda wrote: > +On Wed, Oct 17, 2018 at 8:25 AM Dan Carpenter <dan.carpenter@oracle.com> wrote: > > > > It's not common at all. It should be wrapped in a macro and put into > > compiler.h. > > > > But I hope it does become adopted. It's better than randomly grepping > > for non-standard comments. > > Using an attribute is indeed better whenever possible. In C++17 it is > an standard attribute and there have been proposals to include some of > them for C as well since 2016 at least, e.g. the latest for > fallthrough at: > > http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2268.pdf > > I have taken a quick look into supporting it (typing it here to save > it on the mailing list :-), and we have: > > * gcc >= 7.1 supports -Wimplicit-fallthrough with > __attribute__((fallthrough)), the comment syntax and the C++ > [[fallthrough]] syntax. > * gcc < 7.1 complains about empty declarations (it does not know > about attributes for null statements) and also > -Wdeclaration-after-statement. I'm not sure I understand about empty decalarations. The idea is that we would do: case 3: frob(); __fall_through(); case 4: frob(); #if GCC > 7.1 #define __fall_through() __attribute__((fallthrough)) #else #define __fall_through() #endif So long as GCC and static analysis tools understand about the attribute that's enought to catch the bugs. No one cares what clang and icc do. We would just disable the fall through warnings on those until they are updated to support the fallthrough attribute. We wouldn't update all the fall through comments until later, but going forward people could use the __fall_through() macro if they want. regards, dan carpenter ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-20 19:22 ` Dan Carpenter @ 2018-10-21 4:15 ` Miguel Ojeda 0 siblings, 0 replies; 21+ messages in thread From: Miguel Ojeda @ 2018-10-21 4:15 UTC (permalink / raw) To: Dan Cc: olaf, sthemmin, Greg KH, jasowang, linux-kernel, Stable, Michael.H.Kelley, Robo Bot, devel, vkuznets, haiyangz Hi Dan, On Sat, Oct 20, 2018 at 9:22 PM Dan Carpenter <dan.carpenter@oracle.com> wrote: > > On Sat, Oct 20, 2018 at 04:42:07PM +0200, Miguel Ojeda wrote: > > Using an attribute is indeed better whenever possible. In C++17 it is > > an standard attribute and there have been proposals to include some of > > them for C as well since 2016 at least, e.g. the latest for > > fallthrough at: > > > > http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2268.pdf > > > > I have taken a quick look into supporting it (typing it here to save > > it on the mailing list :-), and we have: > > > > * gcc >= 7.1 supports -Wimplicit-fallthrough with > > __attribute__((fallthrough)), the comment syntax and the C++ > > [[fallthrough]] syntax. > > * gcc < 7.1 complains about empty declarations (it does not know > > about attributes for null statements) and also > > -Wdeclaration-after-statement. > > I'm not sure I understand about empty decalarations. The idea is that > we would do: That paragraph tried to explain that gcc < 7.1 did not know about __attribute__((fallthrough)); i.e. that everything was introduced in gcc 7.1. Anyway, the conclusion was a neuron misfiring of mine -- in my mind I was thinking clang supported the comment syntax (when I clearly wrote that it didn't). Never mind --- thanks for pointing it out! > > case 3: > frob(); > __fall_through(); > case 4: > frob(); > > #if GCC > 7.1 > #define __fall_through() __attribute__((fallthrough)) > #else > #define __fall_through() > #endif Yes, of course, that is what we do for other attributes -- actually in -next we have pending a better way for checking, using __has_attribute: #if __has_attribute(fallthrough) #define __fallthrough __attribute__((fallthrough)) #else #define __fallthrough #endif > > So long as GCC and static analysis tools understand about the attribute > that's enought to catch the bugs. No one cares what clang and icc do. Not so sure about that -- there are quite some people looking forward to building Linux with clang, even if only to have another compiler to check for warnings and to use the clang/llvm-related tools (and to write new ones). > We would just disable the fall through warnings on those until they are > updated to support the fallthrough attribute. You mean if they start supporting the warning but not the attribute? I don't think that would be likely (i.e. if clang enables the warning on C mode, they will have to introduce a way to suppress it; which should be the attribute (at least), since they typically like to be compatible with gcc and since they already support it in C++ >= 11), but everything is possible. > > We wouldn't update all the fall through comments until later, but going > forward people could use the __fall_through() macro if they want. Agreed. I will introduce it in the compiler-attributes tree -- should be there for -rc1 if no one complains. CC'ing all of you in the patch. Cheers, Miguel ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up 2018-10-17 5:07 ` Greg KH ` (2 preceding siblings ...) 2018-10-17 6:22 ` Dan Carpenter @ 2018-10-17 18:01 ` Dexuan Cui 3 siblings, 0 replies; 21+ messages in thread From: Dexuan Cui @ 2018-10-17 18:01 UTC (permalink / raw) To: Greg KH, KY Srinivasan Cc: olaf, Stephen Hemminger, jasowang, linux-kernel, Stable, Michael Kelley, apw, devel, vkuznets, Haiyang Zhang > From: devel <driverdev-devel-bounces@linuxdriverproject.org> On Behalf Of > Greg KH > Sent: Tuesday, October 16, 2018 22:07 > > ... > > + case KVP_OP_GET: > > + message->body.kvp_get.data.key_size = > > + utf16s_to_utf8s( > > + (wchar_t *)in_msg->body.kvp_get.data.key, > > + in_msg->body.kvp_get.data.key_size, > > + UTF16_LITTLE_ENDIAN, > > + message->body.kvp_get.data.key, > > + HV_KVP_EXCHANGE_MAX_KEY_SIZE - 1) + 1; > > Worst indentation ever :( > > Yeah, I know it follows the others above it, but you should reconsider > it in the future... > greg k-h Agreed. We should consider improving this in future. -- Dexuan ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys 2018-10-17 3:14 ` [PATCH 2/5] hv_utils: update name in struct hv_driver util_drv kys 2018-10-17 3:14 ` [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up kys @ 2018-10-17 3:14 ` kys 2018-10-17 5:04 ` Greg KH 2018-10-17 3:14 ` [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 kys 2018-10-17 5:04 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context Greg KH 4 siblings, 1 reply; 21+ messages in thread From: kys @ 2018-10-17 3:14 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: Dexuan Cui, K . Y . Srinivasan, Haiyang Zhang, Stable From: Dexuan Cui <decui@microsoft.com> I didn't find a real issue. Let's just make it consistent with the next "case REG_U64:" where %llu is used. Signed-off-by: Dexuan Cui <decui@microsoft.com> Cc: K. Y. Srinivasan <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: <Stable@vger.kernel.org> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> --- drivers/hv/hv_kvp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c index 9fbb15c62c6c..3b8590ff94ba 100644 --- a/drivers/hv/hv_kvp.c +++ b/drivers/hv/hv_kvp.c @@ -437,7 +437,7 @@ kvp_send_key(struct work_struct *dummy) val32 = in_msg->body.kvp_set.data.value_u32; message->body.kvp_set.data.value_size = sprintf(message->body.kvp_set.data.value, - "%d", val32) + 1; + "%u", val32) + 1; break; case REG_U64: -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 2018-10-17 3:14 ` [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 kys @ 2018-10-17 5:04 ` Greg KH 2018-10-17 5:59 ` KY Srinivasan 0 siblings, 1 reply; 21+ messages in thread From: Greg KH @ 2018-10-17 5:04 UTC (permalink / raw) To: kys Cc: linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets, Haiyang Zhang, Stable On Wed, Oct 17, 2018 at 03:14:05AM +0000, kys@linuxonhyperv.com wrote: > From: Dexuan Cui <decui@microsoft.com> > > I didn't find a real issue. Let's just make it consistent with the > next "case REG_U64:" where %llu is used. > > Signed-off-by: Dexuan Cui <decui@microsoft.com> > Cc: K. Y. Srinivasan <kys@microsoft.com> > Cc: Haiyang Zhang <haiyangz@microsoft.com> > Cc: Stephen Hemminger <sthemmin@microsoft.com> > Cc: <Stable@vger.kernel.org> Why is this a stable patch? confused, greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 2018-10-17 5:04 ` Greg KH @ 2018-10-17 5:59 ` KY Srinivasan 0 siblings, 0 replies; 21+ messages in thread From: KY Srinivasan @ 2018-10-17 5:59 UTC (permalink / raw) To: Greg KH Cc: linux-kernel, devel, olaf, apw, jasowang, Stephen Hemminger, Michael Kelley (EOSG), vkuznets, Haiyang Zhang, Stable > -----Original Message----- > From: Greg KH <gregkh@linuxfoundation.org> > Sent: Tuesday, October 16, 2018 10:04 PM > To: KY Srinivasan <kys@microsoft.com> > Cc: linux-kernel@vger.kernel.org; devel@linuxdriverproject.org; > olaf@aepfle.de; apw@canonical.com; jasowang@redhat.com; Stephen > Hemminger <sthemmin@microsoft.com>; Michael Kelley (EOSG) > <Michael.H.Kelley@microsoft.com>; vkuznets <vkuznets@redhat.com>; > Haiyang Zhang <haiyangz@microsoft.com>; Stable@vger.kernel.org > Subject: Re: [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 > > On Wed, Oct 17, 2018 at 03:14:05AM +0000, kys@linuxonhyperv.com wrote: > > From: Dexuan Cui <decui@microsoft.com> > > > > I didn't find a real issue. Let's just make it consistent with the > > next "case REG_U64:" where %llu is used. > > > > Signed-off-by: Dexuan Cui <decui@microsoft.com> > > Cc: K. Y. Srinivasan <kys@microsoft.com> > > Cc: Haiyang Zhang <haiyangz@microsoft.com> > > Cc: Stephen Hemminger <sthemmin@microsoft.com> > > Cc: <Stable@vger.kernel.org> > > Why is this a stable patch? My mistake; I will resend. K. Y > > confused, > > greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys ` (2 preceding siblings ...) 2018-10-17 3:14 ` [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 kys @ 2018-10-17 3:14 ` kys 2018-10-17 5:07 ` Greg KH 2018-10-17 5:04 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context Greg KH 4 siblings, 1 reply; 21+ messages in thread From: kys @ 2018-10-17 3:14 UTC (permalink / raw) To: gregkh, linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets Cc: Dexuan Cui, K . Y . Srinivasan, Haiyang Zhang, Stable From: Dexuan Cui <decui@microsoft.com> The patch fixes: hv_kvp_daemon.c: In function 'kvp_set_ip_info': hv_kvp_daemon.c:1305:2: note: 'snprintf' output between 41 and 4136 bytes into a destination of size 4096 Signed-off-by: Dexuan Cui <decui@microsoft.com> Cc: K. Y. Srinivasan <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: <Stable@vger.kernel.org> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> --- tools/hv/hv_kvp_daemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c index bbb2a8ef367c..b7c2cf7eaba5 100644 --- a/tools/hv/hv_kvp_daemon.c +++ b/tools/hv/hv_kvp_daemon.c @@ -1176,7 +1176,7 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) int error = 0; char if_file[PATH_MAX]; FILE *file; - char cmd[PATH_MAX]; + char cmd[PATH_MAX * 2]; char *mac_addr; /* -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 2018-10-17 3:14 ` [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 kys @ 2018-10-17 5:07 ` Greg KH 2018-10-17 19:57 ` Dexuan Cui 0 siblings, 1 reply; 21+ messages in thread From: Greg KH @ 2018-10-17 5:07 UTC (permalink / raw) To: kys Cc: linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets, Haiyang Zhang, Stable On Wed, Oct 17, 2018 at 03:14:06AM +0000, kys@linuxonhyperv.com wrote: > From: Dexuan Cui <decui@microsoft.com> > > The patch fixes: > > hv_kvp_daemon.c: In function 'kvp_set_ip_info': > hv_kvp_daemon.c:1305:2: note: 'snprintf' output between 41 and 4136 bytes > into a destination of size 4096 > > Signed-off-by: Dexuan Cui <decui@microsoft.com> > Cc: K. Y. Srinivasan <kys@microsoft.com> > Cc: Haiyang Zhang <haiyangz@microsoft.com> > Cc: Stephen Hemminger <sthemmin@microsoft.com> > Cc: <Stable@vger.kernel.org> > Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> > --- > tools/hv/hv_kvp_daemon.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c > index bbb2a8ef367c..b7c2cf7eaba5 100644 > --- a/tools/hv/hv_kvp_daemon.c > +++ b/tools/hv/hv_kvp_daemon.c > @@ -1176,7 +1176,7 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) > int error = 0; > char if_file[PATH_MAX]; > FILE *file; > - char cmd[PATH_MAX]; > + char cmd[PATH_MAX * 2]; Overkill? ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 2018-10-17 5:07 ` Greg KH @ 2018-10-17 19:57 ` Dexuan Cui 0 siblings, 0 replies; 21+ messages in thread From: Dexuan Cui @ 2018-10-17 19:57 UTC (permalink / raw) To: Greg KH, KY Srinivasan Cc: olaf, Stephen Hemminger, jasowang, linux-kernel, Stable, Michael Kelley, apw, devel, vkuznets, Haiyang Zhang > From: devel <driverdev-devel-bounces@linuxdriverproject.org> On Behalf Of > Greg KH > Sent: Tuesday, October 16, 2018 22:07 > > On Wed, Oct 17, 2018 at 03:14:06AM +0000, kys@linuxonhyperv.com wrote: > > From: Dexuan Cui <decui@microsoft.com> > > > > The patch fixes: > > > > hv_kvp_daemon.c: In function 'kvp_set_ip_info': > > hv_kvp_daemon.c:1305:2: note: 'snprintf' output between 41 and 4136 bytes > > into a destination of size 4096 > > ... > > --- a/tools/hv/hv_kvp_daemon.c > > +++ b/tools/hv/hv_kvp_daemon.c > > @@ -1176,7 +1176,7 @@ static int kvp_set_ip_info(char *if_name, struct > hv_kvp_ipaddr_value *new_val) > > int error = 0; > > char if_file[PATH_MAX]; > > FILE *file; > > - char cmd[PATH_MAX]; > > + char cmd[PATH_MAX * 2]; > > Overkill? Well, I found the -Wformat-truncation warning can be suppressed by checking the return value of snprintf, so I'm going to do a new patch for KY to resend like this: @@ -1178,6 +1178,7 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) FILE *file; char cmd[PATH_MAX]; char *mac_addr; + int str_len; /* * Set the configuration for the specified interface with @@ -1301,8 +1302,19 @@ static int kvp_set_ip_info(char *if_name, struct hv_kvp_ipaddr_value *new_val) * invoke the external script to do its magic. */ - snprintf(cmd, sizeof(cmd), KVP_SCRIPTS_PATH "%s %s", - "hv_set_ifconfig", if_file); + str_len = snprintf(cmd, sizeof(cmd), KVP_SCRIPTS_PATH "%s %s", + "hv_set_ifconfig", if_file); + + /* + * This is a little overcautious, but it's necessary to suppress some + * false warnings from gcc 8.0.1. + */ + if (str_len <= 0 || (unsigned int)str_len >= sizeof(cmd)) { + syslog(LOG_ERR, "Cmd '%s' (len=%d) may be too long", + cmd, str_len); + return HV_E_FAIL; + } Thanks, -- Dexuan ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys ` (3 preceding siblings ...) 2018-10-17 3:14 ` [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 kys @ 2018-10-17 5:04 ` Greg KH 2018-10-17 5:59 ` KY Srinivasan 4 siblings, 1 reply; 21+ messages in thread From: Greg KH @ 2018-10-17 5:04 UTC (permalink / raw) To: kys Cc: linux-kernel, devel, olaf, apw, jasowang, sthemmin, Michael.H.Kelley, vkuznets On Wed, Oct 17, 2018 at 03:14:02AM +0000, kys@linuxonhyperv.com wrote: > From: "K. Y. Srinivasan" <kys@microsoft.com> > > Currently we are replicating state in struct hv_context that is unnecessary - > this state can be retrieved from the hypervisor. Furthermore, this is a per-cpu > state that is being maintained as a global state in struct hv_context. > Get rid of this state in struct hv_context. > > Reply-To: kys@microsoft.com Why is this here? greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
* RE: [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context 2018-10-17 5:04 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context Greg KH @ 2018-10-17 5:59 ` KY Srinivasan 0 siblings, 0 replies; 21+ messages in thread From: KY Srinivasan @ 2018-10-17 5:59 UTC (permalink / raw) To: Greg KH Cc: linux-kernel, devel, olaf, apw, jasowang, Stephen Hemminger, Michael Kelley (EOSG), vkuznets > -----Original Message----- > From: Greg KH <gregkh@linuxfoundation.org> > Sent: Tuesday, October 16, 2018 10:05 PM > To: KY Srinivasan <kys@microsoft.com> > Cc: linux-kernel@vger.kernel.org; devel@linuxdriverproject.org; > olaf@aepfle.de; apw@canonical.com; jasowang@redhat.com; Stephen > Hemminger <sthemmin@microsoft.com>; Michael Kelley (EOSG) > <Michael.H.Kelley@microsoft.com>; vkuznets <vkuznets@redhat.com> > Subject: Re: [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in > hv_context > > On Wed, Oct 17, 2018 at 03:14:02AM +0000, kys@linuxonhyperv.com wrote: > > From: "K. Y. Srinivasan" <kys@microsoft.com> > > > > Currently we are replicating state in struct hv_context that is unnecessary - > > this state can be retrieved from the hypervisor. Furthermore, this is a per- > cpu > > state that is being maintained as a global state in struct hv_context. > > Get rid of this state in struct hv_context. > > > > Reply-To: kys@microsoft.com > > Why is this here? No sure how this happened; will fix it and resend. K. Y > > greg k-h ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2018-10-21 4:16 UTC | newest] Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-10-17 3:12 [PATCH 0/5] Drivers: hv: Miscellaneous fixes kys 2018-10-17 3:14 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context kys 2018-10-17 3:14 ` [PATCH 2/5] hv_utils: update name in struct hv_driver util_drv kys 2018-10-17 3:14 ` [PATCH 3/5] Drivers: hv: kvp: Fix the recent regression caused by incorrect clean-up kys 2018-10-17 5:07 ` Greg KH 2018-10-17 5:11 ` Gustavo A. R. Silva 2018-10-17 6:02 ` KY Srinivasan 2018-10-17 17:56 ` Dexuan Cui 2018-10-17 6:22 ` Dan Carpenter 2018-10-20 14:42 ` Miguel Ojeda 2018-10-20 19:22 ` Dan Carpenter 2018-10-21 4:15 ` Miguel Ojeda 2018-10-17 18:01 ` Dexuan Cui 2018-10-17 3:14 ` [PATCH 4/5] Drivers: hv: kvp: Use %u to print U32 kys 2018-10-17 5:04 ` Greg KH 2018-10-17 5:59 ` KY Srinivasan 2018-10-17 3:14 ` [PATCH 5/5] Tools: hv: kvp: Fix a warning of buffer overflow with gcc 8.0.1 kys 2018-10-17 5:07 ` Greg KH 2018-10-17 19:57 ` Dexuan Cui 2018-10-17 5:04 ` [PATCH 1/5] Drivers: hv: vmbus: Get rid of unnecessary state in hv_context Greg KH 2018-10-17 5:59 ` KY Srinivasan
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).