[PATCH] knfsd: svcrpc: WARN() instead of returning an error from svc_take_page
Every caller of svc_take_page ignores its return value and assumes it succeeded. So just WARN() instead of returning an ignored error. This would have saved some time debugging a recent nfsd4 problem. If there are still failure cases here, then the result is probably that we overwrite an earlier part of the reply while xdr-encoding. While the corrupted reply is a nasty bug, it would be worse to panic here and create the possibility of a remote DOS; hence WARN() instead of BUG(). Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@suse.de> Cc: Ingo Oeser <ioe-lkml@rameria.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
dfee55f062
Коммит
6f54e2d0d3
|
@ -197,15 +197,16 @@ svc_take_res_page(struct svc_rqst *rqstp)
|
|||
return rqstp->rq_respages[rqstp->rq_resused++];
|
||||
}
|
||||
|
||||
static inline int svc_take_page(struct svc_rqst *rqstp)
|
||||
static inline void svc_take_page(struct svc_rqst *rqstp)
|
||||
{
|
||||
if (rqstp->rq_arghi <= rqstp->rq_argused)
|
||||
return -ENOMEM;
|
||||
if (rqstp->rq_arghi <= rqstp->rq_argused) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
}
|
||||
rqstp->rq_arghi--;
|
||||
rqstp->rq_respages[rqstp->rq_resused] =
|
||||
rqstp->rq_argpages[rqstp->rq_arghi];
|
||||
rqstp->rq_resused++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void svc_pushback_allpages(struct svc_rqst *rqstp)
|
||||
|
|
Загрузка…
Ссылка в новой задаче