All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: suravee.suthikulpanit@amd.com, George.Dunlap@eu.citrix.com,
	jacob.shin@amd.com, eddie.dong@intel.com,
	dietmar.hahn@ts.fujitsu.com, jun.nakajima@intel.com,
	xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 01/13] Export hypervisor symbols
Date: Wed, 25 Sep 2013 10:03:23 -0400	[thread overview]
Message-ID: <5242ED2B.8060803@oracle.com> (raw)
In-Reply-To: <5242FE2902000078000F63F9@nat28.tlf.novell.com>

On 09/25/2013 09:15 AM, Jan Beulich wrote:
>>>> On 20.09.13 at 11:42, Boris Ostrovsky <boris.ostrovsky@oracle.com> wrote:
>> +    case XENPF_get_symbols:
>> +    {
>> +        ret = xensyms_read(&op->u.symdata);
>> +        if ( ret >= 0 && __copy_field_to_guest(u_xenpf_op, op, u.symdata) )
>> +            ret = -EFAULT;
>> +    }
>> +    break;
> This yields a positive return value if a symbol was found, 0 if none
> was found, and negative on error. Can we avoid this non-standard
> first aspect?

We need to know on the caller side when EOF is reached. There is no good
error code that I can see that would be appropriate here. ERANGE or ENFILE
are the closest I can imagine but EOF is not really an error so I am not 
sure
this would be the right thing.

We could look at first byte of the string and see where it's a 0 but 
that's also
somewhat non-standard. Encoding type or address as an invalid token also
doesn't look nice.

>
>> +        return 0;
>> +
>> +    spin_lock(&symbols_mutex);
>> +
>> +    if ( symdata->xen_symnum == 0 )
>> +        next_offset = next_symbol = 0;
>> +    else if ( next_symbol != symdata->xen_symnum )
>> +        /* Non-sequential access */
>> +        next_offset = get_symbol_offset(symdata->xen_symnum);
>> +
>> +    symdata->type = symbols_get_symbol_type(next_offset);
>> +    next_offset = symbols_expand_symbol(next_offset, symdata->name,
>> +        sizeof(symdata->name));
>> +    symdata->address = symbols_offsets[symdata->xen_symnum] + SYMBOLS_ORIGIN;
>> +
>> +    next_symbol = symdata->xen_symnum + 1;
>> +
>> +    spin_unlock(&symbols_mutex);
>> +
>> +    return strlen(symdata->name);
> Altogether the changes you do appear to allow the nul terminator
> to be written outside of the passed in array. Hence (a) you need
> to avoid corrupting memory and (b) whether using strlen() here is
> appropriate depends on how you deal with (a).

Yes, I should have passed 'sizeof(symdata->name)-1' to 
symbols_expand_symbol()
(I was thinking of strlen instead of sizeof)

>> +
>> +struct xenpf_symdata {
>> +    /* IN variables */
>> +    uint64_t xen_symnum;
>> +
>> +    /* OUT variables */
>> +    uint64_t address;
>> +    uint64_t type;
> "type" and "xen_symnum" could easily be less than 64 bits wide.

I am trying to avoid 32-bit compatibility issues here. You will see 
sometimes
unnecessary uint64_t in other structures well for the same reason.


-boris

  reply	other threads:[~2013-09-25 14:01 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-20  9:41 [PATCH v2 00/13] x86/PMU: Xen PMU PV support Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 01/13] Export hypervisor symbols Boris Ostrovsky
2013-09-23 19:42   ` Konrad Rzeszutek Wilk
2013-09-23 20:06     ` Boris Ostrovsky
2013-09-24 17:40       ` Konrad Rzeszutek Wilk
2013-09-25 13:15   ` Jan Beulich
2013-09-25 14:03     ` Boris Ostrovsky [this message]
2013-09-25 14:53       ` Jan Beulich
2013-09-20  9:42 ` [PATCH v2 02/13] Set VCPU's is_running flag closer to when the VCPU is dispatched Boris Ostrovsky
2013-09-25 13:42   ` Jan Beulich
2013-09-25 14:08     ` Keir Fraser
2013-09-20  9:42 ` [PATCH v2 03/13] x86/PMU: Stop AMD counters when called from vpmu_save_force() Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 04/13] x86/VPMU: Minor VPMU cleanup Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 05/13] intel/VPMU: Clean up Intel VPMU code Boris Ostrovsky
2013-09-23 11:42   ` Dietmar Hahn
2013-09-23 19:46   ` Konrad Rzeszutek Wilk
2013-09-25 13:55   ` Jan Beulich
2013-09-25 14:39     ` Boris Ostrovsky
2013-09-25 14:57       ` Jan Beulich
2013-09-25 15:37         ` Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 06/13] x86/PMU: Add public xenpmu.h Boris Ostrovsky
2013-09-23 13:04   ` Dietmar Hahn
2013-09-23 13:16     ` Jan Beulich
2013-09-23 14:00       ` Boris Ostrovsky
2013-09-23 13:45     ` Boris Ostrovsky
2013-09-25 14:04   ` Jan Beulich
2013-09-25 15:59     ` Boris Ostrovsky
2013-09-25 16:08       ` Jan Beulich
2013-09-30 13:25     ` Boris Ostrovsky
2013-09-30 13:30       ` Jan Beulich
2013-09-30 13:55         ` Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 07/13] x86/PMU: Make vpmu not HVM-specific Boris Ostrovsky
2013-09-25 14:05   ` Jan Beulich
2013-09-25 14:49     ` Boris Ostrovsky
2013-09-25 14:57       ` Jan Beulich
2013-09-20  9:42 ` [PATCH v2 08/13] x86/PMU: Interface for setting PMU mode and flags Boris Ostrovsky
2013-09-25 14:11   ` Jan Beulich
2013-09-25 14:55     ` Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 09/13] x86/PMU: Initialize PMU for PV guests Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 10/13] x86/PMU: Add support for PMU registes handling on " Boris Ostrovsky
2013-09-23 13:50   ` Dietmar Hahn
2013-09-25 14:23   ` Jan Beulich
2013-09-25 15:03     ` Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 11/13] x86/PMU: Handle PMU interrupts for " Boris Ostrovsky
2013-09-25 14:33   ` Jan Beulich
2013-09-25 14:40     ` Andrew Cooper
2013-09-25 15:52       ` Boris Ostrovsky
2013-09-25 15:19     ` Boris Ostrovsky
2013-09-25 15:25       ` Jan Beulich
2013-09-20  9:42 ` [PATCH v2 12/13] x86/PMU: Save VPMU state for PV guests during context switch Boris Ostrovsky
2013-09-20  9:42 ` [PATCH v2 13/13] x86/PMU: Move vpmu files up from hvm directory Boris Ostrovsky

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=5242ED2B.8060803@oracle.com \
    --to=boris.ostrovsky@oracle.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=dietmar.hahn@ts.fujitsu.com \
    --cc=eddie.dong@intel.com \
    --cc=jacob.shin@amd.com \
    --cc=jun.nakajima@intel.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=xen-devel@lists.xenproject.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.