diff -Naur modules/forum/forum.module modules/forum/forum.module
--- modules/forum/forum.module	2007-08-08 02:27:22.000000000 -0400
+++ modules/forum/forum.module	2007-11-04 19:42:31.000000000 -0500
@@ -709,6 +709,17 @@
  */
 function forum_get_forums($tid = 0) {
 
+  // This caching breaks forum access! The results of db_rewrite_sql will
+  // be cached, meaning the first user to load this node after a cache
+  // refresh will set the permissions for everyone. If you are using a module
+  // that does query rewriting on forum queries, don't use this patch.
+  // If you're not sure whether or not this is the case, don't use this patch!
+  $cache = cache_get('forums::'. $tid, 'cache_forum');
+  if ($cache) {
+    $forums = unserialize($cache->data);
+    return $forums;
+  }
+
   $forums = array();
   $_forums = taxonomy_get_tree(variable_get('forum_nav_vocabulary', ''), $tid);
 
@@ -754,6 +765,8 @@
     $forums[$forum->tid] = $forum;
   }
 
+  cache_set('forums::'. $tid, 'cache_forum', serialize($forums));
+
   return $forums;
 }
 
