[PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this statement may fall through" warnings
From: Dexuan Cui [ Upstream commit fc62c3b1977d62e6374fd6e28d371bb42dfa5c9d ] We don't need to call process_ib_ipinfo() if message->kvp_hdr.operation is KVP_OP_GET_IP_INFO in kvp_send_key(), because here we just need to pass on the op code from the host to the userspace; when the userspace returns the info requested by the host, we pass the info on to the host in kvp_respond_to_host() -> process_ob_ipinfo(). BTW, the current buggy code actually doesn't cause any harm, because only message->kvp_hdr.operation is used by the userspace, in the case of KVP_OP_GET_IP_INFO. The patch also adds a missing "break;" in kvp_send_key(). BTW, the current buggy code actually doesn't cause any harm, because in the case of KVP_OP_SET, the unexpected fall-through corrupts message->body.kvp_set.data.key_size, but that is not really used: see the definition of struct hv_kvp_exchg_msg_value. Signed-off-by: Dexuan Cui Cc: K. Y. Srinivasan Cc: Haiyang Zhang Cc: Stephen Hemminger Cc: Signed-off-by: K. Y. Srinivasan Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/hv/hv_kvp.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c index 5eed1e7da15c..57715a0c8120 100644 --- a/drivers/hv/hv_kvp.c +++ b/drivers/hv/hv_kvp.c @@ -353,7 +353,6 @@ 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; - default: utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, MAX_ADAPTER_ID_SIZE, UTF16_LITTLE_ENDIAN, @@ -406,7 +405,7 @@ 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: - process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); + /* We only need to pass on message->kvp_hdr.operation. */ break; case KVP_OP_SET: switch (in_msg->body.kvp_set.data.value_type) { @@ -446,6 +445,9 @@ kvp_send_key(struct work_struct *dummy) break; } + + break; + case KVP_OP_GET: message->body.kvp_set.data.key_size = utf16s_to_utf8s( -- 2.17.1
[PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this statement may fall through" warnings
From: Dexuan Cui [ Upstream commit fc62c3b1977d62e6374fd6e28d371bb42dfa5c9d ] We don't need to call process_ib_ipinfo() if message->kvp_hdr.operation is KVP_OP_GET_IP_INFO in kvp_send_key(), because here we just need to pass on the op code from the host to the userspace; when the userspace returns the info requested by the host, we pass the info on to the host in kvp_respond_to_host() -> process_ob_ipinfo(). BTW, the current buggy code actually doesn't cause any harm, because only message->kvp_hdr.operation is used by the userspace, in the case of KVP_OP_GET_IP_INFO. The patch also adds a missing "break;" in kvp_send_key(). BTW, the current buggy code actually doesn't cause any harm, because in the case of KVP_OP_SET, the unexpected fall-through corrupts message->body.kvp_set.data.key_size, but that is not really used: see the definition of struct hv_kvp_exchg_msg_value. Signed-off-by: Dexuan Cui Cc: K. Y. Srinivasan Cc: Haiyang Zhang Cc: Stephen Hemminger Cc: Signed-off-by: K. Y. Srinivasan Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/hv/hv_kvp.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c index 5eed1e7da15c..57715a0c8120 100644 --- a/drivers/hv/hv_kvp.c +++ b/drivers/hv/hv_kvp.c @@ -353,7 +353,6 @@ 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; - default: utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, MAX_ADAPTER_ID_SIZE, UTF16_LITTLE_ENDIAN, @@ -406,7 +405,7 @@ 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: - process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); + /* We only need to pass on message->kvp_hdr.operation. */ break; case KVP_OP_SET: switch (in_msg->body.kvp_set.data.value_type) { @@ -446,6 +445,9 @@ kvp_send_key(struct work_struct *dummy) break; } + + break; + case KVP_OP_GET: message->body.kvp_set.data.key_size = utf16s_to_utf8s( -- 2.17.1
RE: [PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this statement may fall through" warnings
> From: Sasha Levin > Sent: Wednesday, October 31, 2018 16:05 > To: sta...@vger.kernel.org; linux-kernel@vger.kernel.org > Cc: Dexuan Cui ; KY Srinivasan ; > Haiyang Zhang ; Stephen Hemminger > ; sta...@vger.kernel.org; Greg Kroah-Hartman > ; Sasha Levin > Subject: [PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this > statement may fall through" warnings > > From: Dexuan Cui > > [ Upstream commit fc62c3b1977d62e6374fd6e28d371bb42dfa5c9d ] > > We don't need to call process_ib_ipinfo() if message->kvp_hdr.operation is > KVP_OP_GET_IP_INFO in kvp_send_key(), because here we just need to pass > on > the op code from the host to the userspace; when the userspace returns > the info requested by the host, we pass the info on to the host in > kvp_respond_to_host() -> process_ob_ipinfo(). BTW, the current buggy code > actually doesn't cause any harm, because only message->kvp_hdr.operation > is used by the userspace, in the case of KVP_OP_GET_IP_INFO. > > The patch also adds a missing "break;" in kvp_send_key(). BTW, the current > buggy code actually doesn't cause any harm, because in the case of > KVP_OP_SET, the unexpected fall-through corrupts > message->body.kvp_set.data.key_size, but that is not really used: see > the definition of struct hv_kvp_exchg_msg_value. > > Signed-off-by: Dexuan Cui > Cc: K. Y. Srinivasan > Cc: Haiyang Zhang > Cc: Stephen Hemminger > Cc: > Signed-off-by: K. Y. Srinivasan > Signed-off-by: Greg Kroah-Hartman > Signed-off-by: Sasha Levin > --- > drivers/hv/hv_kvp.c | 6 -- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c > index 5eed1e7da15c..57715a0c8120 100644 > --- a/drivers/hv/hv_kvp.c > +++ b/drivers/hv/hv_kvp.c > @@ -353,7 +353,6 @@ 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; > > - default: > utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, > MAX_ADAPTER_ID_SIZE, > UTF16_LITTLE_ENDIAN, > @@ -406,7 +405,7 @@ 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: > - process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); > + /* We only need to pass on message->kvp_hdr.operation. */ > break; > case KVP_OP_SET: > switch (in_msg->body.kvp_set.data.value_type) { > @@ -446,6 +445,9 @@ kvp_send_key(struct work_struct *dummy) > break; > > } > + > + break; > + > case KVP_OP_GET: > message->body.kvp_set.data.key_size = > utf16s_to_utf8s( > -- > 2.17.1 This patch caused a regression and the fix (https://lkml.org/lkml/2018/10/18/288) has not been in Greg's tree yet... For now, please don't backport this patch to the stable kernels (4.19, 4.18, 4.14, 4.9, 4.4, 3.18,etc). Sorry for the trouble! -- Dexuan
RE: [PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this statement may fall through" warnings
> From: Sasha Levin > Sent: Wednesday, October 31, 2018 16:05 > To: sta...@vger.kernel.org; linux-kernel@vger.kernel.org > Cc: Dexuan Cui ; KY Srinivasan ; > Haiyang Zhang ; Stephen Hemminger > ; sta...@vger.kernel.org; Greg Kroah-Hartman > ; Sasha Levin > Subject: [PATCH AUTOSEL 4.19 109/146] Drivers: hv: kvp: Fix two "this > statement may fall through" warnings > > From: Dexuan Cui > > [ Upstream commit fc62c3b1977d62e6374fd6e28d371bb42dfa5c9d ] > > We don't need to call process_ib_ipinfo() if message->kvp_hdr.operation is > KVP_OP_GET_IP_INFO in kvp_send_key(), because here we just need to pass > on > the op code from the host to the userspace; when the userspace returns > the info requested by the host, we pass the info on to the host in > kvp_respond_to_host() -> process_ob_ipinfo(). BTW, the current buggy code > actually doesn't cause any harm, because only message->kvp_hdr.operation > is used by the userspace, in the case of KVP_OP_GET_IP_INFO. > > The patch also adds a missing "break;" in kvp_send_key(). BTW, the current > buggy code actually doesn't cause any harm, because in the case of > KVP_OP_SET, the unexpected fall-through corrupts > message->body.kvp_set.data.key_size, but that is not really used: see > the definition of struct hv_kvp_exchg_msg_value. > > Signed-off-by: Dexuan Cui > Cc: K. Y. Srinivasan > Cc: Haiyang Zhang > Cc: Stephen Hemminger > Cc: > Signed-off-by: K. Y. Srinivasan > Signed-off-by: Greg Kroah-Hartman > Signed-off-by: Sasha Levin > --- > drivers/hv/hv_kvp.c | 6 -- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/hv/hv_kvp.c b/drivers/hv/hv_kvp.c > index 5eed1e7da15c..57715a0c8120 100644 > --- a/drivers/hv/hv_kvp.c > +++ b/drivers/hv/hv_kvp.c > @@ -353,7 +353,6 @@ 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; > > - default: > utf16s_to_utf8s((wchar_t *)in->kvp_ip_val.adapter_id, > MAX_ADAPTER_ID_SIZE, > UTF16_LITTLE_ENDIAN, > @@ -406,7 +405,7 @@ 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: > - process_ib_ipinfo(in_msg, message, KVP_OP_GET_IP_INFO); > + /* We only need to pass on message->kvp_hdr.operation. */ > break; > case KVP_OP_SET: > switch (in_msg->body.kvp_set.data.value_type) { > @@ -446,6 +445,9 @@ kvp_send_key(struct work_struct *dummy) > break; > > } > + > + break; > + > case KVP_OP_GET: > message->body.kvp_set.data.key_size = > utf16s_to_utf8s( > -- > 2.17.1 This patch caused a regression and the fix (https://lkml.org/lkml/2018/10/18/288) has not been in Greg's tree yet... For now, please don't backport this patch to the stable kernels (4.19, 4.18, 4.14, 4.9, 4.4, 3.18,etc). Sorry for the trouble! -- Dexuan