hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/rndis_wlan.c
....@@ -694,8 +694,8 @@
694694 struct rndis_query *get;
695695 struct rndis_query_c *get_c;
696696 } u;
697
- int ret, buflen;
698
- int resplen, respoffs, copylen;
697
+ int ret;
698
+ size_t buflen, resplen, respoffs, copylen;
699699
700700 buflen = *len + sizeof(*u.get);
701701 if (buflen < CONTROL_BUFFER_SIZE)
....@@ -730,22 +730,15 @@
730730
731731 if (respoffs > buflen) {
732732 /* Device returned data offset outside buffer, error. */
733
- netdev_dbg(dev->net, "%s(%s): received invalid "
734
- "data offset: %d > %d\n", __func__,
735
- oid_to_string(oid), respoffs, buflen);
733
+ netdev_dbg(dev->net,
734
+ "%s(%s): received invalid data offset: %zu > %zu\n",
735
+ __func__, oid_to_string(oid), respoffs, buflen);
736736
737737 ret = -EINVAL;
738738 goto exit_unlock;
739739 }
740740
741
- if ((resplen + respoffs) > buflen) {
742
- /* Device would have returned more data if buffer would
743
- * have been big enough. Copy just the bits that we got.
744
- */
745
- copylen = buflen - respoffs;
746
- } else {
747
- copylen = resplen;
748
- }
741
+ copylen = min(resplen, buflen - respoffs);
749742
750743 if (copylen > *len)
751744 copylen = *len;