diff --git a/scripts/tags.sh b/scripts/tags.sh
index d52f7a01557c1b28cf3155a640c175ce613558aa..1a0c44d7c4a75308ca6addf915a6951cf30a603d 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -89,7 +89,13 @@ all_defconfigs()
 
 docscope()
 {
-	(echo \-k; echo \-q; all_sources) > cscope.files
+	# always use absolute paths for cscope, as recommended by cscope
+	# upstream
+	case "$tree" in
+		/*) ;;
+		*) tree=$PWD/$tree ;;
+	esac
+	(cd /; echo \-k; echo \-q; all_sources) > cscope.files
 	cscope -b -f cscope.out
 }