Project

General

Profile

Actions

Bug #3511

closed

dtrace.c erroneously checks for memory alignment on amd64

Added by Christopher Siden over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
Normal
Category:
DTrace
Start date:
2013-01-31
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

From Sebastien Roy's bug report at Delphix:

#ifndef __i386
#define DTRACE_ALIGNCHECK(addr, size, flags)                            \\\\
        if (addr & (size - 1)) {                                        \\\\
                *flags |= CPU_DTRACE_BADALIGN;                          \\\\
                cpu_core[CPU->cpu_id].cpuc_dtrace_illval = addr;        \\\\
                return (0);                                             \\\\
        }
#else
#define DTRACE_ALIGNCHECK(addr, size, flags)
#endif

That ifndef above should be __x86.  __i386 is only defined for 32-bit
compilations, while __x86 is a synonym for "defined(__i386) ||
defined(__amd64)".

Additionally, there are alignment checks elsewhere in dtrace.c that are not
protected by an x86 check at all.
Actions #1

Updated by Christopher Siden over 8 years ago

  • Status changed from Pending RTI to Resolved
commit c93cc65
Author: Sebastien Roy <seb@delphix.com>
Date:   Fri Dec 28 12:32:23 2012

    3511 dtrace.c erroneously checks for memory alignment on amd64
    Reviewed by: Adam Leventhal <ahl@delphix.com>
    Reviewed by: Eric Schrock <eric.schrock@delphix.com>
    Reviewed by: Richard Lowe <richlowe@richlowe.net>
    Approved by: Robert Mustacchi <rm@joyent.com>
Actions

Also available in: Atom PDF