From 548f58ebed3853c6f782bc67bc9b3e2700a34e55 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 2 Aug 2011 21:16:26 +0200 Subject: [PATCH] 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 Autobuild-Date: Tue Aug 2 22:33:15 CEST 2011 on sn-devel-104 (cherry picked from commit 5068a0d14df8cc6f1b4517c64f4356abc6606b58) --- 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 0cb94ac..e9d49ce 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); -- 1.7.3.1