[PATCH] Fix Java profiling regression bug from Aug 13 Coverity fixes

Maynard Johnson <[email protected]>
Newsgroups gmane.linux.oprofile
Message-ID <[email protected]>
Fix Java profiling regression bug from Aug 13 Coverity fixes

One of the changes made in the Aug 13 commit to fix issues
identified by Coverity caused a regression in oprofile's JIT
support. The libopagent.so (used by libjvm[t|p]i.so) may incorrectly
return an error from the op_write_native_code function. This patch
fixes that issue.

Signed-off-by: Maynard Johnson <[email protected]>
---
 libopagent/opagent.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/libopagent/opagent.c b/libopagent/opagent.c
index f567f9e..431dfae 100644
--- a/libopagent/opagent.c
+++ b/libopagent/opagent.c
@@ -374,17 +374,22 @@ again:
 	 */
 	if (fwrite_unlocked(&rec, sizeof(rec), 1, dumpfile) &&
 	    fwrite_unlocked(symbol_name, sz_symb_name, 1, dumpfile)) {
-		size_t sz = 0;
-		if (code)
+		size_t expected_sz, sz;
+		expected_sz = sz = 0;
+		if (code) {
 			sz = fwrite_unlocked(code, size, 1, dumpfile);
-		if (padding_count)
+			expected_sz++;
+		}
+		if (padding_count) {
 			sz += fwrite_unlocked(pad_bytes, padding_count, 1, dumpfile);
+			expected_sz++;
+		}
 		/* Always flush to ensure conversion code to elf will see
 		 * data as soon as possible */
 		fflush_unlocked(dumpfile);
 		funlockfile(dumpfile);
 		flock(dumpfd, LOCK_UN);
-		if (sz != 2) {
+		if (sz != expected_sz) {
 			printf("opagent: fwrite_unlocked failed");
 			return -1;
 		}
-- 
1.7.1


------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.