Uploaded image for project: 'OpenVZ'
  1. OpenVZ
  2. OVZ-7039

Kernel panic: NULL dereference on allocation failure in alloc_vfsmnt()

    Details

    • Fixed in Build:
      vzkernel-3.10.0-862.3.2.vz7.61.16

      Description

      Kernel panic.

      uname -r
      3.10.0-693.21.1.vz7.48.2

      in messages i found:

      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: net_ratelimit: 44 callbacks suppressed
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Jul 4 11:32:17 server kernel: microcode: microcode updated early to revision 0x428,
       date = 2014-05-29
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpuset
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpu
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpuacct
      Jul 4 11:32:17 server kernel: Linux version 3.10.0-693.21.1.vz7.48.2 (AN_EMAIL) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed May 23 10:04:13 MSK 2018
      Jul 4 11:32:17 server kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.21.1.vz7.48.2 root=UUID=60848338-0a1b-4116-a803-6dbc6ea2f206 ro crashkernel=auto quiet LANG=en_US.UTF-8 intel_pstate=disable
      Jul 4 11:32:17 server kernel: e820: BIOS-provided physical RAM map:


      And this message: Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment. flooding messages log all the time.

      i got kernel panic twice in 2 weeks


      Also i`m attaching: vmcore-dmesg.txt and vmcore-dmesg_old.txt (old is the dmesg of older panic)

      also i have vmcore files, but length of them is ~3.8GB and ~4.6GB so let me know if you want that i will upload it.

        Attachments

          Activity

          Hide
          vvs Vasily Averin added a comment -

          Dear Jonas,
          thank you for reporting the problem,
          core dumps are not required this time,
          I've found the reason of this problem

          static struct mount *alloc_vfsmnt(const char *name)
          ...
          mnt = kmem_cache_zalloc(mnt_cache, GFP_KERNEL);
          if (mnt)

          { ... }

          ve_mount_nr_inc(mnt); <<<< mnt can be NULL here
          return mnt;

          static inline void ve_mount_nr_inc(struct mount *mnt)
          ...
          mnt->ve_owner = get_ve(ve); <<<<

          crash> struct mount.ve_owner -ox
          struct mount

          { [0x100] struct ve_struct *ve_owner; }

          [433176.667080] BUG: unable to handle kernel NULL pointer dereference at 0000000000000100

          it's our bug, we need to move ve_mount_nr_inc() call into if (mnt)

          { ... }

          section .

          Show
          vvs Vasily Averin added a comment - Dear Jonas, thank you for reporting the problem, core dumps are not required this time, I've found the reason of this problem static struct mount *alloc_vfsmnt(const char *name) ... mnt = kmem_cache_zalloc(mnt_cache, GFP_KERNEL); if (mnt) { ... } ve_mount_nr_inc(mnt); <<<< mnt can be NULL here return mnt; static inline void ve_mount_nr_inc(struct mount *mnt) ... mnt->ve_owner = get_ve(ve); <<<< crash> struct mount.ve_owner -ox struct mount { [0x100] struct ve_struct *ve_owner; } [433176.667080] BUG: unable to handle kernel NULL pointer dereference at 0000000000000100 it's our bug, we need to move ve_mount_nr_inc() call into if (mnt) { ... } section .
          Hide
          vvs Vasily Averin added a comment -

          sent to devel@openvz.org:
          [PATCH RH7] alloc_vfsmnt cleanup

          Show
          vvs Vasily Averin added a comment - sent to devel@openvz.org: [PATCH RH7] alloc_vfsmnt cleanup
          Hide
          khorenko Konstantin Khorenko added a comment -

          The commit is pushed to "branch-rh7-3.10.0-862.3.2.vz7.61.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
          after rh7-3.10.0-862.3.2.vz7.61.15
          ------>
          commit dd163996c7bcf04225f421446529e7f39a239ca9
          Author: Vasily Averin <vvs@virtuozzo.com>
          Date: Fri Jul 6 12:17:46 2018 +0300

          ve/fs: fix NULL dereference on allocation failure in alloc_vfsmnt()

          Show
          khorenko Konstantin Khorenko added a comment - The commit is pushed to "branch-rh7-3.10.0-862.3.2.vz7.61.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-862.3.2.vz7.61.15 ------> commit dd163996c7bcf04225f421446529e7f39a239ca9 Author: Vasily Averin <vvs@virtuozzo.com> Date: Fri Jul 6 12:17:46 2018 +0300 ve/fs: fix NULL dereference on allocation failure in alloc_vfsmnt()

            People

            • Assignee:
              khorenko Konstantin Khorenko
              Reporter:
              bacarrdy Jonas Savulionis
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 0 minutes
                0m
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 hour
                1h