At Thu, 30 May 2013 10:57:49 +0800, 王帆 wrote: > > From 52e90e362e5413de4d424bc12102077402f6144f Mon Sep 17 00:00:00 2001 > From: wangfan <wangfan1985 at gmail.com> > Date: Thu, 30 May 2013 10:22:46 +0800 > Subject: [PATCH] sheep: return directly when sending data fails. > > when send data fails,do_client_rx will free struct client_info. > call do_client_tx will access freed memory. > > Signed-off-by: wangfan <wangfan1985 at gmail.com> > --- > sheep/request.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/sheep/request.c b/sheep/request.c > index e99f6f2..91e1f06 100644 > --- a/sheep/request.c > +++ b/sheep/request.c > @@ -613,12 +613,13 @@ static inline void finish_rx(struct client_info *ci) > queue_request(req); > } > > -static void do_client_rx(struct client_info *ci) > +static int do_client_rx(struct client_info *ci) > { > if (begin_rx(ci) < 0) > - return; > + return -1; > > finish_rx(ci); > + return SD_RES_SUCCESS; SD_RES_xxxx is a result code for SD_OP_xxxx. We should return 0 here. Thanks, Kazutaka |