threads / discuss / 2971

fix potential deadlock in create_one_file

Subject: fix potential deadlock in create_one_file

## tl;dr

2 messages between Jan 5, 2006 and Jan 6, 2006.

replies: 1people: 2as markdown or json

Alex Riesen· Jan 5, 2006, 09:00 UTC · lore

It can happen if the temporary file already exists (i.e. after a panic and reboot).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Subject: [PATCH] fix potential deadlock in create_one_file.
It can happen if the temporary file already exists.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 apply.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
f7ac9127638a013d0f1d60e02a06fde10909824c
diff --git a/apply.c b/apply.c
index d5e7bfd..ff3782b 100644
--- a/apply.c
+++ b/apply.c
@@ -1635,7 +1635,8 @@ static void create_one_file(const char *
 			}
 			if (errno != EEXIST)
 				break;
-		}			
+			++nr;
+		}
 	}
 	die("unable to write file %s mode %o", path, mode);
 }
-- 
1.0.GIT
Junio C Hamano· Jan 6, 2006, 22:38 UTC · re: Alex Riesen · lore

Re: fix potential deadlock in create_one_file

Alex Riesen <raa.lkml@gmail.com> writes:
> It can happen if the temporary file already exists (i.e. after a panic
> and reboot).

We use pid here and using somebody else's pid feels wrong but that is only for collision avoidance, mktemp(3) is no better, and neither tmpfile(3) nor mkstemp(3) are usable for directories anyway, so your patch as is would be the best solution.

Thanks.

← back to recent threads