Re: [tip:perf/urgent] perf hists: Fix determination of a callchain node's childlessness

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Perhaps the patch quoted below should also go into stable? It'd be nice
to fix that regression for 4.4 and 4.5.  It's been integrated into 4.6
(909890355).

Regards,

Andres

On 2016-03-30 23:33:37 -0700, tip-bot for Andres Freund wrote:
> Commit-ID:  909890355507e92bdaf648e73870f6b5df606da8
> Gitweb:     http://git.kernel.org/tip/909890355507e92bdaf648e73870f6b5df606da8
> Author:     Andres Freund <andres@xxxxxxxxxxx>
> AuthorDate: Wed, 30 Mar 2016 21:02:45 +0200
> Committer:  Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> CommitDate: Wed, 30 Mar 2016 18:08:39 -0300
> 
> perf hists: Fix determination of a callchain node's childlessness
> 
> The 4b3a3212233a ("perf hists browser: Support flat callchains") commit
> over-aggressively tried to optimize callchain_node__init_have_children().
> 
> That lead to --tui mode not allowing to expand call chain elements if a
> call chain element had only one parent. That's why --inverted callgraphs
> looked halfway sane, but plain ones didn't.
> 
> Revert that individual optimization, it wasn't really related to the
> rest of the commit.
> 
> Signed-off-by: Andres Freund <andres@xxxxxxxxxxx>
> Acked-by: Namhyung Kim <namhyung@xxxxxxxxxx>
> Tested-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> Fixes: 4b3a3212233a ("perf hists browser: Support flat callchains")
> Link: http://lkml.kernel.org/r/20160330190245.GB13305@xxxxxxxxxxxxxxxxxx
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> ---
>  tools/perf/ui/browsers/hists.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
> index 4b98165..2a83414 100644
> --- a/tools/perf/ui/browsers/hists.c
> +++ b/tools/perf/ui/browsers/hists.c
> @@ -337,7 +337,7 @@ static void callchain_node__init_have_children(struct callchain_node *node,
>  	chain = list_entry(node->val.next, struct callchain_list, list);
>  	chain->has_children = has_sibling;
>  
> -	if (node->val.next != node->val.prev) {
> +	if (!list_empty(&node->val)) {
>  		chain = list_entry(node->val.prev, struct callchain_list, list);
>  		chain->has_children = !RB_EMPTY_ROOT(&node->rb_root);
>  	}
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]