diff options
author | Hal Rosenstock <hal.rosenstock@gmail.com> | 2007-08-03 13:45:17 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-08-03 13:45:17 -0400 |
commit | 86dfbecdea733a6e940b958e94a85af45b89a0b9 (patch) | |
tree | 03ded21cc97e03cd4523b55cc13dd31a41fd2f67 /drivers/infiniband/core/mad.c | |
parent | 445d68070c9c02acdda38e6d69bd43096f521035 (diff) |
IB/mad: Fix memory leak in switch handling in ib_mad_recv_done_handler()
If agent_send_response() returns an error, we shouldn't do anything
differently than if it succeeds; setting response to NULL just means
that the response buffer gets leaked.
Signed-off-by: Suresh Shelvapille <suri@baymicrosystems.com>
Signed-off-by: Hal Rosenstock <hal.rosenstock@gmail.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/core/mad.c')
-rw-r--r-- | drivers/infiniband/core/mad.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index 96978576205..6f4287716ab 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c | |||
@@ -1916,12 +1916,11 @@ static void ib_mad_recv_done_handler(struct ib_mad_port_private *port_priv, | |||
1916 | response->header.recv_wc.recv_buf.mad = &response->mad.mad; | 1916 | response->header.recv_wc.recv_buf.mad = &response->mad.mad; |
1917 | response->header.recv_wc.recv_buf.grh = &response->grh; | 1917 | response->header.recv_wc.recv_buf.grh = &response->grh; |
1918 | 1918 | ||
1919 | if (!agent_send_response(&response->mad.mad, | 1919 | agent_send_response(&response->mad.mad, |
1920 | &response->grh, wc, | 1920 | &response->grh, wc, |
1921 | port_priv->device, | 1921 | port_priv->device, |
1922 | smi_get_fwd_port(&recv->mad.smp), | 1922 | smi_get_fwd_port(&recv->mad.smp), |
1923 | qp_info->qp->qp_num)) | 1923 | qp_info->qp->qp_num); |
1924 | response = NULL; | ||
1925 | 1924 | ||
1926 | goto out; | 1925 | goto out; |
1927 | } | 1926 | } |