extern void cifs_buf_release(void *);
 extern struct smb_hdr *cifs_small_buf_get(void);
 extern void cifs_small_buf_release(void *);
+extern void free_rsp_buf(int, void *);
 extern void cifs_rqst_page_to_kvec(struct smb_rqst *rqst, unsigned int idx,
                                        struct kvec *iov);
 extern int smb_send(struct TCP_Server_Info *, struct smb_hdr *,
 
 
 /*     cifs_small_buf_release(pSMB); */ /* Freed earlier now in SendReceive2 */
        if (*buf) {
-               if (resp_buf_type == CIFS_SMALL_BUFFER)
-                       cifs_small_buf_release(iov[0].iov_base);
-               else if (resp_buf_type == CIFS_LARGE_BUFFER)
-                       cifs_buf_release(iov[0].iov_base);
+               free_rsp_buf(resp_buf_type, iov[0].iov_base);
        } else if (resp_buf_type != CIFS_NO_BUFFER) {
                /* return buffer to caller to free */
                *buf = iov[0].iov_base;
        }
 
 /*     cifs_small_buf_release(pSMB); */ /* Freed earlier now in SendReceive2 */
-       if (resp_buf_type == CIFS_SMALL_BUFFER)
-               cifs_small_buf_release(iov[0].iov_base);
-       else if (resp_buf_type == CIFS_LARGE_BUFFER)
-               cifs_buf_release(iov[0].iov_base);
+       free_rsp_buf(resp_buf_type, iov[0].iov_base);
 
        /* Note: On -EAGAIN error only caller can retry on handle based calls
                since file handle passed in no longer valid */
        if (pSMB)
                cifs_small_buf_release(pSMB);
 
-       if (resp_buf_type == CIFS_SMALL_BUFFER)
-               cifs_small_buf_release(iov[0].iov_base);
-       else if (resp_buf_type == CIFS_LARGE_BUFFER)
-               cifs_buf_release(iov[0].iov_base);
+       free_rsp_buf(resp_buf_type, iov[0].iov_base);
 
        /* Note: On -EAGAIN error only caller can retry on handle based calls
           since file handle passed in no longer valid */
                }
        }
 qsec_out:
-       if (buf_type == CIFS_SMALL_BUFFER)
-               cifs_small_buf_release(iov[0].iov_base);
-       else if (buf_type == CIFS_LARGE_BUFFER)
-               cifs_buf_release(iov[0].iov_base);
+       free_rsp_buf(buf_type, iov[0].iov_base);
 /*     cifs_small_buf_release(pSMB); */ /* Freed earlier now in SendReceive2 */
        return rc;
 }
 
        return;
 }
 
+void
+free_rsp_buf(int resp_buftype, void *rsp)
+{
+       if (resp_buftype == CIFS_SMALL_BUFFER)
+               cifs_small_buf_release(rsp);
+       else if (resp_buftype == CIFS_LARGE_BUFFER)
+               cifs_buf_release(rsp);
+}
+
 /* NB: MID can not be set if treeCon not passed in, in that
    case it is responsbility of caller to set the mid */
 void