struct ib_udata *ucore,
                              struct ib_udata *uhw)
 {
-       struct ib_uverbs_ex_query_device_resp resp;
+       struct ib_uverbs_ex_query_device_resp resp = { {0} };
        struct ib_uverbs_ex_query_device  cmd;
-       struct ib_device_attr attr;
+       struct ib_device_attr attr = {0};
        int err;
 
        if (ucore->inlen < sizeof(cmd))
        if (ucore->outlen < resp.response_length)
                return -ENOSPC;
 
-       memset(&attr, 0, sizeof(attr));
-
        err = ib_dev->query_device(ib_dev, &attr, uhw);
        if (err)
                return err;
 
        copy_query_dev_fields(file, ib_dev, &resp.base, &attr);
-       resp.comp_mask = 0;
 
        if (ucore->outlen < resp.response_length + sizeof(resp.odp_caps))
                goto end;
                attr.odp_caps.per_transport_caps.uc_odp_caps;
        resp.odp_caps.per_transport_caps.ud_odp_caps =
                attr.odp_caps.per_transport_caps.ud_odp_caps;
-       resp.odp_caps.reserved = 0;
-#else
-       memset(&resp.odp_caps, 0, sizeof(resp.odp_caps));
 #endif
        resp.response_length += sizeof(resp.odp_caps);
 
 
 end:
        err = ib_copy_to_udata(ucore, &resp, resp.response_length);
-       if (err)
-               return err;
-
-       return 0;
+       return err;
 }