aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/net/qeth_core_main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 0a328d0d11be..bd8c09e7a8d9 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -4451,7 +4451,7 @@ int qeth_snmp_command(struct qeth_card *card, char __user *udata)
4451 struct qeth_cmd_buffer *iob; 4451 struct qeth_cmd_buffer *iob;
4452 struct qeth_ipa_cmd *cmd; 4452 struct qeth_ipa_cmd *cmd;
4453 struct qeth_snmp_ureq *ureq; 4453 struct qeth_snmp_ureq *ureq;
4454 int req_len; 4454 unsigned int req_len;
4455 struct qeth_arp_query_info qinfo = {0, }; 4455 struct qeth_arp_query_info qinfo = {0, };
4456 int rc = 0; 4456 int rc = 0;
4457 4457
@@ -4467,6 +4467,10 @@ int qeth_snmp_command(struct qeth_card *card, char __user *udata)
4467 /* skip 4 bytes (data_len struct member) to get req_len */ 4467 /* skip 4 bytes (data_len struct member) to get req_len */
4468 if (copy_from_user(&req_len, udata + sizeof(int), sizeof(int))) 4468 if (copy_from_user(&req_len, udata + sizeof(int), sizeof(int)))
4469 return -EFAULT; 4469 return -EFAULT;
4470 if (req_len > (QETH_BUFSIZE - IPA_PDU_HEADER_SIZE -
4471 sizeof(struct qeth_ipacmd_hdr) -
4472 sizeof(struct qeth_ipacmd_setadpparms_hdr)))
4473 return -EINVAL;
4470 ureq = memdup_user(udata, req_len + sizeof(struct qeth_snmp_ureq_hdr)); 4474 ureq = memdup_user(udata, req_len + sizeof(struct qeth_snmp_ureq_hdr));
4471 if (IS_ERR(ureq)) { 4475 if (IS_ERR(ureq)) {
4472 QETH_CARD_TEXT(card, 2, "snmpnome"); 4476 QETH_CARD_TEXT(card, 2, "snmpnome");