lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <37a28e788c72094d16ec63f1474b90a7@mail.gmail.com>
Date:   Fri, 2 Dec 2016 18:19:50 -0000
From:   Thomas Lloyd <thomas.lloyd@...ual-experience.com>
To:     netdev@...r.kernel.org
Subject: [PROBLEM]: IPv6 ICMP Ancillary Data IPV6_PKTINFO sendmsg() invalid argument

Hi All,

First post here; any pointers or improvements for bug reporting are
welcome.

[1.] One line summary of the problem:

sendmsg() with ancillary data of type IPV6_PKTINFO fails with invalid
argument and further possible memory corruption.

---------------------------------
[2.] Full description of the problem/report:

As part of my project I am attempting to perform IPv6 neighbour
solicitations to discover the MAC address of my local neighbours.
In the included test code link-local src and dst addresses are used to
send neighbour solicitations along with specifying the network interface
in IPV6_PKTINFO ancillary data.

In my test environment I have a Ubuntu 16.04 LTS Server/Router and a
Ubuntu 16.04 LTS Desktop.
These are both hosted on a Windows 10 Host as Virtual Guests.

Router/Server Interfaces:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP group default qlen 1000
    link/ether 08:00:27:c5:0e:76 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fec5:e76/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP group default qlen 1000
    link/ether 08:00:27:0a:c1:80 brd ff:ff:ff:ff:ff:ff
    inet6 2001:db8:1000:baba::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0a:c180/64 scope link
       valid_lft forever preferred_lft forever

Eth0 is set up for NAT to a physical IPv4 network but is unused in this
test setup.
Eth1 is IPv6 and is the radvd interface attatched to an internal virtual
box network interface.

In my client environment I have three network interfaces:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
    link/ether 08:00:27:b9:42:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.121/24 brd 192.168.100.255 scope global dynamic
enp0s3
       valid_lft 79320sec preferred_lft 79320sec
    inet6 fe80::5523:e7df:d12c:681/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
    link/ether 08:00:27:1a:a7:22 brd ff:ff:ff:ff:ff:ff
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP group default qlen 1000
    link/ether 08:00:27:35:13:22 brd ff:ff:ff:ff:ff:ff
    inet6 2001:db8:1000:baba:b30a:ed85:8568:cc66/64 scope global
noprefixroute dynamic
       valid_lft 86389sec preferred_lft 14389sec
    inet6 fe80::cffe:e7ef:a03a:34cb/64 scope link
       valid_lft forever preferred_lft forever

enp0s3 is a bridged physical wired connection on the host to an ipv4
network with router / gateway, ipv6 is active but not used.
enp0s8 is a bridged physical wifi connection on the host to another ipv4
subnet within the same network on the same router / gateway ipv6 is active
but not used .
enp0d9 is an internal virtual box network connected directly to another
Ubuntu guest as an IPv6 stateless router (the neighbour I am solicitating)
this interfaces is ipv4 enabled but not used.

The expected behaviour is to use the sendmsg() system call and specify the
outgoing interface for the neighbour sonication message using the
IPV6_PKTINFO ancillary data as detailed in the RFC3542 links below.

6.1.  Specifying/Receiving the Interface
https://tools.ietf.org/html/rfc3542.html#section-6.1

6.7 Summary of Outgoing Interface Selection
https://tools.ietf.org/html/rfc3542.html#section-6.7

The actual behaviour is for the sendmsg() system call to fail with errno
set to 22, Invalid Argument.

A note of interest is that if a perror() call is made to report this
problem a seg fault in mallo.c is encountered. I have not performed
further investigation.
You can see this has been commented after the sendmsg() system call in the
demo code.

Warning:
In my testing I have removed the IPV6_PKTINFO ancillary data and have
found that if the IPv6 router is not available at boot by default enp0s3
is used to send the packet.
I will send another e-mail further describing the behaviour with the
subject:

[PROBLEM]: IPv6 Link-Local Routing through wrong interface

---------------------------------
[3.] Keywords (i.e., modules, networking, kernel):
 networking, ipv6, link-local, ancillary

