<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/phonet/pep.c, branch v3.2.62</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>phonet: Check input from user before allocating</title>
<updated>2012-05-11T12:14:19+00:00</updated>
<author>
<name>Sasha Levin</name>
<email>levinsasha928@gmail.com</email>
</author>
<published>2012-04-05T12:07:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1bf5e1db2f65033fb7b80f63fabbe2b8bf2f0936'/>
<id>1bf5e1db2f65033fb7b80f63fabbe2b8bf2f0936</id>
<content type='text'>
[ Upstream commit bcf1b70ac6eb0ed8286c66e6bf37cb747cbaa04c ]

A phonet packet is limited to USHRT_MAX bytes, this is never checked during
tx which means that the user can specify any size he wishes, and the kernel
will attempt to allocate that size.

In the good case, it'll lead to the following warning, but it may also cause
the kernel to kick in the OOM and kill a random task on the server.

[ 8921.744094] WARNING: at mm/page_alloc.c:2255 __alloc_pages_slowpath+0x65/0x730()
[ 8921.749770] Pid: 5081, comm: trinity Tainted: G        W    3.4.0-rc1-next-20120402-sasha #46
[ 8921.756672] Call Trace:
[ 8921.758185]  [&lt;ffffffff810b2ba7&gt;] warn_slowpath_common+0x87/0xb0
[ 8921.762868]  [&lt;ffffffff810b2be5&gt;] warn_slowpath_null+0x15/0x20
[ 8921.765399]  [&lt;ffffffff8117eae5&gt;] __alloc_pages_slowpath+0x65/0x730
[ 8921.769226]  [&lt;ffffffff81179c8a&gt;] ? zone_watermark_ok+0x1a/0x20
[ 8921.771686]  [&lt;ffffffff8117d045&gt;] ? get_page_from_freelist+0x625/0x660
[ 8921.773919]  [&lt;ffffffff8117f3a8&gt;] __alloc_pages_nodemask+0x1f8/0x240
[ 8921.776248]  [&lt;ffffffff811c03e0&gt;] kmalloc_large_node+0x70/0xc0
[ 8921.778294]  [&lt;ffffffff811c4bd4&gt;] __kmalloc_node_track_caller+0x34/0x1c0
[ 8921.780847]  [&lt;ffffffff821b0e3c&gt;] ? sock_alloc_send_pskb+0xbc/0x260
[ 8921.783179]  [&lt;ffffffff821b3c65&gt;] __alloc_skb+0x75/0x170
[ 8921.784971]  [&lt;ffffffff821b0e3c&gt;] sock_alloc_send_pskb+0xbc/0x260
[ 8921.787111]  [&lt;ffffffff821b002e&gt;] ? release_sock+0x7e/0x90
[ 8921.788973]  [&lt;ffffffff821b0ff0&gt;] sock_alloc_send_skb+0x10/0x20
[ 8921.791052]  [&lt;ffffffff824cfc20&gt;] pep_sendmsg+0x60/0x380
[ 8921.792931]  [&lt;ffffffff824cb4a6&gt;] ? pn_socket_bind+0x156/0x180
[ 8921.794917]  [&lt;ffffffff824cb50f&gt;] ? pn_socket_autobind+0x3f/0x90
[ 8921.797053]  [&lt;ffffffff824cb63f&gt;] pn_socket_sendmsg+0x4f/0x70
[ 8921.798992]  [&lt;ffffffff821ab8e7&gt;] sock_aio_write+0x187/0x1b0
[ 8921.801395]  [&lt;ffffffff810e325e&gt;] ? sub_preempt_count+0xae/0xf0
[ 8921.803501]  [&lt;ffffffff8111842c&gt;] ? __lock_acquire+0x42c/0x4b0
[ 8921.805505]  [&lt;ffffffff821ab760&gt;] ? __sock_recv_ts_and_drops+0x140/0x140
[ 8921.807860]  [&lt;ffffffff811e07cc&gt;] do_sync_readv_writev+0xbc/0x110
[ 8921.809986]  [&lt;ffffffff811958e7&gt;] ? might_fault+0x97/0xa0
[ 8921.811998]  [&lt;ffffffff817bd99e&gt;] ? security_file_permission+0x1e/0x90
[ 8921.814595]  [&lt;ffffffff811e17e2&gt;] do_readv_writev+0xe2/0x1e0
[ 8921.816702]  [&lt;ffffffff810b8dac&gt;] ? do_setitimer+0x1ac/0x200
[ 8921.818819]  [&lt;ffffffff810e2ec1&gt;] ? get_parent_ip+0x11/0x50
[ 8921.820863]  [&lt;ffffffff810e325e&gt;] ? sub_preempt_count+0xae/0xf0
[ 8921.823318]  [&lt;ffffffff811e1926&gt;] vfs_writev+0x46/0x60
[ 8921.825219]  [&lt;ffffffff811e1a3f&gt;] sys_writev+0x4f/0xb0
[ 8921.827127]  [&lt;ffffffff82658039&gt;] system_call_fastpath+0x16/0x1b
[ 8921.829384] ---[ end trace dffe390f30db9eb7 ]---

