From patchwork Thu Apr 6 21:18:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kees Cook X-Patchwork-Id: 9668471 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B8876602B3 for ; Thu, 6 Apr 2017 21:21:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0044C285CF for ; Thu, 6 Apr 2017 21:21:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E921D285E9; Thu, 6 Apr 2017 21:21:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from mother.openwall.net (mother.openwall.net [195.42.179.200]) by mail.wl.linuxfoundation.org (Postfix) with SMTP id 1EC93285CF for ; Thu, 6 Apr 2017 21:21:25 +0000 (UTC) Received: (qmail 1332 invoked by uid 550); 6 Apr 2017 21:19:46 -0000 Mailing-List: contact kernel-hardening-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Delivered-To: mailing list kernel-hardening@lists.openwall.com Received: (qmail 29939 invoked from network); 6 Apr 2017 21:19:24 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lh+XgZm/sKh3mjYJvsDnUns6I3D6GcstGpJdirvs4So=; b=Lh2/ODeNEKTSbbdqJz3I6F8lYjJJ9MI5HoNESraB0+PGT0BF/O/n+2DBTb+33WXwKX kHdT8Qg2fs30NBHsbMFY91FXOmXT7sw23DSE+cXiKOXJE6Vnqw05PqnM5sD0sBweRv/w zG7gYybC0lNzxU7VrMJz7RM16Q0a3/KjMpMyE= 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:in-reply-to :references; bh=lh+XgZm/sKh3mjYJvsDnUns6I3D6GcstGpJdirvs4So=; b=Nr1Mk9S5Q01/3dfw5BZzyWIJRwWm4lIJHkf3cFuuoYYlWF0v+tgwv1VdRjomHh+aDk E8X7gdYqSwwB3diu16u/jNekh5UENS2bpYS9FPP+65mHzSiCR4L2UyxEEiYNQKHtszx3 x0vo2OXIYcEVS9qQm/G85HKPFiXs/4uliciT07rJ16qp7PD3cZMac8WbpXpJCX5hHUS8 Lv+5s4jgoHl+br6usnPjU8nVZgiMO6i0/++ds/8QTgIC5+RifWEJ5BWR37uz3SMwnKMZ 4cJLguhIto48T4dNX9WFt2ArPxmft/p5lnBJmgYuhyqeyf6YewwM/uwi6KLOFIo7075s guAQ== X-Gm-Message-State: AFeK/H2M1oIFoX7wXFeBDtJdbPHK/rXlo14F0XyINAMcu6HGOyE98jXE8vreGYocNp2lIjv4 X-Received: by 10.84.225.17 with SMTP id t17mr46604461plj.153.1491513552467; Thu, 06 Apr 2017 14:19:12 -0700 (PDT) From: Kees Cook To: kernel-hardening@lists.openwall.com Cc: Kees Cook , Michael Leibowitz Date: Thu, 6 Apr 2017 14:18:32 -0700 Message-Id: <1491513513-84351-18-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491513513-84351-1-git-send-email-keescook@chromium.org> References: <1491513513-84351-1-git-send-email-keescook@chromium.org> Subject: [kernel-hardening] [PATCH 17/18] sgi-xp: Use designated initializers X-Virus-Scanned: ClamAV using ClamSMTP Prepare to mark sensitive kernel structures for randomization by making sure they're using designated initializers. These were identified during allyesconfig builds of x86, arm, and arm64, with most initializer fixes extracted from grsecurity. To avoid casting, this implements dummy functions with full function prototypes. Signed-off-by: Kees Cook --- drivers/misc/sgi-xp/xp.h | 2 +- drivers/misc/sgi-xp/xp_main.c | 59 ++++++++++++++++++++++++++++--------------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/drivers/misc/sgi-xp/xp.h b/drivers/misc/sgi-xp/xp.h index a23a373d8707..c862cd4583cc 100644 --- a/drivers/misc/sgi-xp/xp.h +++ b/drivers/misc/sgi-xp/xp.h @@ -288,7 +288,7 @@ struct xpc_interface { xpc_notify_func, void *); void (*received) (short, int, void *); enum xp_retval (*partid_to_nasids) (short, void *); -} __no_randomize_layout; +}; extern struct xpc_interface xpc_interface; diff --git a/drivers/misc/sgi-xp/xp_main.c b/drivers/misc/sgi-xp/xp_main.c index 01be66d02ca8..bb47f9d9b68a 100644 --- a/drivers/misc/sgi-xp/xp_main.c +++ b/drivers/misc/sgi-xp/xp_main.c @@ -71,20 +71,44 @@ EXPORT_SYMBOL_GPL(xpc_registrations); /* * Initialize the XPC interface to indicate that XPC isn't loaded. */ -static enum xp_retval -xpc_notloaded(void) +static void xpc_notloaded_connect(int ch_number) +{ } + +static void xpc_notloaded_disconnect(int ch_number) +{ } + +static enum xp_retval xpc_notloaded_send(short partid, int ch_number, + u32 flags, void *payload, + u16 payload_size) +{ + return xpNotLoaded; +} + +static enum xp_retval xpc_notloaded_send_notify(short partid, int ch_number, + u32 flags, void *payload, + u16 payload_size, + xpc_notify_func func, + void *key) +{ + return xpNotLoaded; +} + +static void xpc_notloaded_received(short partid, int ch_number, void *payload) +{ } + +static enum xp_retval xpc_notloaded_partid_to_nasids(short partid, + void *nasid_mask) { return xpNotLoaded; } struct xpc_interface xpc_interface = { - (void (*)(int))xpc_notloaded, - (void (*)(int))xpc_notloaded, - (enum xp_retval(*)(short, int, u32, void *, u16))xpc_notloaded, - (enum xp_retval(*)(short, int, u32, void *, u16, xpc_notify_func, - void *))xpc_notloaded, - (void (*)(short, int, void *))xpc_notloaded, - (enum xp_retval(*)(short, void *))xpc_notloaded + .connect = xpc_notloaded_connect, + .disconnect = xpc_notloaded_disconnect, + .send = xpc_notloaded_send, + .send_notify = xpc_notloaded_send_notify, + .received = xpc_notloaded_received, + .partid_to_nasids = xpc_notloaded_partid_to_nasids }; EXPORT_SYMBOL_GPL(xpc_interface); @@ -115,17 +139,12 @@ EXPORT_SYMBOL_GPL(xpc_set_interface); void xpc_clear_interface(void) { - xpc_interface.connect = (void (*)(int))xpc_notloaded; - xpc_interface.disconnect = (void (*)(int))xpc_notloaded; - xpc_interface.send = (enum xp_retval(*)(short, int, u32, void *, u16)) - xpc_notloaded; - xpc_interface.send_notify = (enum xp_retval(*)(short, int, u32, void *, - u16, xpc_notify_func, - void *))xpc_notloaded; - xpc_interface.received = (void (*)(short, int, void *)) - xpc_notloaded; - xpc_interface.partid_to_nasids = (enum xp_retval(*)(short, void *)) - xpc_notloaded; + xpc_interface.connect = xpc_notloaded_connect; + xpc_interface.disconnect = xpc_notloaded_disconnect; + xpc_interface.send = xpc_notloaded_send; + xpc_interface.send_notify = xpc_notloaded_send_notify; + xpc_interface.received = xpc_notloaded_received; + xpc_interface.partid_to_nasids = xpc_notloaded_partid_to_nasids; } EXPORT_SYMBOL_GPL(xpc_clear_interface);