<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/bluetooth/cmtp/core.c, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2022-01-27T11:01:26Z</updated>
<entry>
<title>Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails</title>
<updated>2022-01-27T11:01:26Z</updated>
<author>
<name>Wang Hai</name>
</author>
<published>2021-10-25T13:10:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=802db7968fadab9a7dbcf3725e36abe30fbca68d'/>
<id>urn:sha1:802db7968fadab9a7dbcf3725e36abe30fbca68d</id>
<content type='text'>
[ Upstream commit 2a7ca7459d905febf519163bd9e3eed894de6bb7 ]

I got a kernel BUG report when doing fault injection test:

------------[ cut here ]------------
kernel BUG at lib/list_debug.c:45!
...
RIP: 0010:__list_del_entry_valid.cold+0x12/0x4d
...
Call Trace:
 proto_unregister+0x83/0x220
 cmtp_cleanup_sockets+0x37/0x40 [cmtp]
 cmtp_exit+0xe/0x1f [cmtp]
 do_syscall_64+0x35/0xb0
 entry_SYSCALL_64_after_hwframe+0x44/0xae

If cmtp_init_sockets() in cmtp_init() fails, cmtp_init() still returns
success. This will cause a kernel bug when accessing uncreated ctmp
related data when the module exits.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: Hulk Robot &lt;hulkci@huawei.com&gt;
Signed-off-by: Wang Hai &lt;wanghai38@huawei.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: cmtp: fix file refcount when cmtp_attach_device fails</title>
<updated>2021-06-26T05:12:25Z</updated>
<author>
<name>Thadeu Lima de Souza Cascardo</name>
</author>
<published>2021-04-13T16:21:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3cfdf8fcaafa62a4123f92eb0f4a72650da3a479'/>
<id>urn:sha1:3cfdf8fcaafa62a4123f92eb0f4a72650da3a479</id>
<content type='text'>
When cmtp_attach_device fails, cmtp_add_connection returns the error value
which leads to the caller to doing fput through sockfd_put. But
cmtp_session kthread, which is stopped in this path will also call fput,
leading to a potential refcount underflow or a use-after-free.

Add a refcount before we signal the kthread to stop. The kthread will try
to grab the cmtp_session_sem mutex before doing the fput, which is held
when get_file is called, so there should be no races there.

Reported-by: Ryota Shiga
Signed-off-by: Thadeu Lima de Souza Cascardo &lt;cascardo@canonical.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Remove unnecessary smp_mb__{before,after}_atomic</title>
<updated>2018-09-27T09:59:58Z</updated>
<author>
<name>Andrea Parri</name>
</author>
<published>2018-08-14T18:41:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5aac49378742a52bbe8af3d25bc51b487be7b17f'/>
<id>urn:sha1:5aac49378742a52bbe8af3d25bc51b487be7b17f</id>
<content type='text'>
The barriers are unneeded; wait_woken() and woken_wake_function()
already provide us with the required synchronization: remove them
and document that we're relying on the (implicit) synchronization
provided by wait_woken() and woken_wake_function().

Signed-off-by: Andrea Parri &lt;andrea.parri@amarulasolutions.com&gt;
Reviewed-by: Brian Norris &lt;computersforpeace@gmail.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: cmtp: fix possible might sleep error in cmtp_session</title>
<updated>2017-06-27T17:32:11Z</updated>
<author>
<name>Jeffy Chen</name>
</author>
<published>2017-06-27T09:34:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f06d977309d09253c744e54e75c5295ecc52b7b4'/>
<id>urn:sha1:f06d977309d09253c744e54e75c5295ecc52b7b4</id>
<content type='text'>
It looks like cmtp_session has same pattern as the issue reported in
old rfcomm:

	while (1) {
		set_current_state(TASK_INTERRUPTIBLE);
		if (condition)
			break;
		// may call might_sleep here
		schedule();
	}
	__set_current_state(TASK_RUNNING);

Which fixed at:
	dfb2fae Bluetooth: Fix nested sleeps

So let's fix it at the same way, also follow the suggestion of:
https://lwn.net/Articles/628628/