Signed-off-by: Sasha Levin &lt;levinsasha928@gmail.com&gt;
Acked-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit bcf1b70ac6eb0ed8286c66e6bf37cb747cbaa04c ]

A phonet packet is limited to USHRT_MAX bytes, this is never checked during
tx which means that the user can specify any size he wishes, and the kernel
will attempt to allocate that size.

In the good case, it'll lead to the following warning, but it may also cause
the kernel to kick in the OOM and kill a random task on the server.

[ 8921.744094] WARNING: at mm/page_alloc.c:2255 __alloc_pages_slowpath+0x65/0x730()
[ 8921.749770] Pid: 5081, comm: trinity Tainted: G        W    3.4.0-rc1-next-20120402-sasha #46
[ 8921.756672] Call Trace:
[ 8921.758185]  [&lt;ffffffff810b2ba7&gt;] warn_slowpath_common+0x87/0xb0
[ 8921.762868]  [&lt;ffffffff810b2be5&gt;] warn_slowpath_null+0x15/0x20
[ 8921.765399]  [&lt;ffffffff8117eae5&gt;] __alloc_pages_slowpath+0x65/0x730
[ 8921.769226]  [&lt;ffffffff81179c8a&gt;] ? zone_watermark_ok+0x1a/0x20
[ 8921.771686]  [&lt;ffffffff8117d045&gt;] ? get_page_from_freelist+0x625/0x660
[ 8921.773919]  [&lt;ffffffff8117f3a8&gt;] __alloc_pages_nodemask+0x1f8/0x240
[ 8921.776248]  [&lt;ffffffff811c03e0&gt;] kmalloc_large_node+0x70/0xc0
[ 8921.778294]  [&lt;ffffffff811c4bd4&gt;] __kmalloc_node_track_caller+0x34/0x1c0
[ 8921.780847]  [&lt;ffffffff821b0e3c&gt;] ? sock_alloc_send_pskb+0xbc/0x260
[ 8921.783179]  [&lt;ffffffff821b3c65&gt;] __alloc_skb+0x75/0x170
[ 8921.784971]  [&lt;ffffffff821b0e3c&gt;] sock_alloc_send_pskb+0xbc/0x260
[ 8921.787111]  [&lt;ffffffff821b002e&gt;] ? release_sock+0x7e/0x90
[ 8921.788973]  [&lt;ffffffff821b0ff0&gt;] sock_alloc_send_skb+0x10/0x20
[ 8921.791052]  [&lt;ffffffff824cfc20&gt;] pep_sendmsg+0x60/0x380
[ 8921.792931]  [&lt;ffffffff824cb4a6&gt;] ? pn_socket_bind+0x156/0x180
[ 8921.794917]  [&lt;ffffffff824cb50f&gt;] ? pn_socket_autobind+0x3f/0x90
[ 8921.797053]  [&lt;ffffffff824cb63f&gt;] pn_socket_sendmsg+0x4f/0x70
[ 8921.798992]  [&lt;ffffffff821ab8e7&gt;] sock_aio_write+0x187/0x1b0
[ 8921.801395]  [&lt;ffffffff810e325e&gt;] ? sub_preempt_count+0xae/0xf0
[ 8921.803501]  [&lt;ffffffff8111842c&gt;] ? __lock_acquire+0x42c/0x4b0
[ 8921.805505]  [&lt;ffffffff821ab760&gt;] ? __sock_recv_ts_and_drops+0x140/0x140
[ 8921.807860]  [&lt;ffffffff811e07cc&gt;] do_sync_readv_writev+0xbc/0x110
[ 8921.809986]  [&lt;ffffffff811958e7&gt;] ? might_fault+0x97/0xa0
[ 8921.811998]  [&lt;ffffffff817bd99e&gt;] ? security_file_permission+0x1e/0x90
[ 8921.814595]  [&lt;ffffffff811e17e2&gt;] do_readv_writev+0xe2/0x1e0
[ 8921.816702]  [&lt;ffffffff810b8dac&gt;] ? do_setitimer+0x1ac/0x200
[ 8921.818819]  [&lt;ffffffff810e2ec1&gt;] ? get_parent_ip+0x11/0x50
[ 8921.820863]  [&lt;ffffffff810e325e&gt;] ? sub_preempt_count+0xae/0xf0
[ 8921.823318]  [&lt;ffffffff811e1926&gt;] vfs_writev+0x46/0x60
[ 8921.825219]  [&lt;ffffffff811e1a3f&gt;] sys_writev+0x4f/0xb0
[ 8921.827127]  [&lt;ffffffff82658039&gt;] system_call_fastpath+0x16/0x1b
[ 8921.829384] ---[ end trace dffe390f30db9eb7 ]---

