endif
 
 all: khdr
-       @for TARGET in $(TARGETS); do           \
-               BUILD_TARGET=$$BUILD/$$TARGET;  \
-               mkdir $$BUILD_TARGET  -p;       \
-               $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET;\
-       done;
+       @ret=1;                                                 \
+       for TARGET in $(TARGETS); do                            \
+               BUILD_TARGET=$$BUILD/$$TARGET;                  \
+               mkdir $$BUILD_TARGET  -p;                       \
+               $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET;      \
+               ret=$$((ret * $$?));                            \
+       done; exit $$ret;
 
 run_tests: all
        @for TARGET in $(TARGETS); do \
        install -m 744 kselftest/module.sh $(INSTALL_PATH)/kselftest/
        install -m 744 kselftest/runner.sh $(INSTALL_PATH)/kselftest/
        install -m 744 kselftest/prefix.pl $(INSTALL_PATH)/kselftest/
-       @for TARGET in $(TARGETS); do \
+       @ret=1; \
+       for TARGET in $(TARGETS); do \
                BUILD_TARGET=$$BUILD/$$TARGET;  \
                $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
-       done;
+               ret=$$((ret * $$?));            \
+       done; exit $$ret;
 
        @# Ask all targets to emit their test scripts
        echo "#!/bin/sh" > $(ALL_SCRIPT)