Hi Tejun,
On 11/19/2015 07:52 PM, Tejun Heo wrote:
quoted hunk ↗ jump to hunk
+/*
+ * There's a theoretical window where the following accessors race with
+ * updaters and return part of the previous pointer as the prioidx or
+ * classid. Such races are short-lived and the result isn't critical.
+ */
static inline u16 sock_cgroup_prioidx(struct sock_cgroup_data *skcd)
{
- return skcd->prioidx;
+ return (skcd->is_data & 1) ? skcd->prioidx : 1;
}
static inline u32 sock_cgroup_classid(struct sock_cgroup_data *skcd)
{
- return skcd->classid;
+ return (skcd->is_data & 1) ? skcd->classid : 0;
}
I still try to understand what the code does, hence this stupid question:
Why is sock_cgroup_prioidx() returning 1 if is not data and
sock_cgroup_classid() a 0?
thanks,
daniel