Signed-off-by: Sasha Levin &lt;levinsasha928@gmail.com&gt;
Acked-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Fix files explicitly needing to include module.h</title>
<updated>2011-10-31T23:30:28+00:00</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2011-05-27T13:12:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3a9a231d977222eea36eae091df2c358e03ac839'/>
<id>3a9a231d977222eea36eae091df2c358e03ac839</id>
<content type='text'>
With calls to modular infrastructure, these files really
needs the full module.h header.  Call it out so some of the
cleanups of implicit and unrequired includes elsewhere can be
cleaned up.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With calls to modular infrastructure, these files really
needs the full module.h header.  Call it out so some of the
cleanups of implicit and unrequired includes elsewhere can be
cleaned up.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: fix aligned-mode pipe socket buffer header reserve</title>
<updated>2011-03-15T21:55:49+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-15T21:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=638be344593b66ccca6802c6076a5b3d9200829d'/>
<id>638be344593b66ccca6802c6076a5b3d9200829d</id>
<content type='text'>
When the pipe uses aligned-mode data packets, we must reserve 4 bytes
instead of 3 for the pipe protocol header. Otherwise the Phonet header
would not be aligned, resulting in potentially corrupted headers with
later unaligned memory writes.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the pipe uses aligned-mode data packets, we must reserve 4 bytes
instead of 3 for the pipe protocol header. Otherwise the Phonet header
would not be aligned, resulting in potentially corrupted headers with
later unaligned memory writes.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: kill the ST-Ericsson pipe controller Kconfig</title>
<updated>2011-03-09T19:59:33+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a015f6f49968c330b236ca2f6c2170820414f922'/>
<id>a015f6f49968c330b236ca2f6c2170820414f922</id>
<content type='text'>
This is now a run-time choice so that a single kernel can support both
old and new generation ISI modems. Support for manually enabling the
pipe flow is removed as it did not work properly, does not fit well
with the socket API, and I am not aware of any use at the moment.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is now a run-time choice so that a single kernel can support both
old and new generation ISI modems. Support for manually enabling the
pipe flow is removed as it did not work properly, does not fit well
with the socket API, and I am not aware of any use at the moment.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: support active connection without pipe controller on modem</title>
<updated>2011-03-09T19:59:33+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=297edb6003268c1d60da8c21eb76bf39b6428213'/>
<id>297edb6003268c1d60da8c21eb76bf39b6428213</id>
<content type='text'>
This provides support for newer ISI modems with no need for the
earlier experimental compile-time alternative choice. With this,
we can now use the same kernel and userspace with both types of
modems.

