Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 230979 Details for
Bug 269291
net-fs/fusesmb isn't threadsafe and needs to be patched
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
the corresponding patch (from the debian bug report)
fusesmb-mutex.patch (text/plain), 4.93 KB, created by
Sandy
on 2010-05-10 15:27:46 UTC
(
hide
)
Description:
the corresponding patch (from the debian bug report)
Filename:
MIME Type:
Creator:
Sandy
Created:
2010-05-10 15:27:46 UTC
Size:
4.93 KB
patch
obsolete
>--- fusesmb-0.8.7/fusesmb.c 2007-09-06 19:02:44.000000000 -0500 >+++ fusesmb-0.8.7.new/fusesmb.c 2009-03-30 15:27:43.000000000 -0500 >@@ -53,7 +53,6 @@ > */ > > static pthread_mutex_t ctx_mutex = PTHREAD_MUTEX_INITIALIZER; >-static pthread_mutex_t rwd_ctx_mutex = PTHREAD_MUTEX_INITIALIZER; > static SMBCCTX *ctx, *rwd_ctx; > pthread_t cleanup_thread; > >@@ -129,11 +128,9 @@ > > pthread_mutex_lock(&ctx_mutex); > ctx->callbacks.purge_cached_fn(ctx); >- pthread_mutex_unlock(&ctx_mutex); > >- pthread_mutex_lock(&rwd_ctx_mutex); > rwd_ctx->callbacks.purge_cached_fn(rwd_ctx); >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > /* > * Look every minute in the notfound cache for items that are > * no longer used >@@ -204,11 +201,9 @@ > { > pthread_mutex_lock(&ctx_mutex); > ctx->timeout = opts.global_timeout * 1000; >- pthread_mutex_unlock(&ctx_mutex); > >- pthread_mutex_lock(&rwd_ctx_mutex); > rwd_ctx->timeout = opts.global_timeout * 1000; >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > } > > >@@ -536,17 +531,17 @@ > // return -ENOENT; > strcat(smb_path, stripworkgroup(path)); > >- pthread_mutex_lock(&rwd_ctx_mutex); >+ pthread_mutex_lock(&ctx_mutex); > file = rwd_ctx->open(rwd_ctx, smb_path, fi->flags, 0); > > if (file == NULL) > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > > fi->fh = (unsigned long)file; >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return 0; > } > >@@ -563,7 +558,7 @@ > int tries = 0; //For number of retries before failing > ssize_t ssize; //Returned by ctx->read > >- pthread_mutex_lock(&rwd_ctx_mutex); >+ pthread_mutex_lock(&ctx_mutex); > /* Ugly goto but it works ;) But IMHO easiest solution for error handling here */ > goto seek; > reopen: >@@ -575,7 +570,7 @@ > tries++; > if (tries > 4) > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > goto reopen; >@@ -583,7 +578,7 @@ > /* Other errors from docs cannot be recovered from so returning the error */ > else > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > } >@@ -600,7 +595,7 @@ > else > { > //SMB Init failed >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > } >@@ -614,11 +609,11 @@ > /* Tried opening a directory / or smb_init failed */ > else > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > } >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return (size_t) ssize; > } > >@@ -632,7 +627,7 @@ > int tries = 0; //For number of retries before failing > ssize_t ssize; //Returned by ctx->read > >- pthread_mutex_lock(&rwd_ctx_mutex); >+ pthread_mutex_lock(&ctx_mutex); > /* Ugly goto but it works ;) But IMHO easiest solution for error handling here */ > goto seek; > reopen: >@@ -644,13 +639,13 @@ > tries++; > if (tries > 4) > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > goto reopen; > } > /* Other errors from docs cannot be recovered from so returning the error */ >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > > } >@@ -667,7 +662,7 @@ > else > { > //SMB Init failed >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > } >@@ -681,24 +676,24 @@ > /* Tried opening a directory / or smb_init failed */ > else > { >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return -errno; > } > } >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return (size_t) ssize; > } > > static int fusesmb_release(const char *path, struct fuse_file_info *fi) > { > (void)path; >- pthread_mutex_lock(&rwd_ctx_mutex); >+ pthread_mutex_lock(&ctx_mutex); > #ifdef HAVE_LIBSMBCLIENT_CLOSE_FN > rwd_ctx->close_fn(rwd_ctx, (SMBCFILE *)fi->fh); > #else > rwd_ctx->close(rwd_ctx, (SMBCFILE *)fi->fh); > #endif >- pthread_mutex_unlock(&rwd_ctx_mutex); >+ pthread_mutex_unlock(&ctx_mutex); > return 0; > > }
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
Actions:
View
Attachments on
bug 269291
:
230977
| 230979