Merge tag 'io_uring-6.6-2023-09-08' of git://git.kernel.dk/linux
[linux-2.6-block.git] / drivers / scsi / qla4xxx / ql4_os.c
index b2a3988e1e1594603307f19dd43d87ec33398d0e..675332e49a7b063c54c3d265e5f56006f59ffa8a 100644 (file)
@@ -968,6 +968,11 @@ static int qla4xxx_set_chap_entry(struct Scsi_Host *shost, void *data, int len)
        memset(&chap_rec, 0, sizeof(chap_rec));
 
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*param_info)) {
+                       rc = -EINVAL;
+                       goto exit_set_chap;
+               }
+
                param_info = nla_data(attr);
 
                switch (param_info->param) {
@@ -2750,6 +2755,11 @@ qla4xxx_iface_set_param(struct Scsi_Host *shost, void *data, uint32_t len)
        }
 
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*iface_param)) {
+                       rval = -EINVAL;
+                       goto exit_init_fw_cb;
+               }
+
                iface_param = nla_data(attr);
 
                if (iface_param->param_type == ISCSI_NET_PARAM) {
@@ -8104,6 +8114,11 @@ qla4xxx_sysfs_ddb_set_param(struct iscsi_bus_flash_session *fnode_sess,
 
        memset((void *)&chap_tbl, 0, sizeof(chap_tbl));
        nla_for_each_attr(attr, data, len, rem) {
+               if (nla_len(attr) < sizeof(*fnode_param)) {
+                       rc = -EINVAL;
+                       goto exit_set_param;
+               }
+
                fnode_param = nla_data(attr);
 
                switch (fnode_param->param) {