Kamil Dudka 3f974d
diff --git a/setfacl/setfacl.c b/setfacl/setfacl.c
Kamil Dudka 3f974d
index 091b9cc..be34e69 100644
Kamil Dudka 3f974d
--- a/setfacl/setfacl.c
Kamil Dudka 3f974d
+++ b/setfacl/setfacl.c
Kamil Dudka 3f974d
@@ -76,7 +76,7 @@ struct option long_options[] = {
Kamil Dudka 3f974d
 const char *progname;
Kamil Dudka 3f974d
 const char *cmd_line_options, *cmd_line_spec;
Kamil Dudka 3f974d
 
Kamil Dudka 3f974d
-int walk_flags = WALK_TREE_DEREFERENCE;
Kamil Dudka 3f974d
+int walk_flags = WALK_TREE_DEREFERENCE_TOPLEVEL;
Kamil Dudka 3f974d
 int opt_recalculate;  /* recalculate mask entry (0=default, 1=yes, -1=no) */
Kamil Dudka 3f974d
 int opt_promote;  /* promote access ACL to default ACL */
Kamil Dudka 3f974d
 int opt_test;  /* do not write to the file system.
Kamil Dudka 3f974d
@@ -580,13 +580,14 @@ int main(int argc, char *argv[])
Kamil Dudka 3f974d
 				break;
Kamil Dudka 3f974d
 
Kamil Dudka 3f974d
 			case 'L':  /* follow symlinks */
Kamil Dudka 3f974d
-				walk_flags |= WALK_TREE_LOGICAL;
Kamil Dudka 3f974d
+				walk_flags |= WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE;
Kamil Dudka 3f974d
 				walk_flags &= ~WALK_TREE_PHYSICAL;
Kamil Dudka 3f974d
 				break;
Kamil Dudka 3f974d
 
Kamil Dudka 3f974d
 			case 'P':  /* do not follow symlinks */
Kamil Dudka 3f974d
 				walk_flags |= WALK_TREE_PHYSICAL;
Kamil Dudka 3f974d
-				walk_flags &= ~WALK_TREE_LOGICAL;
Kamil Dudka 3f974d
+				walk_flags &= ~(WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE |
Kamil Dudka 3f974d
+						WALK_TREE_DEREFERENCE_TOPLEVEL);
Kamil Dudka 3f974d
 				break;
Kamil Dudka 3f974d
 
Kamil Dudka 3f974d
 			case 't':  /* test mode */