Matt Helsley <matthltc@xxxxxxxxxx> wrote:Assuming you meant s/task/function/:+static inline int notify_per_task_watchers(unsigned int val,It's possible for this task to exit without returning a result.
+ struct task_struct *task)
+{
+ if (get_watch_event(val) != WATCH_TASK_INIT)
+ return raw_notifier_call_chain(&task->notify, val, task);
+ RAW_INIT_NOTIFIER_HEAD(&task->notify);
+ if (task->real_parent)
+ return raw_notifier_call_chain(&task->real_parent->notify,
+ val, task);
+}
In the common case this will return a result because most tasks have a
real parent. The only exception should be the init task. However, the
init task does not "fork" from another task so this function will never
get called with WATCH_TASK_INIT and the init task.
This means that if one wants to use per-task watchers to associate data
and a function call with *every* task, special care will need to be
taken to register with the init task.
no......
It's possible for this function to fall off the end without returning
anything. The compiler should have spat a warning.