From: Petko Manolov <petkan@mip-labs.com>
To: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org,
Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>,
linux-security-module@vger.kernel.org,
linux-ima-devel@lists.sourceforge.net,
Dave Young <dyoung@redhat.com>
Subject: Re: [PATCH 1/7] ima: on soft reboot, restore the measurement list
Date: Fri, 5 Aug 2016 11:44:25 +0300 [thread overview]
Message-ID: <20160805084425.GA7572@localhost> (raw)
In-Reply-To: <1470313475-20090-2-git-send-email-zohar@linux.vnet.ibm.com>
On 16-08-04 08:24:29, Mimi Zohar wrote:
> The TPM PCRs are only reset on a hard reboot. In order to validate a
> TPM's quote after a soft reboot (eg. kexec -e), the IMA measurement list
> of the running kernel must be saved and restored on boot. This patch
> restores the measurement list.
>
> Changelog:
> - call ima_load_kexec_buffer() (Thiago)
>
> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
> ---
> security/integrity/ima/Makefile | 1 +
> security/integrity/ima/ima.h | 10 ++
> security/integrity/ima/ima_init.c | 2 +
> security/integrity/ima/ima_kexec.c | 55 +++++++++++
> security/integrity/ima/ima_queue.c | 10 ++
> security/integrity/ima/ima_template.c | 171 ++++++++++++++++++++++++++++++++++
> 6 files changed, 249 insertions(+)
> create mode 100644 security/integrity/ima/ima_kexec.c
>
> diff --git a/security/integrity/ima/Makefile b/security/integrity/ima/Makefile
> index c34599f..c0ce7b1 100644
> --- a/security/integrity/ima/Makefile
> +++ b/security/integrity/ima/Makefile
> @@ -8,4 +8,5 @@ obj-$(CONFIG_IMA) += ima.o
> ima-y := ima_fs.o ima_queue.o ima_init.o ima_main.o ima_crypto.o ima_api.o \
> ima_policy.o ima_template.o ima_template_lib.o ima_buffer.o
> ima-$(CONFIG_IMA_APPRAISE) += ima_appraise.o
> +ima-$(CONFIG_KEXEC_FILE) += ima_kexec.o
> obj-$(CONFIG_IMA_BLACKLIST_KEYRING) += ima_mok.o
> diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
> index b5728da..84e8d36 100644
> --- a/security/integrity/ima/ima.h
> +++ b/security/integrity/ima/ima.h
> @@ -102,6 +102,13 @@ struct ima_queue_entry {
> };
> extern struct list_head ima_measurements; /* list of all measurements */
>
> +/* Some details preceding the binary serialized measurement list */
> +struct ima_kexec_hdr {
> + unsigned short version;
> + unsigned long buffer_size;
> + unsigned long count;
> +} __packed;
Unless there is no real need for this structure to be packed i suggest dropping
the attribute. When referenced through pointer 32bit ARM and MIPS (and likely
all other 32bit RISC CPUs) use rather inefficient byte loads and stores.
Worse, if, for example, ->count is going to be read/written concurrently from
multiple threads we get torn loads/stores thus losing atomicity of the access.
Petko
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Petko Manolov <petkan@mip-labs.com>
To: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: linux-security-module@vger.kernel.org,
linux-ima-devel@lists.sourceforge.net,
Dave Young <dyoung@redhat.com>,
kexec@lists.infradead.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org,
Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
Subject: Re: [PATCH 1/7] ima: on soft reboot, restore the measurement list
Date: Fri, 5 Aug 2016 11:44:25 +0300 [thread overview]
Message-ID: <20160805084425.GA7572@localhost> (raw)
In-Reply-To: <1470313475-20090-2-git-send-email-zohar@linux.vnet.ibm.com>
On 16-08-04 08:24:29, Mimi Zohar wrote:
> The TPM PCRs are only reset on a hard reboot. In order to validate a
> TPM's quote after a soft reboot (eg. kexec -e), the IMA measurement list
> of the running kernel must be saved and restored on boot. This patch
> restores the measurement list.
>
> Changelog:
> - call ima_load_kexec_buffer() (Thiago)
>
> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
> ---
> security/integrity/ima/Makefile | 1 +
> security/integrity/ima/ima.h | 10 ++
> security/integrity/ima/ima_init.c | 2 +
> security/integrity/ima/ima_kexec.c | 55 +++++++++++
> security/integrity/ima/ima_queue.c | 10 ++
> security/integrity/ima/ima_template.c | 171 ++++++++++++++++++++++++++++++++++
> 6 files changed, 249 insertions(+)
> create mode 100644 security/integrity/ima/ima_kexec.c
>
> diff --git a/security/integrity/ima/Makefile b/security/integrity/ima/Makefile
> index c34599f..c0ce7b1 100644
> --- a/security/integrity/ima/Makefile
> +++ b/security/integrity/ima/Makefile
> @@ -8,4 +8,5 @@ obj-$(CONFIG_IMA) += ima.o
> ima-y := ima_fs.o ima_queue.o ima_init.o ima_main.o ima_crypto.o ima_api.o \
> ima_policy.o ima_template.o ima_template_lib.o ima_buffer.o
> ima-$(CONFIG_IMA_APPRAISE) += ima_appraise.o
> +ima-$(CONFIG_KEXEC_FILE) += ima_kexec.o
> obj-$(CONFIG_IMA_BLACKLIST_KEYRING) += ima_mok.o
> diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h
> index b5728da..84e8d36 100644
> --- a/security/integrity/ima/ima.h
> +++ b/security/integrity/ima/ima.h
> @@ -102,6 +102,13 @@ struct ima_queue_entry {
> };
> extern struct list_head ima_measurements; /* list of all measurements */
>
> +/* Some details preceding the binary serialized measurement list */
> +struct ima_kexec_hdr {
> + unsigned short version;
> + unsigned long buffer_size;
> + unsigned long count;
> +} __packed;
Unless there is no real need for this structure to be packed i suggest dropping
the attribute. When referenced through pointer 32bit ARM and MIPS (and likely
all other 32bit RISC CPUs) use rather inefficient byte loads and stores.
Worse, if, for example, ->count is going to be read/written concurrently from
multiple threads we get torn loads/stores thus losing atomicity of the access.
Petko
next prev parent reply other threads:[~2016-08-05 8:45 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-04 12:24 [PATCH 0/7] ima: carry the measurement list across kexec Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 1/7] ima: on soft reboot, restore the measurement list Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-05 8:44 ` Petko Manolov [this message]
2016-08-05 8:44 ` Petko Manolov
2016-08-05 13:34 ` Mimi Zohar
2016-08-05 13:34 ` Mimi Zohar
2016-08-05 15:56 ` Petko Manolov
2016-08-05 15:56 ` Petko Manolov
2016-08-09 10:59 ` Michael Ellerman
2016-08-09 10:59 ` Michael Ellerman
2016-08-09 13:01 ` Mimi Zohar
2016-08-09 13:01 ` Mimi Zohar
2016-08-09 13:19 ` Thiago Jung Bauermann
2016-08-09 13:19 ` Thiago Jung Bauermann
2016-08-09 13:35 ` David Laight
2016-08-09 13:35 ` David Laight
2016-08-09 13:35 ` David Laight
2016-08-09 14:02 ` Mimi Zohar
2016-08-09 14:02 ` Mimi Zohar
2016-08-09 13:55 ` Mimi Zohar
2016-08-09 13:55 ` Mimi Zohar
2016-08-09 14:06 ` Mimi Zohar
2016-08-09 14:06 ` Mimi Zohar
2016-08-09 23:13 ` Samuel Mendoza-Jonas
2016-08-09 23:13 ` Samuel Mendoza-Jonas
2016-08-10 3:41 ` Michael Ellerman
2016-08-10 3:41 ` Michael Ellerman
2016-08-10 5:05 ` Thiago Jung Bauermann
2016-08-10 5:05 ` Thiago Jung Bauermann
2016-08-10 9:52 ` Michael Ellerman
2016-08-10 9:52 ` Michael Ellerman
2016-08-10 12:54 ` Mimi Zohar
2016-08-10 12:54 ` Mimi Zohar
2016-08-10 14:32 ` [Linux-ima-devel] " Petko Manolov
2016-08-10 14:32 ` Petko Manolov
2016-08-10 14:40 ` David Laight
2016-08-10 14:40 ` David Laight
2016-08-10 14:40 ` David Laight
2016-08-10 15:48 ` Petko Manolov
2016-08-10 15:48 ` Petko Manolov
2016-08-04 12:24 ` [PATCH 2/7] ima: permit duplicate measurement list entries Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 3/7] ima: maintain memory size needed for serializing the measurement list Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 4/7] ima: serialize the binary_runtime_measurements Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 5/7] ima: on soft reboot, save the measurement list Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 6/7] ima: store the builtin/custom template definitions in a list Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-04 12:24 ` [PATCH 7/7] ima: support restoring multiple template formats Mimi Zohar
2016-08-04 12:24 ` Mimi Zohar
2016-08-09 5:19 ` [PATCH 0/7] ima: carry the measurement list across kexec Balbir Singh
2016-08-09 5:19 ` Balbir Singh
2016-08-09 12:36 ` Mimi Zohar
2016-08-09 12:36 ` Mimi Zohar
2016-08-11 7:38 ` Balbir Singh
2016-08-11 7:38 ` Balbir Singh
2016-08-11 11:25 ` Mimi Zohar
2016-08-11 11:25 ` Mimi Zohar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160805084425.GA7572@localhost \
--to=petkan@mip-labs.com \
--cc=bauerman@linux.vnet.ibm.com \
--cc=dyoung@redhat.com \
--cc=kexec@lists.infradead.org \
--cc=linux-ima-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=zohar@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.