init: Fix load_firmware error
In function 'load_firmware', parameter 'buf' passed to 'write'
is wrong. To fix it, use android::base::WriteFully to replace.
Change-Id: I13f79bdc9be9e5eb669f6bd975535b1dce965ef0
Signed-off-by: Biao Lu <biao.lu@intel.com>
diff --git a/init/devices.cpp b/init/devices.cpp
index d556e30..39cd706 100644
--- a/init/devices.cpp
+++ b/init/devices.cpp
@@ -40,6 +40,7 @@
#include <sys/time.h>
#include <sys/wait.h>
+#include <android-base/file.h>
#include <cutils/list.h>
#include <cutils/uevent.h>
@@ -769,21 +770,13 @@
ret = -1;
break;
}
-
- len_to_copy -= nr;
- while (nr > 0) {
- ssize_t nw = 0;
-
- nw = write(data_fd, buf + nw, nr);
- if(nw <= 0) {
- ret = -1;
- goto out;
- }
- nr -= nw;
+ if (!android::base::WriteFully(data_fd, buf, nr)) {
+ ret = -1;
+ break;
}
+ len_to_copy -= nr;
}
-out:
if(!ret)
write(loading_fd, "0", 1); /* successful end of transfer */
else