diff --git a/diff.module b/diff.module
index 0e330d1..c4010f6 100644
--- a/diff.module
+++ b/diff.module
@@ -104,8 +104,7 @@ function diff_menu() {
     'page callback' => 'diff_latest',
     'page arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
-    'access callback' => 'diff_node_revision_access',
-    'access arguments' => array(1),
+    'access arguments' => array('access content'),
     'tab_parent' => 'node/%/revisions/view',
     'file' => 'diff.pages.inc',
   );
diff --git a/diff.pages.inc b/diff.pages.inc
index 56cccdc..9cbb1ac 100644
--- a/diff.pages.inc
+++ b/diff.pages.inc
@@ -10,6 +10,9 @@
  */
 function diff_latest($node) {
   $revisions = node_revision_list($node);
+  if (count($revisions) < 2 || !diff_node_revision_access($node, 'view')) {
+    drupal_goto('node/' . $node->nid);
+  }
   $new = array_shift($revisions);
   $old = array_shift($revisions);
   drupal_goto("node/{$node->nid}/revisions/view/{$old->vid}/{$new->vid}");
