All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel De Graaf <dgdegra@tycho.nsa.gov>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel@lists.xen.org
Subject: Re: [PATCH 11/18] xen: use XSM instead of IS_PRIV where duplicated
Date: Mon, 06 Aug 2012 11:25:44 -0400	[thread overview]
Message-ID: <501FE1F8.1040100@tycho.nsa.gov> (raw)
In-Reply-To: <501FFC580200007800092FA4@nat28.tlf.novell.com>

On 08/06/2012 11:18 AM, Jan Beulich wrote:
>>>> On 06.08.12 at 16:32, Daniel De Graaf <dgdegra@tycho.nsa.gov> wrote:
>> --- a/xen/arch/x86/domctl.c
>> +++ b/xen/arch/x86/domctl.c
>> @@ -54,6 +54,26 @@ long arch_do_domctl(
>>  
>>      switch ( domctl->cmd )
>>      {
>> +    /* TODO: the following do not have XSM hooks yet */
>> +    case XEN_DOMCTL_set_cpuid:
>> +    case XEN_DOMCTL_suppress_spurious_page_faults:
>> +    case XEN_DOMCTL_debug_op:
>> +    case XEN_DOMCTL_gettscinfo:
>> +    case XEN_DOMCTL_settscinfo:
>> +    case XEN_DOMCTL_audit_p2m:
>> +    case XEN_DOMCTL_gdbsx_guestmemio:
>> +    case XEN_DOMCTL_gdbsx_pausevcpu:
>> +    case XEN_DOMCTL_gdbsx_unpausevcpu:
>> +    case XEN_DOMCTL_gdbsx_domstatus:
>> +    /* getpageframeinfo[23] will leak XEN_DOMCTL_PFINFO_XTAB on target GFNs */
> 
> Is that to state that the patch introduces a leak here? Or are you
> trying to carefully tell us you spotted a problem in the existing
> code?

This is an information leak, not a memory leak. It's a (minor) problem with
the placement of the existing XSM hooks allowing a domain to query information
on remote domains. A later patch fixes this by adding an XSM hook for the
entire query operation.

>> +    case XEN_DOMCTL_getpageframeinfo2:
>> +    case XEN_DOMCTL_getpageframeinfo3:
>> +        if ( !IS_PRIV(current->domain) )
>> +            return -EPERM;
>> +    }
>> +
>> +    switch ( domctl->cmd )
>> +    {
>>  
>>      case XEN_DOMCTL_shadow_op:
>>      {
>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -3366,12 +3366,12 @@ static int hvmop_set_pci_intx_level(
>>      if ( (op.domain > 0) || (op.bus > 0) || (op.device > 31) || (op.intx > 3) )
>>          return -EINVAL;
>>  
>> -    rc = rcu_lock_remote_target_domain_by_id(op.domid, &d);
>> -    if ( rc != 0 )
>> -        return rc;
>> +    d = rcu_lock_domain_by_id(op.domid);
>> +    if ( d == NULL )
>> +        return -ESRCH;
>>  
>>      rc = -EINVAL;
>> -    if ( !is_hvm_domain(d) )
>> +    if ( d == current->domain || !is_hvm_domain(d) )
> 
> What's wrong with rcu_lock_remote_target_domain_by_id() here
> and in other places below? I think this minimally would deserve
> a comment in the patch description, the more that this huge a
> patch is already bad enough to look at.
> 
> Jan
> 

The main reason for this change is that rcu_lock_remote_target_domain_by_id
calls IS_PRIV, and this patch is attempting to remove the duplicated calls.
Would you prefer making another rcu_lock_* function that only checks against
current->domain and doesn't include the IS_PRIV_FOR check?

-- 
Daniel De Graaf
National Security Agency

  reply	other threads:[~2012-08-06 15:25 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-06 14:32 [PATCH 00/18] RFC: Merge IS_PRIV checks into XSM hooks Daniel De Graaf
2012-08-06 14:32 ` [PATCH 01/18] xsm/flask: remove inherited class attributes Daniel De Graaf
2012-08-06 14:32 ` [PATCH 02/18] xsm/flask: remove unneeded create_sid field Daniel De Graaf
2012-08-06 14:32 ` [PATCH 03/18] xsm/flask: add domain relabel support Daniel De Graaf
2012-08-06 14:32 ` [PATCH 04/18] libxl: introduce XSM relabel on build Daniel De Graaf
2012-08-06 14:32 ` [PATCH 05/18] flask/policy: Add domain relabel example Daniel De Graaf
2012-08-06 14:32 ` [PATCH 06/18] xsm, arch/x86: add distinct XSM hooks for map/unmap Daniel De Graaf
2012-08-06 14:32 ` [PATCH 07/18] arch/x86: add missing XSM checks to XENPF_ commands Daniel De Graaf
2012-08-06 14:57   ` Jan Beulich
2012-08-06 15:06     ` Daniel De Graaf
2012-08-06 14:32 ` [PATCH 08/18] xen: Add DOMID_SELF support to rcu_lock_domain_by_id Daniel De Graaf
2012-08-06 15:07   ` Jan Beulich
2012-08-06 15:19     ` Daniel De Graaf
2012-08-06 15:50       ` Jan Beulich
2012-08-06 16:38         ` Daniel De Graaf
2012-08-07  7:00           ` Jan Beulich
2012-08-06 14:32 ` [PATCH 09/18] xsm/flask: Add checks on the domain performing the set_target operation Daniel De Graaf
2012-08-06 14:32 ` [PATCH 10/18] xsm: Add IS_PRIV checks to dummy XSM module Daniel De Graaf
2012-08-06 14:32 ` [PATCH 11/18] xen: use XSM instead of IS_PRIV where duplicated Daniel De Graaf
2012-08-06 15:18   ` Jan Beulich
2012-08-06 15:25     ` Daniel De Graaf [this message]
2012-08-06 15:53       ` Jan Beulich
2012-08-06 14:32 ` [PATCH 12/18] xsm: Add missing domctl and mem_sharing hooks Daniel De Graaf
2012-08-06 18:53   ` Keir Fraser
2012-08-06 19:30     ` Daniel De Graaf
2012-08-06 14:32 ` [PATCH 13/18] tmem: Add access control check Daniel De Graaf
2012-08-06 14:32 ` [PATCH 14/18] xsm: remove unneeded xsm_call macro Daniel De Graaf
2012-08-06 14:32 ` [PATCH 15/18] xsm/flask: add distinct SIDs for self/target access Daniel De Graaf
2012-08-06 14:32 ` [PATCH 16/18] arch/x86: use XSM hooks for get_pg_owner access checks Daniel De Graaf
2012-08-06 15:26   ` Jan Beulich
2012-08-06 16:29     ` Daniel De Graaf
2012-08-07  6:55       ` Jan Beulich
2012-08-07 13:44         ` Daniel De Graaf
2012-08-07 13:56           ` Jan Beulich
2012-08-06 14:32 ` [PATCH 17/18] xen: Add XSM hook for XENMEM_exchange Daniel De Graaf
2012-08-06 14:32 ` [PATCH 18/18] xen: remove rcu_lock_target_domain_by_id Daniel De Graaf
2012-08-07  5:12 ` [PATCH 00/18] RFC: Merge IS_PRIV checks into XSM hooks Shakeel Butt
2012-08-07 17:46   ` Daniel De Graaf
2012-08-07 18:07     ` Shakeel Butt
2012-08-07 18:06       ` Konrad Rzeszutek Wilk
2012-08-07 18:20       ` Daniel De Graaf

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=501FE1F8.1040100@tycho.nsa.gov \
    --to=dgdegra@tycho.nsa.gov \
    --cc=JBeulich@suse.com \
    --cc=xen-devel@lists.xen.org \
    /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.