The Samba-Bugzilla – Attachment 13768 Details for
Bug 13130
smbd on disk file corruption bug under heavy threaded load.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 4.7.next.
bug-13130-4.7.patch (text/plain), 2.06 KB, created by
Jeremy Allison
on 2017-11-11 03:44:31 UTC
(
hide
)
Description:
git-am fix for 4.7.next.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2017-11-11 03:44:31 UTC
Size:
2.06 KB
patch
obsolete
>From b54c3c85cb8bbcfcba83a56b427c065a9b43b983 Mon Sep 17 00:00:00 2001 >From: Volker Lendecke <vl@samba.org> >Date: Fri, 10 Nov 2017 21:22:26 +0100 >Subject: [PATCH] tevent: Fix a race condition > >We can't rely on tctx to exist after we unlocked the mutex. It took a >while, but this does lead to data corruption. If *tctx is replaced with >something where tctx->wakeup_fd points to a real, existing file >descriptor, we're screwed. And by screwed, this means file corruption >on disk. > >Again. I am not tall enough for this business. > >http://bholley.net/blog/2015/must-be-this-tall-to-write-multi-threaded-code.html > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=13130 > >Signed-off-by: Volker Lendecke <vl@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Sat Nov 11 03:20:09 CET 2017 on sn-devel-144 > >(cherry picked from commit 20cfcb7dbc5dd099384b76a76e3d35cf627100b6) >--- > lib/tevent/tevent_threads.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > >diff --git a/lib/tevent/tevent_threads.c b/lib/tevent/tevent_threads.c >index 4d1a8805181..2e83f1b66c2 100644 >--- a/lib/tevent/tevent_threads.c >+++ b/lib/tevent/tevent_threads.c >@@ -451,7 +451,7 @@ void _tevent_threaded_schedule_immediate(struct tevent_threaded_context *tctx, > { > #ifdef HAVE_PTHREAD > struct tevent_context *ev; >- int ret; >+ int ret, wakeup_fd; > > ret = pthread_mutex_lock(&tctx->event_ctx_mutex); > if (ret != 0) { >@@ -495,6 +495,8 @@ void _tevent_threaded_schedule_immediate(struct tevent_threaded_context *tctx, > abort(); > } > >+ wakeup_fd = tctx->wakeup_fd; >+ > ret = pthread_mutex_unlock(&tctx->event_ctx_mutex); > if (ret != 0) { > abort(); >@@ -510,7 +512,7 @@ void _tevent_threaded_schedule_immediate(struct tevent_threaded_context *tctx, > * than a noncontended one. So I'd opt for the lower footprint > * initially. Maybe we have to change that later. > */ >- tevent_common_wakeup_fd(tctx->wakeup_fd); >+ tevent_common_wakeup_fd(wakeup_fd); > #else > /* > * tevent_threaded_context_create() returned NULL with ENOSYS... >-- >2.14.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
vl
:
review+
Actions:
View
Attachments on
bug 13130
:
13766
|
13767
| 13768 |
13769
|
13777
|
13778