* [PATCH v2] staging: r8188eu: fix too many leading tabs
@ 2022-09-19 11:51 Joash Naidoo
2022-09-19 12:08 ` Dan Carpenter
0 siblings, 1 reply; 2+ messages in thread
From: Joash Naidoo @ 2022-09-19 11:51 UTC (permalink / raw)
To: Larry.Finger, phil, paskripkin, dan.carpenter, gregkh
Cc: linux-staging, Joash Naidoo
Coding style fix. Fix too many leading tabs and line length.
Signed-off-by: Joash Naidoo <joash.n09@gmail.com>
---
Changes in v2:
- Flip additional nested if conditions and don't reverse the last if statement
- Move declarations to start of function
- Separate converting __constant_htons to htons to another patch
---
drivers/staging/r8188eu/core/rtw_br_ext.c | 69 ++++++++++++-----------
1 file changed, 36 insertions(+), 33 deletions(-)
diff --git a/drivers/staging/r8188eu/core/rtw_br_ext.c b/drivers/staging/r8188eu/core/rtw_br_ext.c
index bca20fe5c..2fec3bf39 100644
--- a/drivers/staging/r8188eu/core/rtw_br_ext.c
+++ b/drivers/staging/r8188eu/core/rtw_br_ext.c
@@ -601,42 +601,45 @@ struct dhcpMessage {
void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
{
+ __be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN));
+ struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN);
+ struct udphdr *udph = (struct udphdr *)((size_t)iph + (iph->ihl << 2));
+ /* DHCP request */
+ struct dhcpMessage *dhcph =
+ (struct dhcpMessage *)((size_t)udph + sizeof(struct udphdr));
+ u32 cookie = be32_to_cpu((__be32)dhcph->cookie);
+
if (!skb)
return;
- if (!priv->ethBrExtInfo.dhcp_bcst_disable) {
- __be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN));
-
- if (protocol == __constant_htons(ETH_P_IP)) { /* IP */
- struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN);
-
- if (iph->protocol == IPPROTO_UDP) { /* UDP */
- struct udphdr *udph = (struct udphdr *)((size_t)iph + (iph->ihl << 2));
-
- if ((udph->source == __constant_htons(CLIENT_PORT)) &&
- (udph->dest == __constant_htons(SERVER_PORT))) { /* DHCP request */
- struct dhcpMessage *dhcph =
- (struct dhcpMessage *)((size_t)udph + sizeof(struct udphdr));
- u32 cookie = be32_to_cpu((__be32)dhcph->cookie);
-
- if (cookie == DHCP_MAGIC) { /* match magic word */
- if (!(dhcph->flags & htons(BROADCAST_FLAG))) {
- /* if not broadcast */
- register int sum = 0;
-
- /* or BROADCAST flag */
- dhcph->flags |= htons(BROADCAST_FLAG);
- /* recalculate checksum */
- sum = ~(udph->check) & 0xffff;
- sum += be16_to_cpu(dhcph->flags);
- while (sum >> 16)
- sum = (sum & 0xffff) + (sum >> 16);
- udph->check = ~sum;
- }
- }
- }
- }
- }
+ if (priv->ethBrExtInfo.dhcp_bcst_disable)
+ return;
+
+ if (protocol != htons(ETH_P_IP)) /* IP */
+ return;
+
+ if (iph->protocol != IPPROTO_UDP) /* UDP */
+ return;
+
+ if ((udph->source != __constant_htons(CLIENT_PORT)) &&
+ (udph->dest != __constant_htons(SERVER_PORT)))
+ return;
+
+ if (cookie != DHCP_MAGIC) /* match magic word */
+ return;
+
+ if (!(dhcph->flags & htons(BROADCAST_FLAG))) {
+ /* if not broadcast */
+ register int sum = 0;
+
+ /* or BROADCAST flag */
+ dhcph->flags |= htons(BROADCAST_FLAG);
+ /* recalculate checksum */
+ sum = ~(udph->check) & 0xffff;
+ sum += be16_to_cpu(dhcph->flags);
+ while (sum >> 16)
+ sum = (sum & 0xffff) + (sum >> 16);
+ udph->check = ~sum;
}
}
--
2.35.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] staging: r8188eu: fix too many leading tabs
2022-09-19 11:51 [PATCH v2] staging: r8188eu: fix too many leading tabs Joash Naidoo
@ 2022-09-19 12:08 ` Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2022-09-19 12:08 UTC (permalink / raw)
To: Joash Naidoo; +Cc: Larry.Finger, phil, paskripkin, gregkh, linux-staging
On Mon, Sep 19, 2022 at 01:51:11PM +0200, Joash Naidoo wrote:
> Coding style fix. Fix too many leading tabs and line length.
>
> Signed-off-by: Joash Naidoo <joash.n09@gmail.com>
> ---
> Changes in v2:
> - Flip additional nested if conditions and don't reverse the last if statement
> - Move declarations to start of function
> - Separate converting __constant_htons to htons to another patch
> ---
> drivers/staging/r8188eu/core/rtw_br_ext.c | 69 ++++++++++++-----------
> 1 file changed, 36 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/staging/r8188eu/core/rtw_br_ext.c b/drivers/staging/r8188eu/core/rtw_br_ext.c
> index bca20fe5c..2fec3bf39 100644
> --- a/drivers/staging/r8188eu/core/rtw_br_ext.c
> +++ b/drivers/staging/r8188eu/core/rtw_br_ext.c
> @@ -601,42 +601,45 @@ struct dhcpMessage {
>
> void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
> {
> + __be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN));
^^^^^^^^^
Dereferencing skb before it has been NULL checked. Also do we really
know how large the skb is? We seem to making a lot of assumptions...
> + struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN);
> + struct udphdr *udph = (struct udphdr *)((size_t)iph + (iph->ihl << 2));
> + /* DHCP request */
> + struct dhcpMessage *dhcph =
> + (struct dhcpMessage *)((size_t)udph + sizeof(struct udphdr));
> + u32 cookie = be32_to_cpu((__be32)dhcph->cookie);
> +
> if (!skb)
^^^^
Checked too late.
> return;
>
[ snip ]
> + if (iph->protocol != IPPROTO_UDP) /* UDP */
> + return;
> +
> + if ((udph->source != __constant_htons(CLIENT_PORT)) &&
> + (udph->dest != __constant_htons(SERVER_PORT)))
The && needs to be changed to ||.
> + return;
> +
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-09-19 12:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-19 11:51 [PATCH v2] staging: r8188eu: fix too many leading tabs Joash Naidoo
2022-09-19 12:08 ` Dan Carpenter
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).