Signed-off-by: Jeffy Chen &lt;jeffy.chen@rock-chips.com&gt;
Reviewed-by: Brian Norris &lt;briannorris@chromium.org&gt;
Reviewed-by: AL Yu-Chen Cho &lt;acho@suse.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>networking: introduce and use skb_put_data()</title>
<updated>2017-06-16T15:48:37Z</updated>
<author>
<name>Johannes Berg</name>
</author>
<published>2017-06-16T12:29:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=59ae1d127ac0ae404baf414c434ba2651b793f46'/>
<id>urn:sha1:59ae1d127ac0ae404baf414c434ba2651b793f46</id>
<content type='text'>
A common pattern with skb_put() is to just want to memcpy()
some data into the new space, introduce skb_put_data() for
this.

An spatch similar to the one for skb_put_zero() converts many
of the places using it:

    @@
    identifier p, p2;
    expression len, skb, data;
    type t, t2;
    @@
    (
    -p = skb_put(skb, len);
    +p = skb_put_data(skb, data, len);
    |
    -p = (t)skb_put(skb, len);
    +p = skb_put_data(skb, data, len);
    )
    (
    p2 = (t2)p;
    -memcpy(p2, data, len);
    |
    -memcpy(p, data, len);
    )

    @@
    type t, t2;
    identifier p, p2;
    expression skb, data;
    @@
    t *p;
    ...
    (
    -p = skb_put(skb, sizeof(t));
    +p = skb_put_data(skb, data, sizeof(t));
    |
    -p = (t *)skb_put(skb, sizeof(t));
    +p = skb_put_data(skb, data, sizeof(t));
    )
    (
    p2 = (t2)p;
    -memcpy(p2, data, sizeof(*p));
    |
    -memcpy(p, data, sizeof(*p));
    )

    @@
    expression skb, len, data;
    @@
    -memcpy(skb_put(skb, len), data, len);
    +skb_put_data(skb, data, len);

(again, manually post-processed to retain some comments)

Reviewed-by: Stephen Hemminger &lt;stephen@networkplumber.org&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Delete an unnecessary check before the function call "kfree_skb"</title>
<updated>2015-11-19T16:50:32Z</updated>
<author>
<name>Markus Elfring</name>
</author>
<published>2015-11-14T21:00:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=06fbb3d5c7ff366fe7ab7b4157bdb3096fca6d09'/>
<id>urn:sha1:06fbb3d5c7ff366fe7ab7b4157bdb3096fca6d09</id>
<content type='text'>
The kfree_skb() function tests whether its argument is NULL and then
returns immediately. Thus the test around the call is not needed.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring &lt;elfring@users.sourceforge.net&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: cmtp: Use BIT(x) instead of (1 &lt;&lt; x)</title>
<updated>2015-04-04T05:50:20Z</updated>
<author>
<name>Marcel Holtmann</name>
</author>
<published>2015-04-03T18:02:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b2ddeb11738464ce8f75c15384a3b8132cb80357'/>
<id>urn:sha1:b2ddeb11738464ce8f75c15384a3b8132cb80357</id>
<content type='text'>
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Restrict CMTP flags to only valid ones</title>
<updated>2015-04-02T05:42:21Z</updated>
<author>
<name>Marcel Holtmann</name>
</author>
<published>2015-04-01T20:51:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8bf17a3619250944957c732e71659787528131c3'/>
<id>urn:sha1:8bf17a3619250944957c732e71659787528131c3</id>
<content type='text'>
The CMTP flags should be clearly restricted to valid ones. So this puts
extra checks in place to ensure this.

Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
</entry>
<entry>
<title>Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket</title>
<updated>2014-12-19T12:48:21Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2014-12-19T06:20:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=96c26653ce65bf84f3212f8b00d4316c1efcbf4c'/>
<id>urn:sha1:96c26653ce65bf84f3212f8b00d4316c1efcbf4c</id>
<content type='text'>
... rather than relying on ciptool(8) never passing it anything else.  Give
it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops,
trying to evaluate &amp;l2cap_pi(sock-&gt;sk)-&gt;chan-&gt;dst...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Access CMTP session addresses through L2CAP channel</title>
<updated>2013-10-13T17:00:30Z</updated>
<author>
<name>Marcel Holtmann</name>
</author>
<published>2013-10-13T16:49:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=88f1fd27080013c8216bc6ed26e3c9a184a78588'/>
<id>urn:sha1:88f1fd27080013c8216bc6ed26e3c9a184a78588</id>
<content type='text'>
The L2CAP socket structure does not contain the address information
anymore. They need to be accessed through the L2CAP channel.

Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Johan Hedberg &lt;johan.hedberg@intel.com&gt;
</content>
</entry>
</feed>
