)]}'
{
  "commit": "c949d4eb40ce021b1abc3b63af23aa535662cb17",
  "tree": "054b4464c4968f9e07f65fe9680b483cae6e71df",
  "parents": [
    "595142e0490918af5ffae5a833a2b2acd7097c02"
  ],
  "author": {
    "name": "Jiri Kosina",
    "email": "jkosina@suse.cz",
    "time": "Wed Dec 06 20:39:38 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.osdl.org",
    "time": "Thu Dec 07 08:39:43 2006 -0800"
  },
  "message": "[PATCH] autofs: fix error code path in autofs_fill_sb()\n\nWhen kernel is compiled with old version of autofs (CONFIG_AUTOFS_FS), and\nnew (observed at least with 5.x.x) automount deamon is started, kernel\ncorrectly reports incompatible version of kernel and userland daemon, but\nthen screws things up instead of correct handling of the error:\n\n autofs: kernel does not match daemon version\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n [ BUG: bad unlock balance detected! ]\n -------------------------------------\n automount/4199 is trying to release lock (\u0026type-\u003es_umount_key) at:\n [\u003cc0163b9e\u003e] get_sb_nodev+0x76/0xa4\n but there are no more locks to release!\n\n other info that might help us debug this:\n no locks held by automount/4199.\n\n stack backtrace:\n  [\u003cc0103b15\u003e] dump_trace+0x68/0x1b2\n  [\u003cc0103c77\u003e] show_trace_log_lvl+0x18/0x2c\n  [\u003cc01041db\u003e] show_trace+0xf/0x11\n  [\u003cc010424d\u003e] dump_stack+0x12/0x14\n  [\u003cc012e02c\u003e] print_unlock_inbalance_bug+0xe7/0xf3\n  [\u003cc012fd4f\u003e] lock_release+0x8d/0x164\n  [\u003cc012b452\u003e] up_write+0x14/0x27\n  [\u003cc0163b9e\u003e] get_sb_nodev+0x76/0xa4\n  [\u003cc0163689\u003e] vfs_kern_mount+0x83/0xf6\n  [\u003cc016373e\u003e] do_kern_mount+0x2d/0x3e\n  [\u003cc017513f\u003e] do_mount+0x607/0x67a\n  [\u003cc0175224\u003e] sys_mount+0x72/0xa4\n  [\u003cc0102b96\u003e] sysenter_past_esp+0x5f/0x99\n DWARF2 unwinder stuck at sysenter_past_esp+0x5f/0x99\n Leftover inexact backtrace:\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nand then deadlock comes.\n\nThe problem: autofs_fill_super() returns EINVAL to get_sb_nodev(), but\nbefore that, it calls kill_anon_super() to destroy the superblock which\nwon\u0027t be needed.  This is however way too soon to call kill_anon_super(),\nbecause get_sb_nodev() has to perform its own cleanup of the superblock\nfirst (deactivate_super(), etc.).  The correct time to call\nkill_anon_super() is in the autofs_kill_sb() callback, which is called by\ndeactivate_super() at proper time, when the superblock is ready to be\nkilled.\n\nI can see the same faulty codepath also in autofs4.  This patch solves\nissues in both filesystems in a same way - it postpones the\nkill_anon_super() until the proper time is signalized by deactivate_super()\ncalling the kill_sb() callback.\n\n[raven@themaw.net: update comment]\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "38ede5c9d6fd412c8cddfed701afae9ae46cfa14",
      "old_mode": 33188,
      "old_path": "fs/autofs/inode.c",
      "new_id": "f968d134280807bf7aaafb50d6aeb22a6a45d304",
      "new_mode": 33188,
      "new_path": "fs/autofs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "ce7c0f1dd529211b2f4e5eca8feba0c87428c33f",
      "old_mode": 33188,
      "old_path": "fs/autofs4/inode.c",
      "new_id": "9c48250fd726406fc040816c96b4fa42e8d305ce",
      "new_mode": 33188,
      "new_path": "fs/autofs4/inode.c"
    }
  ]
}