This also avoids confusing two different and incompatible state
machines, actively connected vs accepted sockets, and adds
connection response error handling (processing "SYN/RST" of sorts).

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides support for newer ISI modems with no need for the
earlier experimental compile-time alternative choice. With this,
we can now use the same kernel and userspace with both types of
modems.

This also avoids confusing two different and incompatible state
machines, actively connected vs accepted sockets, and adds
connection response error handling (processing "SYN/RST" of sorts).

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: provide pipe socket option to retrieve the pipe identifier</title>
<updated>2011-03-09T19:59:32+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=acaf7df610ff3faf1778ce40d601fc3dd4a41b40'/>
<id>acaf7df610ff3faf1778ce40d601fc3dd4a41b40</id>
<content type='text'>
User-space sometimes needs this information. In particular, the GPRS
context or the AT commands pipe setups may use the pipe handle as a
reference.

This removes the settable pipe handle with CONFIG_PHONET_PIPECTRLR.
It did not handle error cases correctly. Furthermore, the kernel
*could* implement a smart scheme for allocating handles (if ever
needed), but userspace really cannot.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
User-space sometimes needs this information. In particular, the GPRS
context or the AT commands pipe setups may use the pipe handle as a
reference.

This removes the settable pipe handle with CONFIG_PHONET_PIPECTRLR.
It did not handle error cases correctly. Furthermore, the kernel
*could* implement a smart scheme for allocating handles (if ever
needed), but userspace really cannot.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: allocate sock from accept syscall rather than soft IRQ</title>
<updated>2011-03-09T19:59:32+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f7ae8d59f66154df0424fd94035c89981fed3379'/>
<id>f7ae8d59f66154df0424fd94035c89981fed3379</id>
<content type='text'>
This moves most of the accept logic to process context like other
socket stacks do. Then we can use a few more common socket helpers
and simplify a bit.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This moves most of the accept logic to process context like other
socket stacks do. Then we can use a few more common socket helpers
and simplify a bit.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: factor common code to send control messages</title>
<updated>2011-03-09T19:59:31+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=44c9ab16d29a50af6ed9ae084b75774570de512a'/>
<id>44c9ab16d29a50af6ed9ae084b75774570de512a</id>
<content type='text'>
With the addition of the pipe controller, there is now quite a bit
of repetitive code for small signaling messages. Lets factor it.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With the addition of the pipe controller, there is now quite a bit
of repetitive code for small signaling messages. Lets factor it.

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Phonet: correct pipe backlog callback return values</title>
<updated>2011-03-09T19:59:30+00:00</updated>
<author>
<name>Rémi Denis-Courmont</name>
<email>remi.denis-courmont@nokia.com</email>
</author>
<published>2011-03-08T22:44:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0ebbf318635bf354bdb046419dd10e9a00667f37'/>
<id>0ebbf318635bf354bdb046419dd10e9a00667f37</id>
<content type='text'>
In some cases, the Phonet pipe backlog callbacks returned negative
errno instead of NET_RX_* values.

In other cases, NET_RX_DROP was returned for invalid packets, even
though it seems only intended for buffering problems (not for
deliberately discarded packets).

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some cases, the Phonet pipe backlog callbacks returned negative
errno instead of NET_RX_* values.

In other cases, NET_RX_DROP was returned for invalid packets, even
though it seems only intended for buffering problems (not for
deliberately discarded packets).

Signed-off-by: Rémi Denis-Courmont &lt;remi.denis-courmont@nokia.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>phonet: Protect pipe_do_remove() with appropriate ifdefs.</title>
<updated>2011-02-25T19:23:22+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2011-02-25T19:23:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=004971353a403d75e7d50f8b3b304272ef056248'/>
<id>004971353a403d75e7d50f8b3b304272ef056248</id>
<content type='text'>
It is only used when CONFIG_PHONET_PIPECTRLR is not set.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is only used when CONFIG_PHONET_PIPECTRLR is not set.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
