)]}'
{
  "commit": "f26fd5d6e5006eae75a389c7ce74ed16761d094b",
  "tree": "0d8f90e4a54d983c4cb49bd751df03d4973e40cf",
  "parents": [
    "bc45eb8950b8c14487385cfd2bda1613ca8d9703"
  ],
  "author": {
    "name": "Cornelia Huck",
    "email": "cornelia.huck@de.ibm.com",
    "time": "Tue Sep 16 09:32:18 2008 -0700"
  },
  "committer": {
    "name": "Martin Schwidefsky",
    "email": "sky@skybook.(none)",
    "time": "Tue Sep 16 09:34:31 2008 -0700"
  },
  "message": "[S390] cio: Fix driver_data handling for ccwgroup devices.\n\nSince 16f7f9564c3ae190954f2ec55f385a268b93ac4d, we\u0027ve seen\noopses when grouping/ungrouping devices:\n\nUnable to handle kernel pointer dereference at virtual kernel address 0000000000\n114000\nOops: 0004 [#1] PREEMPT SMP\nModules linked in: bonding qeth_l2 dm_multipath sunrpc qeth_l3 dm_mod qeth chsc_\nsch ccwgroup\nCPU: 1 Not tainted 2.6.26-29.x.20080815-s390xdefault #1\nProcess iperf (pid: 24412, task: 000000003f446038, ksp: 000000003c929e08)\nKrnl PSW : 0404d00180000000 000003e00006f6e6 (qeth_irq+0xda/0xb28 [qeth])\n           R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 EA:3\nKrnl GPRS: 0000000000000000 000003e000000003 0000000000000000 0000000000114ccc\n           000000003fb82e48 000003e00006f60c 000000000000000c 000000003ce72100\n           0000000000114944 000000003fb82e48 0000000000114ccc 000000003fe8fd28\n           000003e000066000 000003e000076128 000000003fe8fdb8 000000003fe8fd28\nKrnl Code: 000003e00006f6da: bf3f2024            icm     %r3,15,36(%r2)\n           000003e00006f6de: a774023c            brc     7,3e00006fb56\n           000003e00006f6e2: a7280000            lhi     %r2,0\n          \u003e000003e00006f6e6: 5020a1a0            st      %r2,416(%r10)\n           000003e00006f6ea: 58109000            l       %r1,0(%r9)\n           000003e00006f6ee: a7111000            tmll    %r1,4096\n           000003e00006f6f2: a77400f9            brc     7,3e00006f8e4\n           000003e00006f6f6: 8810000c            srl     %r1,12\nCall Trace:\n([\u003c000000003fe8fd20\u003e] 0x3fe8fd20)\n [\u003c000000000033bf2a\u003e] ccw_device_call_handler+0xb2/0xd8\n [\u003c0000000000339e1c\u003e] ccw_device_irq+0x124/0x164\n [\u003c0000000000339758\u003e] io_subchannel_irq+0x8c/0x118\n [\u003c00000000003309ba\u003e] do_IRQ+0x192/0x1bc\n [\u003c0000000000114f66\u003e] io_return+0x0/0x8\n [\u003c00000000001149cc\u003e] sysc_do_svc+0x0/0x22\n([\u003c0000000000114a18\u003e] sysc_noemu+0x10/0x16)\n [\u003c00000200002e047c\u003e] 0x200002e047c\nLast Breaking-Event-Address:\n [\u003c000003e00006f6d6\u003e] qeth_irq+0xca/0xb28 [qeth]\n\nThe problem is that dev-\u003edriver_data for a ccw device is NULL,\nwhile it should point to the ccwgroup device it is a member of.\nThis happened due to incorrect cleanup if creating a ccwgroup\ndevice failed because the ccw devices were already grouped.\n\nFix this by setting cdev[i] to NULL in the error handling of\nccwgroup_create_from_string() after we give up our reference and\nby checking if the driver_data points to the ccwgroup device in\nccwgroup_release() just to be really sure.\n\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e0ce65fca4e797ed2da7370093a56f1a86d04c81",
      "old_mode": 33188,
      "old_path": "drivers/s390/cio/ccwgroup.c",
      "new_id": "9a50f245774b0491e1c31532d059049cab945c7b",
      "new_mode": 33188,
      "new_path": "drivers/s390/cio/ccwgroup.c"
    }
  ]
}
