Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1267226 > unrolled thread

[PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on faiulre by clearing all probe_trace_events

Started byMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
First post2015-11-11 15:50 +0100
Last post2015-11-14 05:50 +0100
Articles 3 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on  faiulre by clearing all probe_trace_events Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-11-11 15:50 +0100
    Re: [PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on  faiulre by clearing all probe_trace_events "Wangnan (F)" <wangnan0@huawei.com> - 2015-11-13 09:40 +0100
      RE: Re: [PATCH perf/core ] [BUGFIX] perf probe: Fix memory  leaking on faiulre by clearing all probe_trace_events 平松雅巳 / HIRAMATU,MASAMI   <masami.hiramatsu.pt@hitachi.com> - 2015-11-14 05:50 +0100

#1267226 — [PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on faiulre by clearing all probe_trace_events

FromMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Date2015-11-11 15:50 +0100
Subject[PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on faiulre by clearing all probe_trace_events
Message-ID<qtESK-434-5@gated-at.bofh.it>
Fix memory leaking on failure path in debuginfo__find_trace_events()
which frees an array of probe_trace_events but doesn't clear all
allocated sub-structures and strings.
So, before doing zfree(tevs), clear all the array elements which
can have allocated resources.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Reported-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
---
 tools/perf/util/probe-finder.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index bd8f03d..63993d7 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -1246,7 +1246,7 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
 	struct trace_event_finder tf = {
 			.pf = {.pev = pev, .callback = add_probe_trace_event},
 			.max_tevs = probe_conf.max_probes, .mod = dbg->mod};
-	int ret;
+	int ret, i;
 
 	/* Allocate result tevs array */
 	*tevs = zalloc(sizeof(struct probe_trace_event) * tf.max_tevs);
@@ -1258,6 +1258,8 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
 
 	ret = debuginfo__find_probes(dbg, &tf.pf);
 	if (ret < 0) {
+		for (i = 0; i < tf.ntevs; i++)
+			clear_probe_trace_event(&tf.tevs[i]);
 		zfree(tevs);
 		return ret;
 	}

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

[toc] | [next] | [standalone]


#1268693

From"Wangnan (F)" <wangnan0@huawei.com>
Date2015-11-13 09:40 +0100
Message-ID<qui3M-41Z-21@gated-at.bofh.it>
In reply to#1267226
Hi Masami,

Today I remember the reason why I introduced patch [1]. Although your 
patch is correct,
either [1] or [2] is still required, but they are both need to be fixed.

Here is a bug:

A segfault raises if use glob matching and argument together and one of 
probe point
failed to get that argument:

# ./perf probe -v -n 'SyS_dup? oldfd'
probe-definition(0): SyS_dup? oldfd
symbol:SyS_dup? file:(null) line:0 offset:0 return:0 lazy:(null)
parsing arg: oldfd into oldfd
1 arguments
Looking at the vmlinux_path (7 entries long)
Using /lib/modules/4.3.0-rc4+/build/vmlinux for symbols
Open Debuginfo file: /lib/modules/4.3.0-rc4+/build/vmlinux
Try to find probe point from debuginfo.
Matched function: SyS_dup3
found inline addr: 0xffffffff812095c0
Probe point found: SyS_dup3+0
Searching 'oldfd' variable in context.
Converting variable oldfd into trace event.
oldfd type is long int.
found inline addr: 0xffffffff812096d4
Probe point found: SyS_dup2+36
Searching 'oldfd' variable in context.
Failed to find 'oldfd' in this function.
Matched function: SyS_dup3
Probe point found: SyS_dup3+0
Searching 'oldfd' variable in context.
Converting variable oldfd into trace event.
oldfd type is long int.
Matched function: SyS_dup2
Probe point found: SyS_dup2+0
Searching 'oldfd' variable in context.
Converting variable oldfd into trace event.
oldfd type is long int.
Found 4 probe_trace_events.
Opening /sys/kernel/debug/tracing//kprobe_events write=1
Writing event: p:probe/SyS_dup3 _text+2135488 oldfd=%di:s64
Segmentation fault (core dumped)


Here is how the segfault happen:

In following call stack:

add_probe_trace_event
call_probe_finder
probe_point_search_cb
??
dwarf_getfuncs
find_probe_point_by_func
debuginfo__find_probes
debuginfo__find_trace_events
try_to_find_probe_trace_events
convert_to_probe_trace_events
convert_perf_probe_events
perf_add_probe_events

add_probe_trace_event get called and failed due to failure of 
find_variable(). In this case
tev->args is not freed and tev->nargs are positive (1 in this case). 
Error from find_variable()
will be passed down along the call stack through return values until get to
probe_point_search_cb(). The problem is that, probe_point_search_cb 
doesn't return error
if the function name is a glob:

                 /* Inlined function: search instances */
                 param->retval = die_walk_instances(sp_die,
                                         probe_point_inline_cb, (void *)pf);
                 /* This could be a non-existed inline definition */
                 if (param->retval == -ENOENT && strisglob(pp->function))
                         param->retval = 0;


So the error won't be transfer to debuginfo__find_trace_events() from 
debuginfo__find_probes(),
and your patch won't take effect.

With patch [1], we set argument number to 0 and frees tev->args. With 
this fix we can save that
tev. Here's the final result:

# ./perf probe 'SyS_dup? oldfd'
Failed to find 'oldfd' in this function.
Added new events:
   probe:SyS_dup3       (on SyS_dup? with oldfd)
   probe:SyS_dup3_1     (on SyS_dup? with oldfd)
   probe:SyS_dup3_2     (on SyS_dup? with oldfd)
   probe:SyS_dup2       (on SyS_dup? with oldfd)

You can now use it in all perf tools, such as:

     perf record -e probe:SyS_dup2 -aR sleep 1

# PAGER=cat ./perf probe -l
   probe:SyS_dup2       (on SyS_dup2@linux-hydrogen/fs/file.c with oldfd)
   probe:SyS_dup3       (on SyS_dup3@linux-hydrogen/fs/file.c with oldfd)
   probe:SyS_dup3_1     (on SYSC_dup2:12@linux-hydrogen/fs/file.c)
   probe:SyS_dup3_2     (on SyS_dup3@linux-hydrogen/fs/file.c with oldfd)

Perf can't find oldfd in the context of SyS_dup3_1. With [1]'s fix it still
probe at it but doesn't create argument fetcher.

[2]'s fix totally clear this tev. It is incorrect because it forgets to 
adjust
tf->ntevs. With that appended the final result becomes:

# ./perf probe 'SyS_dup? oldfd'
Failed to find 'oldfd' in this function.
Added new events:
   probe:SyS_dup3       (on SyS_dup? with oldfd)
   probe:SyS_dup3_1     (on SyS_dup? with oldfd)
   probe:SyS_dup2       (on SyS_dup? with oldfd)

You can now use it in all perf tools, such as:

     perf record -e probe:SyS_dup2 -aR sleep 1

# PAGER=cat ./perf probe -l
   probe:SyS_dup2       (on SyS_dup2@linux-hydrogen/fs/file.c with oldfd)
   probe:SyS_dup3       (on SyS_dup3@linux-hydrogen/fs/file.c with oldfd)
   probe:SyS_dup3_1     (on SyS_dup3@linux-hydrogen/fs/file.c with oldfd)

Here only those probe point we can get 'oldfd' is probed.

I suggest [2]'s fix because I think if user provide argument he or she would
get interested with it, and we have already noticed user the argument is 
unabled
to be found in one probe point.

I'll provide another patch based on [2]. Please have a look.

Thank you.

[1] 
http://lkml.kernel.org/g/1444826502-49291-13-git-send-email-wangnan0@huawei.com
[2] 
http://lkml.kernel.org/g/1447237183-106610-1-git-send-email-wangnan0@huawei.com

On 2015/11/11 22:38, Masami Hiramatsu wrote:
> Fix memory leaking on failure path in debuginfo__find_trace_events()
> which frees an array of probe_trace_events but doesn't clear all
> allocated sub-structures and strings.
> So, before doing zfree(tevs), clear all the array elements which
> can have allocated resources.
>
> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Reported-by: Wang Nan <wangnan0@huawei.com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Zefan Li <lizefan@huawei.com>
> Cc: pi3orama@163.com
> ---
>   tools/perf/util/probe-finder.c |    4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
> index bd8f03d..63993d7 100644
> --- a/tools/perf/util/probe-finder.c
> +++ b/tools/perf/util/probe-finder.c
> @@ -1246,7 +1246,7 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
>   	struct trace_event_finder tf = {
>   			.pf = {.pev = pev, .callback = add_probe_trace_event},
>   			.max_tevs = probe_conf.max_probes, .mod = dbg->mod};
> -	int ret;
> +	int ret, i;
>   
>   	/* Allocate result tevs array */
>   	*tevs = zalloc(sizeof(struct probe_trace_event) * tf.max_tevs);
> @@ -1258,6 +1258,8 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
>   
>   	ret = debuginfo__find_probes(dbg, &tf.pf);
>   	if (ret < 0) {
> +		for (i = 0; i < tf.ntevs; i++)
> +			clear_probe_trace_event(&tf.tevs[i]);
>   		zfree(tevs);
>   		return ret;
>   	}
>


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

[toc] | [prev] | [next] | [standalone]


#1269420 — RE: Re: [PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on faiulre by clearing all probe_trace_events

From平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com>
Date2015-11-14 05:50 +0100
SubjectRE: Re: [PATCH perf/core ] [BUGFIX] perf probe: Fix memory leaking on faiulre by clearing all probe_trace_events
Message-ID<quAWJ-7JM-1@gated-at.bofh.it>
In reply to#1268693
RnJvbTogV2FuZ25hbiAoRikgW21haWx0bzp3YW5nbmFuMEBodWF3ZWkuY29tXQ0KPg0KPkhpIE1h
c2FtaSwNCj4NCj5Ub2RheSBJIHJlbWVtYmVyIHRoZSByZWFzb24gd2h5IEkgaW50cm9kdWNlZCBw
YXRjaCBbMV0uIEFsdGhvdWdoIHlvdXINCj5wYXRjaCBpcyBjb3JyZWN0LA0KPmVpdGhlciBbMV0g
b3IgWzJdIGlzIHN0aWxsIHJlcXVpcmVkLCBidXQgdGhleSBhcmUgYm90aCBuZWVkIHRvIGJlIGZp
eGVkLg0KPg0KPkhlcmUgaXMgYSBidWc6DQo+DQo+QSBzZWdmYXVsdCByYWlzZXMgaWYgdXNlIGds
b2IgbWF0Y2hpbmcgYW5kIGFyZ3VtZW50IHRvZ2V0aGVyIGFuZCBvbmUgb2YNCj5wcm9iZSBwb2lu
dA0KPmZhaWxlZCB0byBnZXQgdGhhdCBhcmd1bWVudDoNCj4NCj4jIC4vcGVyZiBwcm9iZSAtdiAt
biAnU3lTX2R1cD8gb2xkZmQnDQo+cHJvYmUtZGVmaW5pdGlvbigwKTogU3lTX2R1cD8gb2xkZmQN
Cj5zeW1ib2w6U3lTX2R1cD8gZmlsZToobnVsbCkgbGluZTowIG9mZnNldDowIHJldHVybjowIGxh
enk6KG51bGwpDQo+cGFyc2luZyBhcmc6IG9sZGZkIGludG8gb2xkZmQNCj4xIGFyZ3VtZW50cw0K
Pkxvb2tpbmcgYXQgdGhlIHZtbGludXhfcGF0aCAoNyBlbnRyaWVzIGxvbmcpDQo+VXNpbmcgL2xp
Yi9tb2R1bGVzLzQuMy4wLXJjNCsvYnVpbGQvdm1saW51eCBmb3Igc3ltYm9scw0KPk9wZW4gRGVi
dWdpbmZvIGZpbGU6IC9saWIvbW9kdWxlcy80LjMuMC1yYzQrL2J1aWxkL3ZtbGludXgNCj5Ucnkg
dG8gZmluZCBwcm9iZSBwb2ludCBmcm9tIGRlYnVnaW5mby4NCj5NYXRjaGVkIGZ1bmN0aW9uOiBT
eVNfZHVwMw0KPmZvdW5kIGlubGluZSBhZGRyOiAweGZmZmZmZmZmODEyMDk1YzANCj5Qcm9iZSBw
b2ludCBmb3VuZDogU3lTX2R1cDMrMA0KPlNlYXJjaGluZyAnb2xkZmQnIHZhcmlhYmxlIGluIGNv
bnRleHQuDQo+Q29udmVydGluZyB2YXJpYWJsZSBvbGRmZCBpbnRvIHRyYWNlIGV2ZW50Lg0KPm9s
ZGZkIHR5cGUgaXMgbG9uZyBpbnQuDQo+Zm91bmQgaW5saW5lIGFkZHI6IDB4ZmZmZmZmZmY4MTIw
OTZkNA0KPlByb2JlIHBvaW50IGZvdW5kOiBTeVNfZHVwMiszNg0KPlNlYXJjaGluZyAnb2xkZmQn
IHZhcmlhYmxlIGluIGNvbnRleHQuDQo+RmFpbGVkIHRvIGZpbmQgJ29sZGZkJyBpbiB0aGlzIGZ1
bmN0aW9uLg0KPk1hdGNoZWQgZnVuY3Rpb246IFN5U19kdXAzDQo+UHJvYmUgcG9pbnQgZm91bmQ6
IFN5U19kdXAzKzANCj5TZWFyY2hpbmcgJ29sZGZkJyB2YXJpYWJsZSBpbiBjb250ZXh0Lg0KPkNv
bnZlcnRpbmcgdmFyaWFibGUgb2xkZmQgaW50byB0cmFjZSBldmVudC4NCj5vbGRmZCB0eXBlIGlz
IGxvbmcgaW50Lg0KPk1hdGNoZWQgZnVuY3Rpb246IFN5U19kdXAyDQo+UHJvYmUgcG9pbnQgZm91
bmQ6IFN5U19kdXAyKzANCj5TZWFyY2hpbmcgJ29sZGZkJyB2YXJpYWJsZSBpbiBjb250ZXh0Lg0K
PkNvbnZlcnRpbmcgdmFyaWFibGUgb2xkZmQgaW50byB0cmFjZSBldmVudC4NCj5vbGRmZCB0eXBl
IGlzIGxvbmcgaW50Lg0KPkZvdW5kIDQgcHJvYmVfdHJhY2VfZXZlbnRzLg0KPk9wZW5pbmcgL3N5
cy9rZXJuZWwvZGVidWcvdHJhY2luZy8va3Byb2JlX2V2ZW50cyB3cml0ZT0xDQo+V3JpdGluZyBl
dmVudDogcDpwcm9iZS9TeVNfZHVwMyBfdGV4dCsyMTM1NDg4IG9sZGZkPSVkaTpzNjQNCj5TZWdt
ZW50YXRpb24gZmF1bHQgKGNvcmUgZHVtcGVkKQ0KPg0KPg0KPkhlcmUgaXMgaG93IHRoZSBzZWdm
YXVsdCBoYXBwZW46DQo+DQo+SW4gZm9sbG93aW5nIGNhbGwgc3RhY2s6DQo+DQo+YWRkX3Byb2Jl
X3RyYWNlX2V2ZW50DQo+Y2FsbF9wcm9iZV9maW5kZXINCj5wcm9iZV9wb2ludF9zZWFyY2hfY2IN
Cj4/Pw0KPmR3YXJmX2dldGZ1bmNzDQo+ZmluZF9wcm9iZV9wb2ludF9ieV9mdW5jDQo+ZGVidWdp
bmZvX19maW5kX3Byb2Jlcw0KPmRlYnVnaW5mb19fZmluZF90cmFjZV9ldmVudHMNCj50cnlfdG9f
ZmluZF9wcm9iZV90cmFjZV9ldmVudHMNCj5jb252ZXJ0X3RvX3Byb2JlX3RyYWNlX2V2ZW50cw0K
PmNvbnZlcnRfcGVyZl9wcm9iZV9ldmVudHMNCj5wZXJmX2FkZF9wcm9iZV9ldmVudHMNCj4NCj5h
ZGRfcHJvYmVfdHJhY2VfZXZlbnQgZ2V0IGNhbGxlZCBhbmQgZmFpbGVkIGR1ZSB0byBmYWlsdXJl
IG9mDQo+ZmluZF92YXJpYWJsZSgpLiBJbiB0aGlzIGNhc2UNCj50ZXYtPmFyZ3MgaXMgbm90IGZy
ZWVkIGFuZCB0ZXYtPm5hcmdzIGFyZSBwb3NpdGl2ZSAoMSBpbiB0aGlzIGNhc2UpLg0KPkVycm9y
IGZyb20gZmluZF92YXJpYWJsZSgpDQo+d2lsbCBiZSBwYXNzZWQgZG93biBhbG9uZyB0aGUgY2Fs
bCBzdGFjayB0aHJvdWdoIHJldHVybiB2YWx1ZXMgdW50aWwgZ2V0IHRvDQo+cHJvYmVfcG9pbnRf
c2VhcmNoX2NiKCkuIFRoZSBwcm9ibGVtIGlzIHRoYXQsIHByb2JlX3BvaW50X3NlYXJjaF9jYg0K
PmRvZXNuJ3QgcmV0dXJuIGVycm9yDQo+aWYgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgYSBnbG9iOg0K
Pg0KPiAgICAgICAgICAgICAgICAgLyogSW5saW5lZCBmdW5jdGlvbjogc2VhcmNoIGluc3RhbmNl
cyAqLw0KPiAgICAgICAgICAgICAgICAgcGFyYW0tPnJldHZhbCA9IGRpZV93YWxrX2luc3RhbmNl
cyhzcF9kaWUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9i
ZV9wb2ludF9pbmxpbmVfY2IsICh2b2lkICopcGYpOw0KPiAgICAgICAgICAgICAgICAgLyogVGhp
cyBjb3VsZCBiZSBhIG5vbi1leGlzdGVkIGlubGluZSBkZWZpbml0aW9uICovDQo+ICAgICAgICAg
ICAgICAgICBpZiAocGFyYW0tPnJldHZhbCA9PSAtRU5PRU5UICYmIHN0cmlzZ2xvYihwcC0+ZnVu
Y3Rpb24pKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS0+cmV0dmFsID0gMDsNCj4N
Cj4NCj5TbyB0aGUgZXJyb3Igd29uJ3QgYmUgdHJhbnNmZXIgdG8gZGVidWdpbmZvX19maW5kX3Ry
YWNlX2V2ZW50cygpIGZyb20NCj5kZWJ1Z2luZm9fX2ZpbmRfcHJvYmVzKCksDQo+YW5kIHlvdXIg
cGF0Y2ggd29uJ3QgdGFrZSBlZmZlY3QuDQo+DQo+V2l0aCBwYXRjaCBbMV0sIHdlIHNldCBhcmd1
bWVudCBudW1iZXIgdG8gMCBhbmQgZnJlZXMgdGV2LT5hcmdzLiBXaXRoDQo+dGhpcyBmaXggd2Ug
Y2FuIHNhdmUgdGhhdA0KPnRldi4gSGVyZSdzIHRoZSBmaW5hbCByZXN1bHQ6DQo+DQo+IyAuL3Bl
cmYgcHJvYmUgJ1N5U19kdXA/IG9sZGZkJw0KPkZhaWxlZCB0byBmaW5kICdvbGRmZCcgaW4gdGhp
cyBmdW5jdGlvbi4NCj5BZGRlZCBuZXcgZXZlbnRzOg0KPiAgIHByb2JlOlN5U19kdXAzICAgICAg
IChvbiBTeVNfZHVwPyB3aXRoIG9sZGZkKQ0KPiAgIHByb2JlOlN5U19kdXAzXzEgICAgIChvbiBT
eVNfZHVwPyB3aXRoIG9sZGZkKQ0KPiAgIHByb2JlOlN5U19kdXAzXzIgICAgIChvbiBTeVNfZHVw
PyB3aXRoIG9sZGZkKQ0KPiAgIHByb2JlOlN5U19kdXAyICAgICAgIChvbiBTeVNfZHVwPyB3aXRo
IG9sZGZkKQ0KPg0KPllvdSBjYW4gbm93IHVzZSBpdCBpbiBhbGwgcGVyZiB0b29scywgc3VjaCBh
czoNCj4NCj4gICAgIHBlcmYgcmVjb3JkIC1lIHByb2JlOlN5U19kdXAyIC1hUiBzbGVlcCAxDQo+
DQo+IyBQQUdFUj1jYXQgLi9wZXJmIHByb2JlIC1sDQo+ICAgcHJvYmU6U3lTX2R1cDIgICAgICAg
KG9uIFN5U19kdXAyQGxpbnV4LWh5ZHJvZ2VuL2ZzL2ZpbGUuYyB3aXRoIG9sZGZkKQ0KPiAgIHBy
b2JlOlN5U19kdXAzICAgICAgIChvbiBTeVNfZHVwM0BsaW51eC1oeWRyb2dlbi9mcy9maWxlLmMg
d2l0aCBvbGRmZCkNCj4gICBwcm9iZTpTeVNfZHVwM18xICAgICAob24gU1lTQ19kdXAyOjEyQGxp
bnV4LWh5ZHJvZ2VuL2ZzL2ZpbGUuYykNCj4gICBwcm9iZTpTeVNfZHVwM18yICAgICAob24gU3lT
X2R1cDNAbGludXgtaHlkcm9nZW4vZnMvZmlsZS5jIHdpdGggb2xkZmQpDQo+DQo+UGVyZiBjYW4n
dCBmaW5kIG9sZGZkIGluIHRoZSBjb250ZXh0IG9mIFN5U19kdXAzXzEuIFdpdGggWzFdJ3MgZml4
IGl0IHN0aWxsDQo+cHJvYmUgYXQgaXQgYnV0IGRvZXNuJ3QgY3JlYXRlIGFyZ3VtZW50IGZldGNo
ZXIuDQo+DQo+WzJdJ3MgZml4IHRvdGFsbHkgY2xlYXIgdGhpcyB0ZXYuIEl0IGlzIGluY29ycmVj
dCBiZWNhdXNlIGl0IGZvcmdldHMgdG8NCj5hZGp1c3QNCj50Zi0+bnRldnMuIFdpdGggdGhhdCBh
cHBlbmRlZCB0aGUgZmluYWwgcmVzdWx0IGJlY29tZXM6DQo+DQo+IyAuL3BlcmYgcHJvYmUgJ1N5
U19kdXA/IG9sZGZkJw0KPkZhaWxlZCB0byBmaW5kICdvbGRmZCcgaW4gdGhpcyBmdW5jdGlvbi4N
Cj5BZGRlZCBuZXcgZXZlbnRzOg0KPiAgIHByb2JlOlN5U19kdXAzICAgICAgIChvbiBTeVNfZHVw
PyB3aXRoIG9sZGZkKQ0KPiAgIHByb2JlOlN5U19kdXAzXzEgICAgIChvbiBTeVNfZHVwPyB3aXRo
IG9sZGZkKQ0KPiAgIHByb2JlOlN5U19kdXAyICAgICAgIChvbiBTeVNfZHVwPyB3aXRoIG9sZGZk
KQ0KPg0KPllvdSBjYW4gbm93IHVzZSBpdCBpbiBhbGwgcGVyZiB0b29scywgc3VjaCBhczoNCj4N
Cj4gICAgIHBlcmYgcmVjb3JkIC1lIHByb2JlOlN5U19kdXAyIC1hUiBzbGVlcCAxDQo+DQo+IyBQ
QUdFUj1jYXQgLi9wZXJmIHByb2JlIC1sDQo+ICAgcHJvYmU6U3lTX2R1cDIgICAgICAgKG9uIFN5
U19kdXAyQGxpbnV4LWh5ZHJvZ2VuL2ZzL2ZpbGUuYyB3aXRoIG9sZGZkKQ0KPiAgIHByb2JlOlN5
U19kdXAzICAgICAgIChvbiBTeVNfZHVwM0BsaW51eC1oeWRyb2dlbi9mcy9maWxlLmMgd2l0aCBv
bGRmZCkNCj4gICBwcm9iZTpTeVNfZHVwM18xICAgICAob24gU3lTX2R1cDNAbGludXgtaHlkcm9n
ZW4vZnMvZmlsZS5jIHdpdGggb2xkZmQpDQo+DQo+SGVyZSBvbmx5IHRob3NlIHByb2JlIHBvaW50
IHdlIGNhbiBnZXQgJ29sZGZkJyBpcyBwcm9iZWQuDQo+DQo+SSBzdWdnZXN0IFsyXSdzIGZpeCBi
ZWNhdXNlIEkgdGhpbmsgaWYgdXNlciBwcm92aWRlIGFyZ3VtZW50IGhlIG9yIHNoZSB3b3VsZA0K
PmdldCBpbnRlcmVzdGVkIHdpdGggaXQsIGFuZCB3ZSBoYXZlIGFscmVhZHkgbm90aWNlZCB1c2Vy
IHRoZSBhcmd1bWVudCBpcw0KPnVuYWJsZWQNCj50byBiZSBmb3VuZCBpbiBvbmUgcHJvYmUgcG9p
bnQuDQoNCk9LLCB0aGlzIG1heSBhbGxvdyB1c2VyIHRvIHByb2JlIG9ubHkgd2hlcmUgdGhlIHZh
cmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQuDQpJIGFsc28gdGhpbmsgd2UnZCBiZXR0ZXIgb2ZmZXIg
YW5vdGhlciBvcHRpb24gdG8gZmFpbCBhbGwgcHJvYmUgaWYgb25lIG9mDQp0aGVtIGNhbm5vdCBm
dWxmaWxsIHRoZSByZXF1aXJlZCBhcmd1bWVudHMgc28gdGhhdCB0aGV5IGNhbiBkZWNpZGUgbm90
IHRvDQp0cmFjZSBpdCBvciBjaGFuZ2UgcHJvYmUgcG9pbnQuDQoNCkFuZCBhdCBsZWFzdCB0aGlz
IGVycm9yIG1lc3NhZ2UgDQo+RmFpbGVkIHRvIGZpbmQgJ29sZGZkJyBpbiB0aGlzIGZ1bmN0aW9u
Lg0Kc2hvdWxkIGJlIGZpeGVkIC4uLg0KDQpUaGFua3MhDQoNCj4NCj5JJ2xsIHByb3ZpZGUgYW5v
dGhlciBwYXRjaCBiYXNlZCBvbiBbMl0uIFBsZWFzZSBoYXZlIGEgbG9vay4NCg0KDQo+DQo+VGhh
bmsgeW91Lg0KPg0KPlsxXQ0KPmh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvZy8xNDQ0ODI2NTAyLTQ5
MjkxLTEzLWdpdC1zZW5kLWVtYWlsLXdhbmduYW4wQGh1YXdlaS5jb20NCj5bMl0NCj5odHRwOi8v
bGttbC5rZXJuZWwub3JnL2cvMTQ0NzIzNzE4My0xMDY2MTAtMS1naXQtc2VuZC1lbWFpbC13YW5n
bmFuMEBodWF3ZWkuY29tDQo+DQo+T24gMjAxNS8xMS8xMSAyMjozOCwgTWFzYW1pIEhpcmFtYXRz
dSB3cm90ZToNCj4+IEZpeCBtZW1vcnkgbGVha2luZyBvbiBmYWlsdXJlIHBhdGggaW4gZGVidWdp
bmZvX19maW5kX3RyYWNlX2V2ZW50cygpDQo+PiB3aGljaCBmcmVlcyBhbiBhcnJheSBvZiBwcm9i
ZV90cmFjZV9ldmVudHMgYnV0IGRvZXNuJ3QgY2xlYXIgYWxsDQo+PiBhbGxvY2F0ZWQgc3ViLXN0
cnVjdHVyZXMgYW5kIHN0cmluZ3MuDQo+PiBTbywgYmVmb3JlIGRvaW5nIHpmcmVlKHRldnMpLCBj
bGVhciBhbGwgdGhlIGFycmF5IGVsZW1lbnRzIHdoaWNoDQo+PiBjYW4gaGF2ZSBhbGxvY2F0ZWQg
cmVzb3VyY2VzLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IE1hc2FtaSBIaXJhbWF0c3UgPG1hc2Ft
aS5oaXJhbWF0c3UucHRAaGl0YWNoaS5jb20+DQo+PiBSZXBvcnRlZC1ieTogV2FuZyBOYW4gPHdh
bmduYW4wQGh1YXdlaS5jb20+DQo+PiBDYzogQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21l
QHJlZGhhdC5jb20+DQo+PiBDYzogWmVmYW4gTGkgPGxpemVmYW5AaHVhd2VpLmNvbT4NCj4+IENj
OiBwaTNvcmFtYUAxNjMuY29tDQo+PiAtLS0NCj4+ICAgdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZp
bmRlci5jIHwgICAgNCArKystDQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks
IDEgZGVsZXRpb24oLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Byb2Jl
LWZpbmRlci5jIGIvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5jDQo+PiBpbmRleCBiZDhm
MDNkLi42Mzk5M2Q3IDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRl
ci5jDQo+PiArKysgYi90b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmMNCj4+IEBAIC0xMjQ2
LDcgKzEyNDYsNyBAQCBpbnQgZGVidWdpbmZvX19maW5kX3RyYWNlX2V2ZW50cyhzdHJ1Y3QgZGVi
dWdpbmZvICpkYmcsDQo+PiAgIAlzdHJ1Y3QgdHJhY2VfZXZlbnRfZmluZGVyIHRmID0gew0KPj4g
ICAJCQkucGYgPSB7LnBldiA9IHBldiwgLmNhbGxiYWNrID0gYWRkX3Byb2JlX3RyYWNlX2V2ZW50
fSwNCj4+ICAgCQkJLm1heF90ZXZzID0gcHJvYmVfY29uZi5tYXhfcHJvYmVzLCAubW9kID0gZGJn
LT5tb2R9Ow0KPj4gLQlpbnQgcmV0Ow0KPj4gKwlpbnQgcmV0LCBpOw0KPj4NCj4+ICAgCS8qIEFs
bG9jYXRlIHJlc3VsdCB0ZXZzIGFycmF5ICovDQo+PiAgIAkqdGV2cyA9IHphbGxvYyhzaXplb2Yo
c3RydWN0IHByb2JlX3RyYWNlX2V2ZW50KSAqIHRmLm1heF90ZXZzKTsNCj4+IEBAIC0xMjU4LDYg
KzEyNTgsOCBAQCBpbnQgZGVidWdpbmZvX19maW5kX3RyYWNlX2V2ZW50cyhzdHJ1Y3QgZGVidWdp
bmZvICpkYmcsDQo+Pg0KPj4gICAJcmV0ID0gZGVidWdpbmZvX19maW5kX3Byb2JlcyhkYmcsICZ0
Zi5wZik7DQo+PiAgIAlpZiAocmV0IDwgMCkgew0KPj4gKwkJZm9yIChpID0gMDsgaSA8IHRmLm50
ZXZzOyBpKyspDQo+PiArCQkJY2xlYXJfcHJvYmVfdHJhY2VfZXZlbnQoJnRmLnRldnNbaV0pOw0K
Pj4gICAJCXpmcmVlKHRldnMpOw0KPj4gICAJCXJldHVybiByZXQ7DQo+PiAgIAl9DQo+Pg0KPg0K
DQo=
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web