[PATCH] tomoyo: remove a temporary output file

Masahiro Yamada posted 1 patch 2 years, 8 months ago
security/tomoyo/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] tomoyo: remove a temporary output file
Posted by Masahiro Yamada 2 years, 8 months ago
Commit 8ab5bc40aad4 ("tomoyo: Omit use of bin2c") was locally modified
on top of the patch I submitted.

I recommend writing to the target directly.

If the recipe command fails, Kbuild will automatically delete the target
because scripts/Kbuild.include defines .DELETE_ON_ERROR.

If the recipe command is interrupted, GNU Make will automatically
delete the target if it has been partially updated. There was a corner
case where the target was not cleaned up, but it was fixed by Commit
a7f3257da8a8 ("kbuild: remove the target in signal traps when
interrupted").

Since this is a general problem, you can leave it to Kbuild instead
of introducing unneeded complexity.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

If it is not too late, please squash this.

 security/tomoyo/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/security/tomoyo/Makefile b/security/tomoyo/Makefile
index 458cf5e2fa25..884ff155edc3 100644
--- a/security/tomoyo/Makefile
+++ b/security/tomoyo/Makefile
@@ -9,7 +9,7 @@ quiet_cmd_policy = POLICY  $@
 	printf 'static char tomoyo_builtin_$x[] __initdata =\n'; \
 	sed -e 's/\\/\\\\/g' -e 's/\"/\\"/g' -e 's/\(.*\)/\t"\1\\n"/' -- $(firstword $(filter %/$x.conf %/$x.conf.default, $^) /dev/null);  \
 	printf '\t"";\n';) \
-	} > $@.tmp && mv $@.tmp $@
+	} > $@
 
 $(obj)/builtin-policy.h: $(wildcard $(obj)/policy/*.conf $(srctree)/$(src)/policy/*.conf.default) FORCE
 	$(call if_changed,policy)
-- 
2.34.1
Re: [PATCH] tomoyo: remove a temporary output file
Posted by Tetsuo Handa 2 years, 8 months ago
On 2023/01/09 18:19, Masahiro Yamada wrote:
> Since this is a general problem, you can leave it to Kbuild instead
> of introducing unneeded complexity.

> If it is not too late, please squash this.

It is not too late to apply. But how do you handle a case where
the process who is responsible for deleting incomplete file was
killed by e.g. OOM-killer?
Re: [PATCH] tomoyo: remove a temporary output file
Posted by Masahiro Yamada 2 years, 8 months ago
On Mon, Jan 9, 2023 at 7:01 PM Tetsuo Handa
<penguin-kernel@i-love.sakura.ne.jp> wrote:
>
> On 2023/01/09 18:19, Masahiro Yamada wrote:
> > Since this is a general problem, you can leave it to Kbuild instead
> > of introducing unneeded complexity.
>
> > If it is not too late, please squash this.
>
> It is not too late to apply. But how do you handle a case where
> the process who is responsible for deleting incomplete file was
> killed by e.g. OOM-killer?
>


Good point.
That is a rare case that Kbuild cannot handle.

One idea is to make if_changed to write the command to *.cmd.tmp
and rename it to *.cmd after everything succeeds.
So, it is a similar approach, but the difference is that
it is done in the Kbuild core scripts instead of every command.
I will consider it.


--
Best Regards

Masahiro Yamada
Re: [PATCH] tomoyo: remove a temporary output file
Posted by Tetsuo Handa 2 years, 8 months ago
On 2023/01/09 20:35, Masahiro Yamada wrote:
> One idea is to make if_changed to write the command to *.cmd.tmp
> and rename it to *.cmd after everything succeeds.
> So, it is a similar approach, but the difference is that
> it is done in the Kbuild core scripts instead of every command.
> I will consider it.

I see. Applied as
https://osdn.net/projects/tomoyo/scm/git/tomoyo-test1/commits/80f8be7af03ffe90dc4df998b16bfa212afbdde9 .

Thank you.