*/
struct proc_info_top {
u32 pid;
- char comm[0];
+ char comm[TASK_COMM_LEN];
} __packed;
struct proc_info_bottom {
static int pack_proc_info_top(void *data, size_t size,
struct task_struct *task)
{
- struct proc_info_top *pit = (struct proc_info_top *)data;
+ struct proc_info_top *pit;
- if (size < sizeof(*pit) + sizeof(task->comm))
+ if (size < sizeof(*pit))
return -ENOMEM;
+ pit = (struct proc_info_top *)data;
+
pit->pid = task->tgid;
get_task_comm(pit->comm, task);
- return sizeof(*pit) + strlen(pit->comm) + 1;
+ /* Only meaningful part of pit->comm is packed, so only meaningful size
+ * is returned */
+ return sizeof(pit->pid) + strlen(pit->comm) + 1;
}
static int pack_proc_info_bottom(void *data, size_t size,
*/
struct proc_comm {
u32 pid;
- char comm[0];
+ /* Only meaningful part is packed */
+ char comm[TASK_COMM_LEN];
} __packed;
void usm_msg_comm(struct task_struct *task)