diff --git a/pre-upload.py b/pre-upload.py
index ce994f5..26b0a7e 100755
--- a/pre-upload.py
+++ b/pre-upload.py
@@ -19,6 +19,7 @@
 import functools
 import json
 import os
+import pathlib
 import re
 import sys
 import stat
@@ -1047,14 +1048,27 @@
     else:
       return obj.dst_file
 
+  def AllowedPath(obj):
+    allowed_files = {'ChangeLog', 'Manifest', 'metadata.xml'}
+    allowed_directories = {'profiles'}
+
+    affected = pathlib.Path(FinalName(obj))
+    if affected.name in allowed_files:
+      return True
+
+    for directory in allowed_directories:
+      if directory in affected.parts:
+        return True
+
+    return False
+
   affected_path_objs = _get_affected_files(
       commit, include_deletes=True, include_symlinks=True, relative=True,
       full_details=True)
 
-  # Don't yell about changes to allowed files...
-  allowlist = {'ChangeLog', 'Manifest', 'metadata.xml'}
+  # Don't yell about changes to allowed files or directories...
   affected_path_objs = [x for x in affected_path_objs
-                        if os.path.basename(FinalName(x)) not in allowlist]
+                        if not AllowedPath(x)]
   if not affected_path_objs:
     return None
 
diff --git a/pre-upload_unittest.py b/pre-upload_unittest.py
index ccd0474..4a98523 100755
--- a/pre-upload_unittest.py
+++ b/pre-upload_unittest.py
@@ -1726,6 +1726,15 @@
     osutils.WriteFile(ebuild_9999_file, 'fake')
     self.assertAccepted([DiffEntry(src_file='c/p/files/f', status='M')])
 
+  def testModifiedFilesAndProfilesWith9999(self):
+    """Accept changes in files/ with a parent 9999 ebuild and profile change"""
+    ebuild_9999_file = os.path.join(self.tempdir, 'c/p/p-9999.ebuild')
+    os.makedirs(os.path.dirname(ebuild_9999_file))
+    osutils.WriteFile(ebuild_9999_file, 'fake')
+    self.assertAccepted([
+        DiffEntry(src_file='c/p/files/f', status='M'),
+        DiffEntry(src_file='c/profiles/base/make.defaults', status='M')])
+
 
 class DirectMainTest(PreUploadTestCase, cros_test_lib.TempDirTestCase):
   """Tests for direct_main()"""
