From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <545B3148.8000704@lab.ntt.co.jp> Date: Thu, 06 Nov 2014 17:28:56 +0900 From: Toshiaki Makita MIME-Version: 1.0 References: <1415255192-13584-1-git-send-email-suhyun.park@ahnlab.com> <545B1E27.3080302@lab.ntt.co.jp> <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> In-Reply-To: <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> Content-Type: text/plain; charset="euc-kr" Content-Transfer-Encoding: base64 Subject: Re: [Bridge] [PATCH] bridge: missing null bridge device check causing null pointer dereference (bugfix) List-Id: Linux Ethernet Bridging List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?EUC-KR?B?udq89sf2?= , Stephen Hemminger , "David S. Miller" Cc: "netdev@vger.kernel.org" , "bridge@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" T24gMjAxNC8xMS8wNiAxNjo1OCwgudq89sf2IHdyb3RlOgo+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+PiBGcm9tOiBUb3NoaWFraSBNYWtpdGEgW21haWx0bzptYWtpdGEudG9zaGlha2lA bGFiLm50dC5jby5qcF0KPj4gU2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDA2LCAyMDE0IDQ6MDcg UE0KPj4gVG86ILnavPbH9jsgU3RlcGhlbiBIZW1taW5nZXI7IERhdmlkIFMuIE1pbGxlcgo+PiBD YzogYnJpZGdlQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnOyBuZXRkZXZAdmdlci5rZXJuZWwu b3JnOyBsaW51eC0KPj4ga2VybmVsQHZnZXIua2VybmVsLm9yZwo+PiBTdWJqZWN0OiBSZTogW1BB VENIXSBicmlkZ2U6IG1pc3NpbmcgbnVsbCBicmlkZ2UgZGV2aWNlIGNoZWNrIGNhdXNpbmcgbnVs bAo+PiBwb2ludGVyIGRlcmVmZXJlbmNlIChidWdmaXgpCj4+Cj4+IE9uIDIwMTQvMTEvMDYgMTU6 MjYsIFN1LUh5dW4gUGFyayB3cm90ZToKPj4+IHRoZSBicmlkZ2UgZGV2aWNlIGNhbiBiZSBudWxs IGlmIHRoZSBicmlkZ2UgaXMgYmVpbmcgZGVsZXRlZCB3aGlsZQo+Pj4gcHJvY2Vzc2luZyB0aGUg cGFja2V0LCB3aGljaCBjYXVzZXMgdGhlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbgo+PiBz d2l0Y2ggc3RhdGVtZW50Lgo+Pgo+PiBIb3cgY2FuIHRoaXMgaGFwcGVuPz8KPj4gSXQgaXMgZ3Vh cmRlZCBieSByY3UuCj4+IG5ldGRldl9yeF9oYW5kbGVyX3VucmVnaXN0ZXIoKSBlbnN1cmVzIHJ4 X2hhbmRsZXJfZGF0YSBpcyBub24gTlVMTC4KPj4KPiAKPiBUaGUgUkNVIHByb3RlY3QgcnhfaGFu ZGxlcl9kYXRhLCBub3QgdGhlIGJyaWRnZSBtZW1iZXIgcG9ydC4gSXQgY2FuIGJlIE5VTEwgYWNj b3JkaW5nIHRvIGJlbG93IGNvZGUuCj4gCj4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2JyaWRn ZV9wb3J0ICpicl9wb3J0X2dldF9yY3UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikgewo+ IAlzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0ID0gcmN1X2RlcmVmZXJlbmNlKGRldi0+cnhf aGFuZGxlcl9kYXRhKTsKPiAJcmV0dXJuIGJyX3BvcnRfZXhpc3RzKGRldikgPyBwb3J0IDogTlVM TDsgCj4gfQoKU2VlbXMgdG8gaGF2ZSBiZWVuIGZpeGVkIGZvciBhIHllYXIuCjcxNmVjMDUyZDIy OCAoImJyaWRnZTogZml4IE5VTEwgcG9pbnRlciBkZXJlZiBvZiBicl9wb3J0X2dldF9yY3UiKQoK VGhhbmtzLApUb3NoaWFraSBNYWtpdGEKCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752047AbaKFI3N (ORCPT ); Thu, 6 Nov 2014 03:29:13 -0500 Received: from tama500.ecl.ntt.co.jp ([129.60.39.148]:59335 "EHLO tama500.ecl.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751396AbaKFI3K (ORCPT ); Thu, 6 Nov 2014 03:29:10 -0500 Message-ID: <545B3148.8000704@lab.ntt.co.jp> Date: Thu, 06 Nov 2014 17:28:56 +0900 From: Toshiaki Makita User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: =?EUC-KR?B?udq89sf2?= , Stephen Hemminger , "David S. Miller" CC: "bridge@lists.linux-foundation.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] bridge: missing null bridge device check causing null pointer dereference (bugfix) References: <1415255192-13584-1-git-send-email-suhyun.park@ahnlab.com> <545B1E27.3080302@lab.ntt.co.jp> <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> In-Reply-To: <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> Content-Type: text/plain; charset=euc-kr Content-Transfer-Encoding: 8bit X-TM-AS-MML: disable Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2014/11/06 16:58, ¹Ú¼öÇö wrote: >> -----Original Message----- >> From: Toshiaki Makita [mailto:makita.toshiaki@lab.ntt.co.jp] >> Sent: Thursday, November 06, 2014 4:07 PM >> To: ¹Ú¼öÇö; Stephen Hemminger; David S. Miller >> Cc: bridge@lists.linux-foundation.org; netdev@vger.kernel.org; linux- >> kernel@vger.kernel.org >> Subject: Re: [PATCH] bridge: missing null bridge device check causing null >> pointer dereference (bugfix) >> >> On 2014/11/06 15:26, Su-Hyun Park wrote: >>> the bridge device can be null if the bridge is being deleted while >>> processing the packet, which causes the null pointer dereference in >> switch statement. >> >> How can this happen?? >> It is guarded by rcu. >> netdev_rx_handler_unregister() ensures rx_handler_data is non NULL. >> > > The RCU protect rx_handler_data, not the bridge member port. It can be NULL according to below code. > > static inline struct net_bridge_port *br_port_get_rcu(const struct net_device *dev) { > struct net_bridge_port *port = rcu_dereference(dev->rx_handler_data); > return br_port_exists(dev) ? port : NULL; > } Seems to have been fixed for a year. 716ec052d228 ("bridge: fix NULL pointer deref of br_port_get_rcu") Thanks, Toshiaki Makita From mboxrd@z Thu Jan 1 00:00:00 1970 From: Toshiaki Makita Subject: Re: [PATCH] bridge: missing null bridge device check causing null pointer dereference (bugfix) Date: Thu, 06 Nov 2014 17:28:56 +0900 Message-ID: <545B3148.8000704@lab.ntt.co.jp> References: <1415255192-13584-1-git-send-email-suhyun.park@ahnlab.com> <545B1E27.3080302@lab.ntt.co.jp> <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> Mime-Version: 1.0 Content-Type: text/plain; charset=euc-kr Content-Transfer-Encoding: quoted-printable Cc: "netdev@vger.kernel.org" , "bridge@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" To: =?EUC-KR?B?udq89sf2?= , Stephen Hemminger , "David S. Miller" Return-path: In-Reply-To: <8D1F1238A24CE743B8F3CED0F137C69E408AA087@EXMB02.ahnbang.ahnlab.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: bridge-bounces@lists.linux-foundation.org Errors-To: bridge-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org On 2014/11/06 16:58, =B9=DA=BC=F6=C7=F6 wrote: >> -----Original Message----- >> From: Toshiaki Makita [mailto:makita.toshiaki@lab.ntt.co.jp] >> Sent: Thursday, November 06, 2014 4:07 PM >> To: =B9=DA=BC=F6=C7=F6; Stephen Hemminger; David S. Miller >> Cc: bridge@lists.linux-foundation.org; netdev@vger.kernel.org; linux- >> kernel@vger.kernel.org >> Subject: Re: [PATCH] bridge: missing null bridge device check causing = null >> pointer dereference (bugfix) >> >> On 2014/11/06 15:26, Su-Hyun Park wrote: >>> the bridge device can be null if the bridge is being deleted while >>> processing the packet, which causes the null pointer dereference in >> switch statement. >> >> How can this happen?? >> It is guarded by rcu. >> netdev_rx_handler_unregister() ensures rx_handler_data is non NULL. >> >=20 > The RCU protect rx_handler_data, not the bridge member port. It can be = NULL according to below code. >=20 > static inline struct net_bridge_port *br_port_get_rcu(const struct net_= device *dev) { > struct net_bridge_port *port =3D rcu_dereference(dev->rx_handler_data)= ; > return br_port_exists(dev) ? port : NULL;=20 > } Seems to have been fixed for a year. 716ec052d228 ("bridge: fix NULL pointer deref of br_port_get_rcu") Thanks, Toshiaki Makita