Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 302073 Details for
Bug 441960
PA isn't typesafe in its use of SHM when taking into account wordsize
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
patch - use uint64_t everywhere, so the segments can match across wordsizes
pulseaudio-0.9.10-types.patch (text/plain), 5.78 KB, created by
Bill Nottingham
on 2008-04-10 20:53:28 UTC
(
hide
)
Description:
patch - use uint64_t everywhere, so the segments can match across wordsizes
Filename:
MIME Type:
Creator:
Bill Nottingham
Created:
2008-04-10 20:53:28 UTC
Size:
5.78 KB
patch
obsolete
>diff -up pulseaudio-0.9.10/src/pulsecore/shm.c.types pulseaudio-0.9.10/src/pulsecore/shm.c >--- pulseaudio-0.9.10/src/pulsecore/shm.c.types 2008-04-10 16:02:39.000000000 -0400 >+++ pulseaudio-0.9.10/src/pulsecore/shm.c 2008-04-10 16:03:41.000000000 -0400 >@@ -73,10 +73,10 @@ > struct shm_marker { > pa_atomic_t marker; /* 0xbeefcafe */ > pa_atomic_t pid; >- void *_reserverd1; >- void *_reserverd2; >- void *_reserverd3; >- void *_reserverd4; >+ unsigned long long _reserverd1; >+ unsigned long long _reserverd2; >+ unsigned long long _reserverd3; >+ unsigned long long _reserverd4; > }; > > static char *segment_name(char *fn, size_t l, unsigned id) { >diff -up pulseaudio-0.9.10/src/pulsecore/atomic.h.types pulseaudio-0.9.10/src/pulsecore/atomic.h >--- pulseaudio-0.9.10/src/pulsecore/atomic.h.types 2008-04-10 16:04:01.000000000 -0400 >+++ pulseaudio-0.9.10/src/pulsecore/atomic.h 2008-04-10 16:09:13.000000000 -0400 >@@ -87,10 +87,10 @@ static inline int pa_atomic_cmpxchg(pa_a > } > > typedef struct pa_atomic_ptr { >- volatile unsigned long value; >+ volatile unsigned long long value; > } pa_atomic_ptr_t; > >-#define PA_ATOMIC_PTR_INIT(v) { .value = (long) (v) } >+#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long long) (v) } > > static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) { > __sync_synchronize(); >@@ -98,12 +98,12 @@ static inline void* pa_atomic_ptr_load(c > } > > static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) { >- a->value = (unsigned long) p; >+ a->value = (unsigned long long) p; > __sync_synchronize(); > } > > static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) { >- return __sync_bool_compare_and_swap(&a->value, (long) old_p, (long) new_p); >+ return __sync_bool_compare_and_swap(&a->value, (unsigned long long) old_p, (unsigned long long) new_p); > } > > #elif defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__)) >@@ -159,17 +159,17 @@ static inline int pa_atomic_cmpxchg(pa_a > } > > typedef struct pa_atomic_ptr { >- volatile unsigned long value; >+ volatile unsigned long long value; > } pa_atomic_ptr_t; > >-#define PA_ATOMIC_PTR_INIT(v) { .value = (long) (v) } >+#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long long) (v) } > > static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) { > return (void*) a->value; > } > > static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) { >- a->value = (unsigned long) p; >+ a->value = (unsigned long long) p; > } > > static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) { >@@ -212,7 +212,7 @@ static inline void pa_atomic_store(pa_at > > /* Returns the previously set value */ > static inline int pa_atomic_add(pa_atomic_t *a, int i) { >- unsigned long not_exclusive; >+ unsigned long long not_exclusive; > int new_val, old_val; > > pa_memory_barrier(); >@@ -231,7 +231,7 @@ static inline int pa_atomic_add(pa_atomi > > /* Returns the previously set value */ > static inline int pa_atomic_sub(pa_atomic_t *a, int i) { >- unsigned long not_exclusive; >+ unsigned long long not_exclusive; > int new_val, old_val; > > pa_memory_barrier(); >@@ -257,7 +257,7 @@ static inline int pa_atomic_dec(pa_atomi > } > > static inline int pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) { >- unsigned long not_equal, not_exclusive; >+ unsigned long long not_equal, not_exclusive; > > pa_memory_barrier(); > do { >@@ -275,10 +275,10 @@ static inline int pa_atomic_cmpxchg(pa_a > } > > typedef struct pa_atomic_ptr { >- volatile unsigned long value; >+ volatile unsigned long long value; > } pa_atomic_ptr_t; > >-#define PA_ATOMIC_PTR_INIT(v) { .value = (long) (v) } >+#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long long) (v) } > > static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) { > pa_memory_barrier(); >@@ -286,12 +286,12 @@ static inline void* pa_atomic_ptr_load(c > } > > static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) { >- a->value = (unsigned long) p; >+ a->value = (unsigned long long) p; > pa_memory_barrier(); > } > > static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) { >- unsigned long not_equal, not_exclusive; >+ unsigned long long not_equal, not_exclusive; > > pa_memory_barrier(); > do { >@@ -331,7 +331,7 @@ typedef int (__kernel_cmpxchg_t)(int old > #define __kernel_cmpxchg (*(__kernel_cmpxchg_t *)0xffff0fc0) > > /* This is just to get rid of all warnings */ >-typedef int (__kernel_cmpxchg_u_t)(unsigned long oldval, unsigned long newval, volatile unsigned long *ptr); >+typedef int (__kernel_cmpxchg_u_t)(unsigned long long oldval, unsigned long long newval, volatile unsigned long long *ptr); > #define __kernel_cmpxchg_u (*(__kernel_cmpxchg_u_t *)0xffff0fc0) > > typedef struct pa_atomic { >@@ -388,10 +388,10 @@ static inline int pa_atomic_cmpxchg(pa_a > } > > typedef struct pa_atomic_ptr { >- volatile unsigned long value; >+ volatile unsigned long long value; > } pa_atomic_ptr_t; > >-#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long) (v) } >+#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long long) (v) } > > static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) { > pa_memory_barrier(); >@@ -399,14 +399,14 @@ static inline void* pa_atomic_ptr_load(c > } > > static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) { >- a->value = (unsigned long) p; >+ a->value = (unsigned long long) p; > pa_memory_barrier(); > } > > static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) { > int failed = 1; > do { >- failed = __kernel_cmpxchg_u((unsigned long) old_p, (unsigned long) new_p, &a->value); >+ failed = __kernel_cmpxchg_u((unsigned long long) old_p, (unsigned long long) new_p, &a->value); > } while(failed && a->value == old_p); > return !failed; > }
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 Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 441960
: 302073