lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1207122537.8514.752.camel@twins>
Date:	Wed, 02 Apr 2008 09:48:57 +0200
From:	Peter Zijlstra <a.p.zijlstra@...llo.nl>
To:	vatsa@...ux.vnet.ibm.com
Cc:	Ingo Molnar <mingo@...e.hu>, aneesh.kumar@...ux.vnet.ibm.com,
	dhaval@...ux.vnet.ibm.com, linux-kernel@...r.kernel.org,
	Balbir Singh <balbir@...ibm.com>
Subject: Re: set_task_rq bug?

On Wed, 2008-04-02 at 13:22 +0530, Srivatsa Vaddagiri wrote:
> For the case of CONFIG_RT_GROUP_SCHED and !CONFIG_FAIR_GROUP_SCHED, this
> piece of code seems to be wrong?
> 
> /* Change a task's cfs_rq and parent entity if it moves across
>  * CPUs/groups */
> static inline void set_task_rq(struct task_struct *p, unsigned int cpu)
> {
> #ifdef CONFIG_FAIR_GROUP_SCHED
>         p->se.cfs_rq = task_group(p)->cfs_rq[cpu];
>         p->se.parent = task_group(p)->se[cpu];
> #endif
> 
> #ifdef CONFIG_RT_GROUP_SCHED
>         p->rt.rt_rq  = task_group(p)->rt_rq[cpu];
>         p->rt.parent = task_group(p)->rt_se[cpu];
> #endif
> }
> 
> Basically for the above config case, a task's p->se.cfs_rq is never set,
> which seems to be incorrect, as lot of sched_fair.c (for ex:
> enqueue_task_fair) banks on the availability of this information. It should 
> atleast be set to &rq->cfs?

struct sched_entity {
        struct load_weight      load;           /* for load-balancing */
        struct rb_node          timeline_node;
#ifdef CONFIG_FAIR_GROUP_SCHED
        struct rb_node          deadline_node;
        u64                     vdeadline;
#endif
        struct list_head        group_node;
        unsigned int            on_rq;

        u64                     exec_start;
        u64                     sum_exec_runtime;
        u64                     vruntime;
        u64                     prev_sum_exec_runtime;

        u64                     last_wakeup;
        u64                     avg_overlap;

#ifdef CONFIG_SCHEDSTATS
	...
#endif

#ifdef CONFIG_FAIR_GROUP_SCHED
        struct sched_entity     *parent;
        /* rq on which this entity is (to be) queued: */
        struct cfs_rq           *cfs_rq;
        /* rq "owned" by this entity/group: */
        struct cfs_rq           *my_q;
#endif
};

with !CONFIG_FAIR_GROUP_SCHED se.cfs_rq isn't even there.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