Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4881433pxj; Wed, 9 Jun 2021 04:20:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgyWZdqPV4Gu1YczZI1tH2XSpdCZVyLkKGeHboUgMd9ZoA2Kj59LDMQcWvtIXJt5zjkTlc X-Received: by 2002:aa7:d5c6:: with SMTP id d6mr29623681eds.290.1623237656958; Wed, 09 Jun 2021 04:20:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623237656; cv=none; d=google.com; s=arc-20160816; b=bD9EnQznCeu1eUseD98dwl8L7ZA5JGB66FbwPe+es79IuU0GbL1Y83fIJl98GKoW+u DFG+SfQRwaDuI2/lwQgLHmjGX4YQJTqGFo5pL6dAhWNraulb+w8Edkddzuy0idi+Ggaa AEbOelZluNBN2JkLD+UWZsGV4IHeM47wXsspqbV6UUWdBzjRlDlebP/sz2ouTBquqqIS eE+TA5qwkj9RJaVYZTZNxXhJS3bXg/w/YkrIEnPCGP3C732MAbCOFQ+QvSo+WgWavO4j RmgtCdl9ClB1mdElGMCHgs2Aaw6c/qdwSxlW0JZBdWjBTpDdp3D+A8eo+WxQJrVlEQws +P4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=z5nmBdsM/Bg4zx+lkbVnuk6cdv4HK02/MLfKJMHN3jw=; b=DAmeDsHMQ0nG4uB24Z+pWPraZasLUqO3GV04QzR9nseKLeCt6OK2uuqgCT+08tb54R p+UoA/zOv+3j0iBsp1+w+k1tXPpKklL1Bi/hu0MN+Lu5bMVwqJ0RJFHRzsJselDCo6hP lAb0sfXrWCbULeEoQybdIzTI+Z+4mNuczAr4m1U1GZD55lCgtUM2JxCpUZAjn946k2ab vtnlMwqpw/uFgGsYvNzHDDmaOyCmu0PV2nwfe1wiUGlgR4cUOpblBTOTbdgDvuMkk5Kh M02AV1QUcvAT8cDCVy655nn0GvgyJTqu88uQrebwgD0VENYcexbQDWSv8Bo6HFgjeH8E Gg0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=s513FVk3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bt10si2223946ejb.390.2021.06.09.04.20.33; Wed, 09 Jun 2021 04:20:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=s513FVk3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238631AbhFHT3l (ORCPT + 99 others); Tue, 8 Jun 2021 15:29:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:39732 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236062AbhFHTQJ (ORCPT ); Tue, 8 Jun 2021 15:16:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 95CD161969; Tue, 8 Jun 2021 18:50:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623178253; bh=XP8RtZB5I8hcyEmuu0P6ZC+uh588io2AMGX5lGpuJJs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s513FVk3HQp7sLTYSjQl1CJpEl7f4Vad8NfutD2Au08l/ey0B7bqdVsjb60MymbjZ pK4wZxqcVjZJcwhBz1MjQyeaCeUkFePyJIwPSzv8bC6waVdCxjnUfkTLu8BI67+4IE RuLx5V73HgMK5+Bl+dTrWSkMQ8WkzUTwdIjwUY9A= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot+80fb126e7f7d8b1a5914@syzkaller.appspotmail.com, butt3rflyh4ck , Krzysztof Kozlowski , Jakub Kicinski Subject: [PATCH 5.12 134/161] nfc: fix NULL ptr dereference in llcp_sock_getname() after failed connect Date: Tue, 8 Jun 2021 20:27:44 +0200 Message-Id: <20210608175949.976605371@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210608175945.476074951@linuxfoundation.org> References: <20210608175945.476074951@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Krzysztof Kozlowski commit 4ac06a1e013cf5fdd963317ffd3b968560f33bba upstream. It's possible to trigger NULL pointer dereference by local unprivileged user, when calling getsockname() after failed bind() (e.g. the bind fails because LLCP_SAP_MAX used as SAP): BUG: kernel NULL pointer dereference, address: 0000000000000000 CPU: 1 PID: 426 Comm: llcp_sock_getna Not tainted 5.13.0-rc2-next-20210521+ #9 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1 04/01/2014 Call Trace: llcp_sock_getname+0xb1/0xe0 __sys_getpeername+0x95/0xc0 ? lockdep_hardirqs_on_prepare+0xd5/0x180 ? syscall_enter_from_user_mode+0x1c/0x40 __x64_sys_getpeername+0x11/0x20 do_syscall_64+0x36/0x70 entry_SYSCALL_64_after_hwframe+0x44/0xae This can be reproduced with Syzkaller C repro (bind followed by getpeername): https://syzkaller.appspot.com/x/repro.c?x=14def446e00000 Cc: Fixes: d646960f7986 ("NFC: Initial LLCP support") Reported-by: syzbot+80fb126e7f7d8b1a5914@syzkaller.appspotmail.com Reported-by: butt3rflyh4ck Signed-off-by: Krzysztof Kozlowski Link: https://lore.kernel.org/r/20210531072138.5219-1-krzysztof.kozlowski@canonical.com Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- net/nfc/llcp_sock.c | 2 ++ 1 file changed, 2 insertions(+) --- a/net/nfc/llcp_sock.c +++ b/net/nfc/llcp_sock.c @@ -110,6 +110,7 @@ static int llcp_sock_bind(struct socket if (!llcp_sock->service_name) { nfc_llcp_local_put(llcp_sock->local); llcp_sock->local = NULL; + llcp_sock->dev = NULL; ret = -ENOMEM; goto put_dev; } @@ -119,6 +120,7 @@ static int llcp_sock_bind(struct socket llcp_sock->local = NULL; kfree(llcp_sock->service_name); llcp_sock->service_name = NULL; + llcp_sock->dev = NULL; ret = -EADDRINUSE; goto put_dev; }