git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git]
/
fs
/
smbfs
/
request.c
diff --git
a/fs/smbfs/request.c
b/fs/smbfs/request.c
index
8432a55
..
c71dd27
100644
(file)
--- a/
fs/smbfs/request.c
+++ b/
fs/smbfs/request.c
@@
-27,6
+27,8
@@
/* cache for request structures */
static kmem_cache_t *req_cachep;
/* cache for request structures */
static kmem_cache_t *req_cachep;
+static int smb_request_send_req(struct smb_request *req);
+
/*
/proc/slabinfo:
name, active, num, objsize, active_slabs, num_slaps, #pages
/*
/proc/slabinfo:
name, active, num, objsize, active_slabs, num_slaps, #pages
@@
-66,7
+68,7
@@
static struct smb_request *smb_do_alloc_request(struct smb_sb_info *server,
goto out;
if (bufsize > 0) {
goto out;
if (bufsize > 0) {
- buf =
smb_
kmalloc(bufsize, GFP_NOFS);
+ buf = kmalloc(bufsize, GFP_NOFS);
if (!buf) {
kmem_cache_free(req_cachep, req);
return NULL;
if (!buf) {
kmem_cache_free(req_cachep, req);
return NULL;
@@
-122,9
+124,8
@@
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))
{
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);
+ kfree(req->rq_buffer);
+ kfree(req->rq_trans2buffer);
kmem_cache_free(req_cachep, req);
}
kmem_cache_free(req_cachep, req);
}
@@
-132,7
+133,7
@@
static void smb_free_request(struct smb_request *req)
* What prevents a rget to race with a rput? The count must never drop to zero
* while it is in use. Only rput if it is ok that it is free'd.
*/
* What prevents a rget to race with a rput? The count must never drop to zero
* while it is in use. Only rput if it is ok that it is free'd.
*/
-void smb_rget(struct smb_request *req)
+
static
void smb_rget(struct smb_request *req)
{
atomic_inc(&req->rq_count);
}
{
atomic_inc(&req->rq_count);
}
@@
-181,8
+182,7
@@
static int smb_setup_request(struct smb_request *req)
req->rq_err = 0;
req->rq_errno = 0;
req->rq_fragment = 0;
req->rq_err = 0;
req->rq_errno = 0;
req->rq_fragment = 0;
- if (req->rq_trans2buffer)
- smb_kfree(req->rq_trans2buffer);
+ kfree(req->rq_trans2buffer);
return 0;
}
return 0;
}
@@
-339,9
+339,11
@@
int smb_add_request(struct smb_request *req)
/*
* On timeout or on interrupt we want to try and remove the
* request from the recvq/xmitq.
/*
* On timeout or on interrupt we want to try and remove the
* request from the recvq/xmitq.
+ * First check if the request is still part of a queue. (May
+ * have been removed by some error condition)
*/
smb_lock_server(server);
*/
smb_lock_server(server);
- if (!
(req->rq_flags & SMB_REQ_RECEIVED
)) {
+ if (!
list_empty(&req->rq_queue
)) {
list_del_init(&req->rq_queue);
smb_rput(req);
}
list_del_init(&req->rq_queue);
smb_rput(req);
}
@@
-379,7
+381,7
@@
int smb_add_request(struct smb_request *req)
* Send a request and place it on the recvq if successfully sent.
* Must be called with the server lock held.
*/
* Send a request and place it on the recvq if successfully sent.
* Must be called with the server lock held.
*/
-int smb_request_send_req(struct smb_request *req)
+
static
int smb_request_send_req(struct smb_request *req)
{
struct smb_sb_info *server = req->rq_server;
int result;
{
struct smb_sb_info *server = req->rq_server;
int result;
@@
-645,10
+647,9
@@
static int smb_recv_trans2(struct smb_sb_info *server, struct smb_request *req)
goto out_too_long;
req->rq_trans2bufsize = buf_len;
goto out_too_long;
req->rq_trans2bufsize = buf_len;
- req->rq_trans2buffer =
smb_km
alloc(buf_len, GFP_NOFS);
+ req->rq_trans2buffer =
kz
alloc(buf_len, GFP_NOFS);
if (!req->rq_trans2buffer)
goto out_no_mem;
if (!req->rq_trans2buffer)
goto out_no_mem;
- memset(req->rq_trans2buffer, 0, buf_len);
req->rq_parm = req->rq_trans2buffer;
req->rq_data = req->rq_trans2buffer + parm_tot;
req->rq_parm = req->rq_trans2buffer;
req->rq_data = req->rq_trans2buffer + parm_tot;
@@
-784,8
+785,7
@@
int smb_request_recv(struct smb_sb_info *server)
/* We should never be called with any of these states */
case SMB_RECV_END:
case SMB_RECV_REQUEST:
/* We should never be called with any of these states */
case SMB_RECV_END:
case SMB_RECV_REQUEST:
- server->rstate = SMB_RECV_END;
- break;
+ BUG();
}
if (result < 0) {
}
if (result < 0) {