diff options
author | Volker Lendecke <vl@samba.org> | 2011-08-02 21:16:26 +0200 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2011-08-02 22:33:15 +0200 |
commit | 5068a0d14df8cc6f1b4517c64f4356abc6606b58 (patch) | |
tree | 9e523b2b8026f908ba0229ce84f5f28424e3264e /source3/smbd | |
parent | e114a21cc27504efc31f9be1616b91c6b1fcc59d (diff) | |
download | samba-5068a0d14df8cc6f1b4517c64f4356abc6606b58.tar.gz samba-5068a0d14df8cc6f1b4517c64f4356abc6606b58.tar.bz2 samba-5068a0d14df8cc6f1b4517c64f4356abc6606b58.zip |
s3: Fix smb2 handling error returns from aio
Found when reading with aio_fork beyond the end of file.
Metze, Jeremy, please check!
Without this we get
[2011/08/02 21:02:54.082661, 0] lib/util.c:778(smb_panic_s3)
PANIC (pid 2302): smbd/smb2_read.c:593: Type mismatch: name[NULL] expected[struct smbd_smb2_read_state]
[2011/08/02 21:02:54.094316, 0] lib/util.c:882(log_stack_trace)
BACKTRACE: 23 stack frames:
#0 bin/smbd(log_stack_trace+0x2d) [0xb72873d8]
#1 bin/smbd(smb_panic_s3+0x7c) [0xb7287529]
#2 bin/smbd(smb_panic+0x2f) [0xb7277e1f]
#3 /root/git/s3-work/source3/bin/libtalloc.so.2 [0xb6c6bc48]
#4 /root/git/s3-work/source3/bin/libtalloc.so.2 [0xb6c6ec79]
#5 /root/git/s3-work/source3/bin/libtalloc.so.2(_talloc_get_type_abort+0x34) [0xb6c6ecb3]
#6 bin/smbd [0xb6fbc405]
#7 bin/smbd(_tevent_req_notify_callback+0x4a) [0xb729a85a]
#8 bin/smbd [0xb729a888]
#9 bin/smbd(_tevent_req_done+0x19) [0xb729aa73]
#10 bin/smbd [0xb6fae517]
#11 bin/smbd [0xb6fad258]
#12 bin/smbd(smbd_aio_complete_aio_ex+0xf5) [0xb6fad6e8]
#13 /root/git/inst/modules/vfs/aio_fork.so [0xb66d4992]
#14 bin/smbd(run_events_poll+0x400) [0xb7297df2]
#15 bin/smbd(smbd_process+0xd75) [0xb6f9d3a7]
#16 bin/smbd [0xb756f07b]
#17 bin/smbd(run_events_poll+0x400) [0xb7297df2]
#18 bin/smbd [0xb7298254]
#19 bin/smbd(_tevent_loop_once+0x9e) [0xb72986ac]
#20 bin/smbd(main+0x185c) [0xb7570e59]
#21 /lib/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb6b08455]
#22 bin/smbd [0xb6f14e01]
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Tue Aug 2 22:33:15 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/aio.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/source3/smbd/aio.c b/source3/smbd/aio.c index db2926b4a4..98a35ed206 100644 --- a/source3/smbd/aio.c +++ b/source3/smbd/aio.c @@ -779,6 +779,7 @@ static int handle_aio_smb2_read_complete(struct aio_extra *aio_ex, int errcode) if (!NT_STATUS_IS_OK(status)) { tevent_req_nterror(subreq, status); + return errcode; } tevent_req_done(subreq); @@ -812,6 +813,7 @@ static int handle_aio_smb2_write_complete(struct aio_extra *aio_ex, int errcode) if (!NT_STATUS_IS_OK(status)) { tevent_req_nterror(subreq, status); + return errcode; } tevent_req_done(subreq); |