diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2013-02-04 14:15:24 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-02-04 22:11:51 -0800 | 
| commit | 6763272e7f3fbe8afba948a8afb075b9cf2a5ca7 (patch) | |
| tree | 7a7d08e397152635f0e7b412c03c81988753a1db | |
| parent | 42a3cc275c819ee0929c371a33779a51d32eda3f (diff) | |
protocol/client: Avoid double free of frame
When client_submit_request fails it calls cbk. The cleanups should
happen only in cbk. The code committed as part of
http://review.gluster.org/4357 violates this. Also found that
clnt_release_reopen_fd violates this as well.
This patch fixes these issue.
Change-Id: Ic02ba278724b03c65c00b686c39fd7846122618a
BUG: 821056
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/4464
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
| -rw-r--r-- | xlators/protocol/client/src/client-handshake.c | 3 | 
1 files changed, 1 insertions, 2 deletions
diff --git a/xlators/protocol/client/src/client-handshake.c b/xlators/protocol/client/src/client-handshake.c index 75c58afe8ba..ff0e162c644 100644 --- a/xlators/protocol/client/src/client-handshake.c +++ b/xlators/protocol/client/src/client-handshake.c @@ -631,6 +631,7 @@ clnt_release_reopen_fd (xlator_t *this, clnt_fd_ctx_t *fdctx)                                          clnt_release_reopen_fd_cbk, NULL,                                          NULL, 0, NULL, 0, NULL,                                          (xdrproc_t)xdr_gfs3_releasedir_req); +        return 0;   out:          if (ret) {                  clnt_fd_lk_reacquire_failed (this, fdctx, conf); @@ -1131,7 +1132,6 @@ protocol_client_reopendir (clnt_fd_ctx_t *fdctx, xlator_t *this)          if (ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "failed to send the re-opendir request"); -                goto out;          }          return 0; @@ -1196,7 +1196,6 @@ protocol_client_reopenfile (clnt_fd_ctx_t *fdctx, xlator_t *this)          if (ret) {                  gf_log (this->name, GF_LOG_ERROR,                          "failed to send the re-open request"); -                goto out;          }          return 0;  | 
