aboutsummaryrefslogtreecommitdiffstats
path: root/package/broadcom-wl/patches
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-06-14 11:00:30 +0000
committerFelix Fietkau <nbd@openwrt.org>2010-06-14 11:00:30 +0000
commitc0c5a37f6fbb321ceb74ba06f321a47aad7fc547 (patch)
treecb96e071aad517955a9451f62f215a53f7d98a70 /package/broadcom-wl/patches
parent8ba6124abeb70301c2c53f632339b5f74b0d1634 (diff)
downloadupstream-c0c5a37f6fbb321ceb74ba06f321a47aad7fc547.tar.gz
upstream-c0c5a37f6fbb321ceb74ba06f321a47aad7fc547.tar.bz2
upstream-c0c5a37f6fbb321ceb74ba06f321a47aad7fc547.zip
rename broadcom-wl to broadcom-wl-old
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21794 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/broadcom-wl/patches')
-rw-r--r--package/broadcom-wl/patches/100-timer_fix.patch51
1 files changed, 0 insertions, 51 deletions
diff --git a/package/broadcom-wl/patches/100-timer_fix.patch b/package/broadcom-wl/patches/100-timer_fix.patch
deleted file mode 100644
index d1ce9c9821..0000000000
--- a/package/broadcom-wl/patches/100-timer_fix.patch
+++ /dev/null
@@ -1,51 +0,0 @@
---- a/router/shared/linux_timer.c
-+++ b/router/shared/linux_timer.c
-@@ -94,6 +94,7 @@ typedef long uclock_t;
- #define TFLAG_NONE 0
- #define TFLAG_CANCELLED (1<<0)
- #define TFLAG_DELETED (1<<1)
-+#define TFLAG_QUEUED (1<<2)
-
- struct event {
- struct timeval it_interval;
-@@ -207,6 +208,7 @@ int timer_create(
-
- event_freelist = event->next;
- event->next = NULL;
-+ event->flags &= ~TFLAG_QUEUED;
-
- check_event_queue();
-
-@@ -387,6 +389,7 @@ int timer_settime
- }
-
- event->flags &= ~TFLAG_CANCELLED;
-+ event->flags |= TFLAG_QUEUED;
-
- unblock_timer();
-
-@@ -502,7 +505,15 @@ static void alarm_handler(int i)
- (*(event->func))((timer_t) event, (int)event->arg);
-
- /* If the event has been cancelled, do NOT put it back on the queue. */
-- if (!(event->flags & TFLAG_CANCELLED)) {
-+ /* Check for TFLAG_QUEUED is to avoid pathologic case, when after
-+ * dequeueing event handler deletes its own timer and allocates new one
-+ * which (at least in some cases) gets the same pointer and thus its
-+ * 'flags' will be rewritten, most notably TFLAG_CANCELLED, and, to
-+ * complete the disaster, it will be queued. alarm_handler tries to
-+ * enqueue 'event' (which is on the same memory position as newly
-+ * allocated timer), which results in queueing the same pointer once
-+ * more. And this way, loop in event queue is created. */
-+ if ( !(event->flags & TFLAG_CANCELLED) && !(event->flags & TFLAG_QUEUED) ) {
-
- /* if the event is a recurring event, reset the timer and
- * find its correct place in the sorted list of events.
-@@ -545,6 +556,7 @@ static void alarm_handler(int i)
- /* link our new event into the pending event queue. */
- event->next = *ppevent;
- *ppevent = event;
-+ event->flags |= TFLAG_QUEUED;
- } else {
- /* there is no interval, so recycle the event structure.
- * timer_delete((timer_t) event);