---------------------------------
[4.] Kernel version (from /proc/version):
Linux version 4.4.0-51-generic (buildd@...01-08) (gcc version 5.4.0
20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #72-Ubuntu SMP Thu Nov 24
18:29:54 UTC 2016
Linux version 4.8.11-1-ARCH (builduser@...ias) (gcc version 6.2.1 20160830
(GCC) ) #1 SMP PREEMPT Sun Nov 27 09:26:14 CET 2016

---------------------------------
[5.] Output of Oops.. message (if applicable) with symbolic information
resolved (see Documentation/oops-tracing.txt)

---------------------------------
[6.] A small shell script or example program which triggers the problem
(if possible)

/*  Copyright (C) 2011-2015  P.D. Buchan (mailto:pdbuchan@...oo.com)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

// Send an IPv6 ICMP neighbor solicitation packet.
// Change hoplimit and specify interface using ancillary
// data method.

#define _GNU_SOURCE

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>           // close()
#include <string.h>           // strcpy, memset(), and memcpy()

#include <netinet/icmp6.h>    // struct nd_neighbor_solicit, which
contains icmp6_hdr, ND_NEIGHBOR_SOLICIT
#include <netinet/in.h>       // IPPROTO_IPV6, IPPROTO_ICMPV6,
INET6_ADDRSTRLEN
#include <netinet/ip.h>       // IP_MAXPACKET (65535)
#include <arpa/inet.h>        // inet_ntop()
#include <netdb.h>            // struct addrinfo
#include <sys/ioctl.h>        // macro ioctl is defined
#include <bits/ioctls.h>      // defines values for argument "request" of
ioctl. Here, we need SIOCGIFHWADDR
#include <bits/socket.h>      // structs msghdr and cmsghdr
#include <net/if.h>           // struct ifreq
#include <linux/ipv6.h>
#include <stdint.h>

#include <errno.h>            // errno, perror()

// Definition of pktinfo6 created from definition of in6_pktinfo in
netinet/in.h.
// This should remove "redefinition of in6_pktinfo" errors in some linux
variants.
typedef struct _pktinfo6 pktinfo6;

struct _pktinfo6 {
  struct in6_addr ipi6_addr;
  int ipi6_ifindex;
};

// Function prototypes
uint16_t checksum (uint16_t *, int);
char *allocate_strmem (int);
uint8_t *allocate_ustrmem (int);

int
main (int argc, char **argv)
{
  int NS_HDRLEN = sizeof (struct nd_neighbor_solicit);  // Length of NS
message header
  int optlen = 8; // Option Type (1 byte) + Length (1 byte) + Length of
MAC address (6 bytes)

  int i, sd, status, ifindex, cmsglen, psdhdrlen;
  struct addrinfo hints;
  struct addrinfo *res;
  struct sockaddr_in6 *ipv6, src, dst, dstsnmc;
  struct nd_neighbor_solicit *ns;
  socklen_t srclen;
  uint8_t *outpack, *options, *psdhdr, hoplimit;
  struct msghdr msghdr, msghdr2 ;
  struct ifreq ifr;
  struct cmsghdr *cmsghdr1, *cmsghdr2;
  pktinfo6 *pktinfo;
  struct iovec iov[2];
  char *target, *source, *interface;
  void *tmp;

  // Allocate memory for various arrays.
  interface = allocate_strmem (40);
  target = allocate_strmem (INET6_ADDRSTRLEN);
  source = allocate_strmem (INET6_ADDRSTRLEN);
  outpack = allocate_ustrmem (IP_MAXPACKET);
  options = allocate_ustrmem (optlen);
  psdhdr = allocate_ustrmem (IP_MAXPACKET);

  // Interface to send packet through.
  strcpy (interface, "enp0s9");

  // Source (node sending solicitation) IPv6 unicast address, or
  // the IPv6 unspecified address (::
  // You need to fill this out.
  //strcpy (source, "fe80::cffe:e7ef:a03a:34cb");
  strcpy (source, "::");

  // Target (which must be link-local) hostname or IPv6 address (node
we're requesting an advertisement from).
  // You need to fill this out.
  strcpy (target, "fe80::a00:27ff:fe0a:c180");

  // Fill out hints for getaddrinfo().
  memset (&hints, 0, sizeof (struct addrinfo));
  hints.ai_family = AF_INET6;
  hints.ai_socktype = SOCK_STREAM;
  hints.ai_flags = hints.ai_flags | AI_CANONNAME;

  // Resolve source using getaddrinfo().
  if ((status = getaddrinfo (source, NULL, &hints, &res)) != 0) {
    fprintf (stderr, "getaddrinfo() failed: %s\n", gai_strerror (status));
    return (EXIT_FAILURE);
  }
  memset (&src, 0, sizeof (src));
  memcpy (&src, res->ai_addr, res->ai_addrlen);
  srclen = res->ai_addrlen;
  memcpy (psdhdr, src.sin6_addr.s6_addr, 16 * sizeof (uint8_t));  // Copy
to checksum pseudo-header
  freeaddrinfo (res);

  // Resolve target using getaddrinfo().
  if ((status = getaddrinfo (target, NULL, &hints, &res)) != 0) {
    fprintf (stderr, "getaddrinfo() failed: %s\n", gai_strerror (status));
    return (EXIT_FAILURE);
  }
  memset (&dst, 0, sizeof (dst));
  memset (&dstsnmc, 0, sizeof (dstsnmc));
  memcpy (&dst, res->ai_addr, res->ai_addrlen);
  memcpy (&dstsnmc, res->ai_addr, res->ai_addrlen);

  // Report target's unicast address.
  ipv6 = (struct sockaddr_in6 *) res->ai_addr;
  tmp = &(ipv6->sin6_addr);
  memset (target, 0, INET6_ADDRSTRLEN * sizeof (char));
  if (inet_ntop (AF_INET6, tmp, target, INET6_ADDRSTRLEN) == NULL) {
    status = errno;
    fprintf (stderr, "inet_ntop() failed.\nError message: %s", strerror
(status));
    exit (EXIT_FAILURE);
  }
  printf ("Target unicast IPv6 address: %s\n", target);
  freeaddrinfo (res);

  // Convert target's IPv6 unicast address to solicited-node multicast
address.
  // Section 2.7.1 of RFC 4291.
  dstsnmc.sin6_addr.s6_addr[0]= 255;
  dstsnmc.sin6_addr.s6_addr[1]=2;
  for (i=2; i<11; i++) {
    dstsnmc.sin6_addr.s6_addr[i] = 0;
  }
  dstsnmc.sin6_addr.s6_addr[11]=1;
  dstsnmc.sin6_addr.s6_addr[12]=255;

  // Report target's solicited-node multicast address.
  ipv6 = (struct sockaddr_in6 *) &dstsnmc;
  tmp = &(ipv6->sin6_addr);
  memset (target, 0, INET6_ADDRSTRLEN * sizeof (char));
  if (inet_ntop (AF_INET6, tmp, target, INET6_ADDRSTRLEN) == NULL) {
    status = errno;
    fprintf (stderr, "inet_ntop() failed.\nError message: %s", strerror
(status));
    exit (EXIT_FAILURE);
  }
  printf ("Target solicited-node multicast address: %s\n", target);
  memcpy (psdhdr + 16, dstsnmc.sin6_addr.s6_addr, 16 * sizeof (uint8_t));
// Solicited-node multicast address goes into pseudo-header

  // Request a socket descriptor sd.
  if ((sd = socket (AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0) {
    perror ("Failed to get socket descriptor ");
    exit (EXIT_FAILURE);
  }

  // Use ioctl() to look up soliciting node's (i.e., source's) interface
name and get its MAC address.
  memset (&ifr, 0, sizeof (ifr));
  snprintf (ifr.ifr_name, sizeof (ifr.ifr_name), "%s", interface);
  if (ioctl (sd, SIOCGIFHWADDR, &ifr) < 0) {
    perror ("ioctl() failed to get source MAC address ");
    return (EXIT_FAILURE);
  }

  // Copy source MAC address into options buffer.
  options[0] = 1;           // Option Type - "source link layer address"
(Section 4.6 of RFC 4861)
  options[1] = optlen / 8;  // Option Length - units of 8 octets (RFC
4861)
  for (i=0; i<6; i++) {
    options[i+2] = (uint8_t) ifr.ifr_addr.sa_data[i];
  }

  // Report soliciting node MAC address to stdout.
  printf ("MAC address for interface %s is ", interface);
  for (i=0; i<5; i++) {
    printf ("%02x:", options[i+2]);
  }
  printf ("%02x\n", options[5+2]);

  // Always bind otherwise the packet will be sent out on the first active
site-local or link-local interface.
  // Bind the socket descriptor to the source address if not site-local or
link-local.
  if (!(psdhdr[0] == 0xfe)) {
    if (bind (sd, (struct sockaddr *) &src, srclen) < 0) {
      perror ("Failed to bind the socket descriptor to the source address
");
      exit (EXIT_FAILURE);
    }
  }

  // Find interface index from interface name.
  // This will be put in cmsghdr data in order to specify the interface we
want to use.
  if ((ifindex = if_nametoindex (interface)) == 0) {
    perror ("if_nametoindex() failed to obtain interface index ");
    exit (EXIT_FAILURE);
  }
  printf ("Soliciting node's index for interface %s is %i\n", interface,
ifindex);

  // Define first part of buffer outpack to be a neighbor solicit struct.
  ns = (struct nd_neighbor_solicit *) outpack;
  memset (ns, 0, sizeof (*ns));

  // Populate icmp6_hdr portion of neighbor solicit struct.
  ns->nd_ns_hdr.icmp6_type = ND_NEIGHBOR_SOLICIT;  // 135 (RFC 4861)
  ns->nd_ns_hdr.icmp6_code = 0;              // zero for neighbor
solicitation (RFC 4861)
  ns->nd_ns_hdr.icmp6_cksum = htons(0);      // zero when calculating
checksum
  ns->nd_ns_reserved = htonl(0);             // Reserved - must be set to
zero (RFC 4861)
  ns->nd_ns_target = dst.sin6_addr;          // Target address (NOT
MULTICAST) (as type in6_addr)

  // Append options to end of neighbor solicit struct.
  memcpy (outpack + NS_HDRLEN, options, optlen * sizeof (uint8_t));

  // Need a pseudo-header for checksum calculation. Define length. (RFC
2460)
  // Length = source IP (16 bytes) + destination IP (16 bytes)
  //        + upper layer packet length (4 bytes) + zero (3 bytes)
  //        + next header (1 byte)
  psdhdrlen = 16 + 16 + 4 + 3 + 1 + NS_HDRLEN + optlen;

  // Prepare msghdr for sendmsg().
  memset (&msghdr, 0, sizeof (msghdr));
  msghdr.msg_name = &dstsnmc;  // Destination IPv6 address (solicited node
multicast) (as struct sockaddr_in6)
  msghdr.msg_namelen = sizeof (dstsnmc);
  memset (&iov, 0, sizeof (iov));
  iov[0].iov_base = (uint8_t *) outpack;  // Point msghdr to buffer
outpack
  iov[0].iov_len = NS_HDRLEN + optlen;
  msghdr.msg_iov = iov;                 // scatter/gather array
  msghdr.msg_iovlen = 1;                // number of elements in
scatter/gather array

  // Tell msghdr we're adding cmsghdr data to change hop limit and specify
interface.
  // Allocate some memory for our cmsghdr data.
  cmsglen = CMSG_SPACE (sizeof (int)) + CMSG_SPACE (sizeof (pktinfo));
  msghdr.msg_control = allocate_ustrmem (cmsglen);
  msghdr.msg_controllen = cmsglen;

  // Change hop limit to 255 as required for neighbor solicitation (RFC
4861).
  hoplimit = 255u;
  cmsghdr1 = CMSG_FIRSTHDR (&msghdr);
  if(NULL == cmsghdr1)
  {
                 fprintf (stderr, "NULL Returned out of Memory");
                 exit (EXIT_FAILURE);
  }

  cmsghdr1->cmsg_level = IPPROTO_IPV6;
  cmsghdr1->cmsg_type = IPV6_HOPLIMIT;  // We want to change hop limit
  cmsghdr1->cmsg_len = CMSG_LEN (sizeof (int));
  *(CMSG_DATA (cmsghdr1)) = hoplimit;

  // Specify source interface index for this packet via cmsghdr data.
  cmsghdr2 = CMSG_NXTHDR (&msghdr, cmsghdr1);
  if(NULL == cmsghdr2)
  {
                 fprintf (stderr, "NULL Returned out of Memory");
                 exit (EXIT_FAILURE);
  }
  cmsghdr2->cmsg_level = IPPROTO_IPV6;
  cmsghdr2->cmsg_type = IPV6_PKTINFO;  // We want to specify interface
here
  cmsghdr2->cmsg_len = CMSG_LEN (sizeof (pktinfo));
  pktinfo = (pktinfo6 *) CMSG_DATA (cmsghdr2);
  pktinfo->ipi6_ifindex = ifindex;
  pktinfo->ipi6_ifindex = 0;

  // Compute ICMPv6 checksum (RFC 2460).
  // psdhdr[0 to 15] = source IPv6 address, set earlier.
  // psdhdr[16 to 31] = destination IPv6 address, set earlier.
  psdhdr[32] = 0;  // Length should not be greater than 65535 (i.e., 2
bytes)
  psdhdr[33] = 0;  // Length should not be greater than 65535 (i.e., 2
bytes)
  psdhdr[34] = (NS_HDRLEN + optlen)  / 256;  // Upper layer packet length
  psdhdr[35] = (NS_HDRLEN + optlen)  % 256;  // Upper layer packet length
  psdhdr[36] = 0;  // Must be zero
  psdhdr[37] = 0;  // Must be zero
  psdhdr[38] = 0;  // Must be zero
  psdhdr[39] = IPPROTO_ICMPV6;
  memcpy (psdhdr + 40, outpack, (NS_HDRLEN + optlen) * sizeof (uint8_t));
  ns->nd_ns_hdr.icmp6_cksum = checksum ((uint16_t *) psdhdr, psdhdrlen);

  printf ("Checksum: %x\n", ntohs (ns->nd_ns_hdr.icmp6_cksum));

  if (sendmsg (sd, &msghdr, 0) < 0) {
   // perror ("sendmsg() failed ");
                 fprintf (stderr,"[%d] %s\n", errno, strerror(errno));
    exit (EXIT_FAILURE);
  }
  close (sd);

  // Free allocated memory.
  free (interface);
  free (target);
  free (source);
  free (outpack);
  free (options);
  free (psdhdr);
  free (msghdr.msg_control);

  return (EXIT_SUCCESS);
}

// Computing the internet checksum (RFC 1071).
// Note that the internet checksum does not preclude collisions.
uint16_t
checksum (uint16_t *addr, int len)
{
  int count = len;
  register uint32_t sum = 0;
  uint16_t answer = 0;

  // Sum up 2-byte values until none or only one byte left.
  while (count > 1) {
    sum += *(addr++);
    count -= 2;
  }

  // Add left-over byte, if any.
  if (count > 0) {
    sum += *(uint8_t *) addr;
  }

  // Fold 32-bit sum into 16 bits; we lose information by doing this,
  // increasing the chances of a collision.
  // sum = (lower 16 bits) + (upper 16 bits shifted right 16 bits)
  while (sum >> 16) {
    sum = (sum & 0xffff) + (sum >> 16);
  }

  // Checksum is one's compliment of sum.
  answer = ~sum;

  return (answer);
}

// Allocate memory for an array of chars.
char *
allocate_strmem (int len)
{
  void *tmp;

  if (len <= 0) {
    fprintf (stderr, "ERROR: Cannot allocate memory because len = %i in
allocate_strmem().\n", len);
    exit (EXIT_FAILURE);
  }

  tmp = (char *) malloc (len * sizeof (char));
  if (tmp != NULL) {
    memset (tmp, 0, len * sizeof (char));
    return (tmp);
  } else {
    fprintf (stderr, "ERROR: Cannot allocate memory for array
allocate_strmem().\n");
    exit (EXIT_FAILURE);
  }
}

// Allocate memory for an array of unsigned chars.
uint8_t *
allocate_ustrmem (int len)
{
  void *tmp;

  if (len <= 0) {
    fprintf (stderr, "ERROR: Cannot allocate memory because len = %i in
allocate_ustrmem().\n", len);
    exit (EXIT_FAILURE);
  }

  tmp = (uint8_t *) malloc (len * sizeof (uint8_t));
  if (tmp != NULL) {
    memset (tmp, 0, len * sizeof (uint8_t));
    return (tmp);
  } else {
    fprintf (stderr, "ERROR: Cannot allocate memory for array
allocate_ustrmem().\n");
    exit (EXIT_FAILURE);
  }
}

---------------------------------
[7.] Environment
Host -> Windows 10 - VirtualBox Version 5.1.10 r112026 (Qt5.6.2)
               Guest -> Ubuntu 16.04 (Up to date)
               Guest -> Arch Linux (Latest)

-------------
[7.1] Software
Linux tom-VirtualBox 4.4.0-51-generic #72-Ubuntu SMP Thu Nov 24 18:29:54
UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

GNU C                                                               5.4.0
GNU Make                                                       4.1
Binutils
2.26.1
Util-linux
2.27.1
Mount                                                               2.27.1
Module-init-tools                                           22
E2fsprogs                                                         1.42.13
Pcmciautils                                                       018
PPP
2.4.7
Linux C Library                                                2.23
Dynamic linker (ldd)                                      2.23
Linux C++ Library                                            6.0.21
Procps
3.3.10
Net-tools                                                          1.60
Kbd
1.15.5
Console-tools                                                  1.15.5
Sh-utils                                                              8.25
Udev                                                                  229
Wireless-tools                                                 30
Modules Loaded                                            8250_fintek
ablk_helper aesni_intel aes_x86_64 ahci autofs4 binfmt_misc crc32_pclmul
crct10dif_pclmul cryptd drm drm_kms_helper e1000 fb_sys_fops fjes gf128mul
ghash_clmulni_intel glue_helper hid hid_generic i2c_piix4 input_leds
joydev libahci lp lrw mac_hid parport parport_pc pata_acpi ppdev psmouse
serio_raw syscopyarea sysfillrect sysimgblt ttm usbhid vboxguest vboxsf
vboxvideo video


Linux archbox 4.8.11-1-ARCH #1 SMP PREEMPT Sun Nov 27 09:26:14 CET 2016
x86_64 GNU/Linux

GNU C                                6.2.1
GNU Make                        4.2.1
Binutils                               2.27
Util-linux                            2.28.2
Mount                                2.28.2
Module-init-tools            23
E2fsprogs                          1.43.3
Jfsutils                                1.1.15
Reiserfsprogs                    3.6.25
Xfsprogs                            4.8.0
Pcmciautils                        018
Linux C Library                  2.24
Dynamic linker (ldd)       2.24
Linux C++ Library             6.0.22
Kbd                                     2.0.3
Console-tools                   2.0.3
Sh-utils                               8.25
Udev                                  232
Modules Loaded          ablk_helper ac ac97_bus acpi_cpufreq aesni_intel
aes_x86_64 ata_generic ata_piix atkbd battery button cdrom cfg80211 crc16
crc32c_intel crc32_pclmul crct10dif_pclmul cryptd e1000 ehci_hcd ehci_pci
evdev ext4 fjes fscrypto gf128mul ghash_clmulni_intel glue_helper hid
hid_generic i2c_piix4 i8042 input_leds intel_agp intel_gtt intel_rapl_perf
ip_tables jbd2 joydev led_class libata libps2 lrw mac_hid mbcache mousedev
ohci_hcd ohci_pci parport parport_pc pata_acpi pcspkr ppdev psmouse rfkill
sch_fq_codel scsi_mod sd_mod serio serio_raw snd snd_ac97_codec
snd_intel8x0 snd_pcm snd_timer soundcore sr_mod tpm tpm_tis tpm_tis_core
usb_common usbcore usbhid video x_tables

-------------
[7.2.] Processor information
(Ubuntu)
processor            : 0
vendor_id            : GenuineIntel
cpu family           : 6
model                   : 94
model name       : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
stepping               : 3
cpu MHz              : 2591.818
cache size            : 6144 KB
physical id           : 0
siblings                 : 1
core id                  : 0
cpu cores            : 1
apicid                   : 0
initial apicid        : 0
fpu                        : yes
fpu_exception    : yes
cpuid level          : 22
wp                         : yes
flags                     : fpu vme de pse tsc msr pae mce cx8 apic sep
mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm
constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor
ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand lahf_lm abm
3dnowprefetch rdseed clflushopt
bugs                      :
bogomips            : 5183.63
clflush size          : 64
cache_alignment              : 64
address sizes      : 39 bits physical, 48 bits virtual
power management:

(Arch)
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 94
model name      : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
stepping        : 3
cpu MHz         : 2591.998
cache size      : 6144 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm
constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq
ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand
hypervisor lahf_lm abm 3dnowprefetch rdseed clflushopt
bugs            :
bogomips        : 5186.99
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 94
model name      : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
stepping        : 3
cpu MHz         : 2591.998
cache size      : 6144 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm
constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq
ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand
hypervisor lahf_lm abm 3dnowprefetch rdseed clflushopt
bugs            :
bogomips        : 5186.99
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

-------------
[7.3.] Module information
(Ubuntu)
vboxsf 45056 0 - Live 0x0000000000000000 (OE)
binfmt_misc 20480 1 - Live 0x0000000000000000
crct10dif_pclmul 16384 0 - Live 0x0000000000000000
crc32_pclmul 16384 0 - Live 0x0000000000000000
ghash_clmulni_intel 16384 0 - Live 0x0000000000000000
vboxvideo 49152 2 - Live 0x0000000000000000 (OE)
ttm 94208 1 vboxvideo, Live 0x0000000000000000
aesni_intel 167936 0 - Live 0x0000000000000000
aes_x86_64 20480 1 aesni_intel, Live 0x0000000000000000
lrw 16384 1 aesni_intel, Live 0x0000000000000000
drm_kms_helper 155648 1 vboxvideo, Live 0x0000000000000000
gf128mul 16384 1 lrw, Live 0x0000000000000000
glue_helper 16384 1 aesni_intel, Live 0x0000000000000000
ablk_helper 16384 1 aesni_intel, Live 0x0000000000000000
cryptd 20480 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0x0000000000000000
drm 364544 5 vboxvideo,ttm,drm_kms_helper, Live 0x0000000000000000
joydev 20480 0 - Live 0x0000000000000000
fb_sys_fops 16384 1 drm_kms_helper, Live 0x0000000000000000
input_leds 16384 0 - Live 0x0000000000000000
serio_raw 16384 0 - Live 0x0000000000000000
syscopyarea 16384 2 vboxvideo,drm_kms_helper, Live 0x0000000000000000
sysfillrect 16384 2 vboxvideo,drm_kms_helper, Live 0x0000000000000000
sysimgblt 16384 2 vboxvideo,drm_kms_helper, Live 0x0000000000000000
vboxguest 282624 6 vboxsf,vboxvideo, Live 0x0000000000000000 (OE)
i2c_piix4 24576 0 - Live 0x0000000000000000
8250_fintek 16384 0 - Live 0x0000000000000000
mac_hid 16384 0 - Live 0x0000000000000000
parport_pc 32768 0 - Live 0x0000000000000000
ppdev 20480 0 - Live 0x0000000000000000
lp 20480 0 - Live 0x0000000000000000
parport 49152 3 parport_pc,ppdev,lp, Live 0x0000000000000000
autofs4 40960 2 - Live 0x0000000000000000
hid_generic 16384 0 - Live 0x0000000000000000
usbhid 49152 0 - Live 0x0000000000000000
hid 118784 2 hid_generic,usbhid, Live 0x0000000000000000
psmouse 131072 0 - Live 0x0000000000000000
ahci 36864 3 - Live 0x0000000000000000
libahci 32768 1 ahci, Live 0x0000000000000000
fjes 28672 0 - Live 0x0000000000000000
video 40960 0 - Live 0x0000000000000000
e1000 135168 0 - Live 0x0000000000000000
pata_acpi 16384 0 - Live 0x0000000000000000

(Arch)
cfg80211 495616 0 - Live 0xffffffffa0416000
rfkill 20480 2 cfg80211, Live 0xffffffffa0394000
ppdev 20480 0 - Live 0xffffffffa0410000
crct10dif_pclmul 16384 0 - Live 0xffffffffa040b000
crc32_pclmul 16384 0 - Live 0xffffffffa0406000
crc32c_intel 24576 0 - Live 0xffffffffa03fb000
ghash_clmulni_intel 16384 0 - Live 0xffffffffa03f6000
aesni_intel 167936 0 - Live 0xffffffffa03c3000
aes_x86_64 20480 1 aesni_intel, Live 0xffffffffa03bd000
lrw 16384 1 aesni_intel, Live 0xffffffffa03b8000
gf128mul 16384 1 lrw, Live 0xffffffffa03b3000
glue_helper 16384 1 aesni_intel, Live 0xffffffffa03a3000
ablk_helper 16384 1 aesni_intel, Live 0xffffffffa039e000
cryptd 20480 3 ghash_clmulni_intel,aesni_intel,ablk_helper, Live
0xffffffffa03a8000
intel_rapl_perf 16384 0 - Live 0xffffffffa0387000
input_leds 16384 0 - Live 0xffffffffa0382000
pcspkr 16384 0 - Live 0xffffffffa031f000
evdev 24576 3 - Live 0xffffffffa038d000
psmouse 126976 0 - Live 0xffffffffa0362000
led_class 16384 1 input_leds, Live 0xffffffffa0359000
joydev 20480 0 - Live 0xffffffffa0335000
mousedev 20480 0 - Live 0xffffffffa02f8000
mac_hid 16384 0 - Live 0xffffffffa02dd000
parport_pc 28672 0 - Live 0xffffffffa02e8000
parport 40960 2 ppdev,parport_pc, Live 0xffffffffa032a000
acpi_cpufreq 20480 0 - Live 0xffffffffa0324000
fjes 28672 0 - Live 0xffffffffa028a000
battery 20480 0 - Live 0xffffffffa0306000
tpm_tis 16384 0 - Live 0xffffffffa02e3000
intel_agp 20480 0 - Live 0xffffffffa0315000
tpm_tis_core 20480 1 tpm_tis, Live 0xffffffffa030f000
ac 16384 0 - Live 0xffffffffa0301000
button 16384 0 - Live 0xffffffffa02f3000
tpm 36864 2 tpm_tis,tpm_tis_core, Live 0xffffffffa02d3000
video 36864 0 - Live 0xffffffffa02c9000
e1000 131072 0 - Live 0xffffffffa02a8000
i2c_piix4 24576 0 - Live 0xffffffffa0232000
intel_gtt 20480 1 intel_agp, Live 0xffffffffa02a2000
snd_intel8x0 36864 0 - Live 0xffffffffa0293000
snd_ac97_codec 118784 1 snd_intel8x0, Live 0xffffffffa026c000
ac97_bus 16384 1 snd_ac97_codec, Live 0xffffffffa0098000
snd_pcm 90112 2 snd_intel8x0,snd_ac97_codec, Live 0xffffffffa0249000
snd_timer 28672 1 snd_pcm, Live 0xffffffffa023c000
snd 69632 4 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer, Live
0xffffffffa0220000
soundcore 16384 1 snd, Live 0xffffffffa0080000
sch_fq_codel 20480 2 - Live 0xffffffffa021a000
ip_tables 28672 0 - Live 0xffffffffa0145000
x_tables 28672 1 ip_tables, Live 0xffffffffa0150000
ext4 524288 1 - Live 0xffffffffa0199000
crc16 16384 1 ext4, Live 0xffffffffa00a9000
jbd2 90112 1 ext4, Live 0xffffffffa00f9000
fscrypto 24576 1 ext4, Live 0xffffffffa00f2000
mbcache 16384 2 ext4, Live 0xffffffffa0068000
hid_generic 16384 0 - Live 0xffffffffa006e000
usbhid 49152 0 - Live 0xffffffffa018c000
hid 114688 2 hid_generic,usbhid, Live 0xffffffffa016f000
sr_mod 24576 0 - Live 0xffffffffa00b4000
cdrom 53248 1 sr_mod, Live 0xffffffffa00e4000
sd_mod 36864 3 - Live 0xffffffffa005e000
ata_generic 16384 0 - Live 0xffffffffa001c000
pata_acpi 16384 0 - Live 0xffffffffa0017000
ohci_pci 16384 0 - Live 0xffffffffa0012000
serio_raw 16384 0 - Live 0xffffffffa00af000
atkbd 24576 0 - Live 0xffffffffa00a2000
libps2 16384 2 psmouse,atkbd, Live 0xffffffffa009d000
ata_piix 36864 2 - Live 0xffffffffa008e000
ehci_pci 16384 0 - Live 0xffffffffa0085000
ohci_hcd 49152 1 ohci_pci, Live 0xffffffffa0073000
ehci_hcd 73728 1 ehci_pci, Live 0xffffffffa015c000
libata 208896 3 ata_generic,pata_acpi,ata_piix, Live 0xffffffffa0111000
scsi_mod 159744 3 sr_mod,sd_mod,libata, Live 0xffffffffa00bc000
usbcore 208896 5 usbhid,ohci_pci,ohci_hcd,ehci_pci,ehci_hcd, Live
0xffffffffa002a000
usb_common 16384 1 usbcore, Live 0xffffffffa0022000
i8042 28672 0 - Live 0xffffffffa000a000
serio 20480 6 psmouse,serio_raw,atkbd,i8042, Live 0xffffffffa0000000

-- 
Registered Office: Actual Experience plc
Quay House, The Ambury, Bath BA1 1UA,
Registered No. 06838738, VAT No. 971 9696 56

The information transmitted is intended only for the person or entity to 
which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you received 
this in error, please contact the sender and delete the material from any 
computer. Although we routinely screen for viruses, addressees should check 
this e-mail and any attachment for viruses. We make no warranty as to 
absence of viruses in this e-mail or any attachments.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