/* resp.response_length is set in ECE supported flows only */
        if (!err && resp.response_length &&
            udata->outlen >= resp.response_length)
-               /*
-                * We don't check return value of the function below
-                * on purpose, because it is unclear how to unwind the
-                * error flow after QP was modified to the new state.
-                */
-               ib_copy_to_udata(udata, &resp, resp.response_length);
+               /* Return -EFAULT to the user and expect him to destroy QP. */
+               err = ib_copy_to_udata(udata, &resp, resp.response_length);
 
 out:
        mutex_unlock(&qp->mutex);