static void smb_free_request(struct smb_request *req) { atomic_dec(&req->rq_server->nr_requests); if (req->rq_buffer && !(req->rq_flags & SMB_REQ_STATIC)) smb_kfree(req->rq_buffer); if (req->rq_trans2buffer) smb_kfree(req->rq_trans2buffer); kmem_cache_free(req_cachep, req); }
static void smb_put_super(struct super_block *sb) { struct smb_sb_info *server = SMB_SB(sb); smb_lock_server(server); server->state = CONN_INVALID; smbiod_unregister_server(server); smb_close_socket(server); if (server->conn_pid) kill_proc(server->conn_pid, SIGTERM, 1); smb_kfree(server->ops); smb_unload_nls(server); sb->s_fs_info = NULL; smb_unlock_server(server); smb_kfree(server); }
/* * Prepare a "normal" request structure. */ static int smb_setup_request(struct smb_request *req) { int len = smb_len(req->rq_header) + 4; req->rq_slen = len; /* if we expect a data part in the reply we set the iov's to read it */ if (req->rq_resp_bcc) req->rq_setup_read = smb_setup_bcc; /* This tries to support re-using the same request */ req->rq_bytes_sent = 0; req->rq_rcls = 0; req->rq_err = 0; req->rq_errno = 0; req->rq_fragment = 0; if (req->rq_trans2buffer) smb_kfree(req->rq_trans2buffer); return 0; }