From patchwork Tue Oct 24 22:30:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 830056 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SCbBwGIJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yM7K4255Mz9sNx for ; Wed, 25 Oct 2017 09:31:04 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751696AbdJXWbB (ORCPT ); Tue, 24 Oct 2017 18:31:01 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:46227 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751535AbdJXWa5 (ORCPT ); Tue, 24 Oct 2017 18:30:57 -0400 Received: by mail-pg0-f68.google.com with SMTP id k7so15691880pga.3 for ; Tue, 24 Oct 2017 15:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=t2Et3wIlzHEfHgecsA7TPKikD1uXC6Pm47fhcno4KTc=; b=SCbBwGIJ1GdTP8a4iXINCReH+BkHG9cuiP4xOpsvSKfkvOMm0TRoz+iOz5P9+M7Da7 Br/yHsTDEg9ICLAb+wtaaN84pFrNhNXvRlozz0d3pB6e5Zthh787XaULL6nlIKFDOgJn /JKG07Ys1LUJEOmzCKO0aB6bah5oIQmjeBIOrS1OlK9+cakInCoPVLYUcI9O6u4+xsN0 fEufDsnyrl7EHjYl7n+UvWRtCr3BTXqFKwrZBhGx0L5ZXTptWoBdhSK970K0YeHYlE00 himvQS3h7Pc5mltWEB22gI8639tTUDiEXx8xhOWH9Vrp1Ro7NN898q/zhV2FqhIUii0E TQIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=t2Et3wIlzHEfHgecsA7TPKikD1uXC6Pm47fhcno4KTc=; b=VC1+TLWfSMFQ5Uc8i5Fly7XCq5h4coxVZCQUGxGe2KsgQuYAmrpTaCJ1XIjRrShYFf r/Z11NSBLfmkeQf2kBiGGWaSOPFt+2AOF5ha6bq49etS23x2l5O1/dzQUCeRc2Vs0PAi 5Yj1eAf8+XBV+xwqE44qY0xVfiQG3q8s2AmX88Fv4vSzVGwFfnUbAaiGTUlRL0RQAkck pjxv1YIax76Am0cg3+JXYOyikPXzvn6Bdb07td3XSXHnLmthoInaNh6yQ4SKDsHbdIH2 o5IbxtAyL2ypumfzntv3iFml4jVbR37QuM6G2b198RtO9D3hHmGXDDFLgZA60xhOCJb0 BfBg== X-Gm-Message-State: AMCzsaV59WsT5vnYdbaqrE1ijTn7IRT7JJ4V+aRwZWRG0I1a5zqncGNu yjmw2Cof8nm66g5WJd13mdM6RJt0 X-Google-Smtp-Source: ABhQp+SlisteIepMRysg7O7vFn1Vdl3G54Mdu0zv1RZ825+X7SGAolRo05664e8r4BdK3BvXwmqpNQ== X-Received: by 10.101.72.1 with SMTP id h1mr136266pgs.249.1508884257080; Tue, 24 Oct 2017 15:30:57 -0700 (PDT) Received: from tw-172-25-30-113.office.twttr.net ([8.25.197.25]) by smtp.gmail.com with ESMTPSA id m25sm2293790pfg.49.2017.10.24.15.30.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Oct 2017 15:30:56 -0700 (PDT) From: Cong Wang To: netdev@vger.kernel.org Cc: Cong Wang , Stefan Hajnoczi , Jorgen Hansen Subject: [Patch net-next] vsock: always call vsock_init_tables() Date: Tue, 24 Oct 2017 15:30:37 -0700 Message-Id: <20171024223037.4856-1-xiyou.wangcong@gmail.com> X-Mailer: git-send-email 2.9.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Although CONFIG_VSOCKETS_DIAG depends on CONFIG_VSOCKETS, vsock_init_tables() is not always called, it is called only if other modules call its caller. Therefore if we only enable CONFIG_VSOCKETS_DIAG, it would crash kernel on uninitialized vsock_bind_table. This patch fixes it by moving vsock_init_tables() to its own module_init(). Fixes: 413a4317aca7 ("VSOCK: add sock_diag interface") Reported-by: syzkaller bot Cc: Stefan Hajnoczi Cc: Jorgen Hansen Signed-off-by: Cong Wang Reviewed-by: Stefan Hajnoczi --- net/vmw_vsock/af_vsock.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 98359c19522f..5d28abf87fbf 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -195,7 +195,7 @@ static int vsock_auto_bind(struct vsock_sock *vsk) return __vsock_bind(sk, &local_addr); } -static void vsock_init_tables(void) +static int __init vsock_init_tables(void) { int i; @@ -204,6 +204,7 @@ static void vsock_init_tables(void) for (i = 0; i < ARRAY_SIZE(vsock_connected_table); i++) INIT_LIST_HEAD(&vsock_connected_table[i]); + return 0; } static void __vsock_insert_bound(struct list_head *list, @@ -1957,8 +1958,6 @@ int __vsock_core_init(const struct vsock_transport *t, struct module *owner) vsock_proto.owner = owner; transport = t; - vsock_init_tables(); - vsock_device.minor = MISC_DYNAMIC_MINOR; err = misc_register(&vsock_device); if (err) { @@ -2019,6 +2018,8 @@ const struct vsock_transport *vsock_core_get_transport(void) } EXPORT_SYMBOL_GPL(vsock_core_get_transport); +module_init(vsock_init_tables); + MODULE_AUTHOR("VMware, Inc."); MODULE_DESCRIPTION("VMware Virtual Socket Family"); MODULE_VERSION("1.0.2.0-k");