Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1267226 > unrolled thread
| Started by | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| First post | 2015-11-11 15:50 +0100 |
| Last post | 2015-11-14 05:50 +0100 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
[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
| From | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-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]
| From | "Wangnan (F)" <wangnan0@huawei.com> |
|---|---|
| Date | 2015-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]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-11-14 05:50 +0100 |
| Subject | RE: 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