From: Krzysztof Jackiewicz Date: Wed, 24 Aug 2016 14:45:21 +0000 (+0200) Subject: Check tgkill() result X-Git-Tag: accepted/tizen/common/20160905.171334~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db2a9b5a4a4d63a4a514e9fa11677d088b80899c;p=platform%2Fcore%2Fsecurity%2Fsecurity-manager.git Check tgkill() result tgkill() returns an error if we're attempting to send a signal to non-existing thread. If this is the case don't increment the sent signals counter. Change-Id: I1cf10fe5a056e7715660b02647dfdef4a6406ff3 --- diff --git a/src/client/client-security-manager.cpp b/src/client/client-security-manager.cpp index f972274..e8e854a 100644 --- a/src/client/client-security-manager.cpp +++ b/src/client/client-security-manager.cpp @@ -497,9 +497,9 @@ inline static uid_t gettid() return syscall(SYS_gettid); } -inline static void tgkill(pid_t tgid, uid_t tid) +inline static bool tgkill(pid_t tgid, uid_t tid) { - syscall(SYS_tgkill, tgid, tid, SIGUSR1); + return syscall(SYS_tgkill, tgid, tid, SIGUSR1) == 0; } inline static int label_for_self_internal() @@ -593,8 +593,12 @@ static inline int security_manager_sync_threads_internal(const char *app_name) std::atomic_thread_fence(std::memory_order_release); for (auto const& t_pair : g_tid_attr_current_map) { + if (!tgkill(cur_pid, t_pair.first)) { + LogWarning("Error in tgkill()"); + continue; + } + sent_signals_count++; - tgkill(cur_pid, t_pair.first); } LogDebug("sent_signals_count: " << sent_signals_count);