)]}'
{
  "log": [
    {
      "commit": "6aa65472d18703064898eefb5eb58f7ecd0d8912",
      "tree": "d7085a9599febe317937dab77abddf857910f55b",
      "parents": [
        "e6f47f978bcd5413fff610613b18e9e0eab9bc1b"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Mon Jun 26 00:25:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:22 2006 -0700"
      },
      "message": "[PATCH] CAPI crash / race condition\n\nI am getting more or less reproducible crashes from the CAPI subsystem\nusing the fcdsl driver:\n\nUnable to handle kernel NULL pointer dereference at virtual address 00000010\n printing eip:\nc39bbca4\n*pde \u003d 00000000\nOops: 0000 [#1]\nModules linked in: netconsole capi capifs 3c59x mii fcdsl kernelcapi uhci_hcd usbcore ide_cd cdrom\nCPU:    0\nEIP:    0060:[\u003cc39bbca4\u003e]    Tainted: P      VLI\nEFLAGS: 00010202   (2.6.16.11 #3)\nEIP is at handle_minor_send+0x17a/0x241 [capi]\neax: c24abbc0   ebx: c0b4c980   ecx: 00000010   edx: 00000010\nesi: c1679140   edi: c2783016   ebp: 0000c28d   esp: c0327e24\nds: 007b   es: 007b   ss: 0068\nProcess swapper (pid: 0, threadinfo\u003dc0326000 task\u003dc02e1300)\nStack: \u003c0\u003e000005b4 c1679180 00000000 c28d0000 c1ce04e0 c2f69654 c221604e c1679140\n       c39bc19a 00000038 c20c0400 c075c560 c1f2f800 00000000 c01dc9b5 c1e96a40\n       c075c560 c2ed64c0 c1e96a40 c01dcd3b c2fb94e8 c075c560 c0327f00 c1e96a40\nCall Trace:\n [\u003cc39bc19a\u003e] capinc_tty_write+0xda/0xf3 [capi]\n [\u003cc01dc9b5\u003e] ppp_sync_push+0x52/0xfe\n [\u003cc01dcd3b\u003e] ppp_sync_send+0x1f5/0x204\n [\u003cc01d9bc1\u003e] ppp_push+0x3e/0x9c\n [\u003cc01dacd4\u003e] ppp_xmit_process+0x422/0x4cc\n [\u003cc01daf3f\u003e] ppp_start_xmit+0x1c1/0x1f6\n [\u003cc0213ea5\u003e] qdisc_restart+0xa7/0x135\n [\u003cc020b112\u003e] dev_queue_xmit+0xba/0x19e\n [\u003cc0223f69\u003e] ip_output+0x1eb/0x236\n [\u003cc0220907\u003e] ip_forward+0x1c1/0x21a\n [\u003cc021fa6c\u003e] ip_rcv+0x38e/0x3ea\n [\u003cc020b4c2\u003e] netif_receive_skb+0x166/0x195\n [\u003cc020b55e\u003e] process_backlog+0x6d/0xd2\n [\u003cc020a30f\u003e] net_rx_action+0x6a/0xff\n [\u003cc0112909\u003e] __do_softirq+0x35/0x7d\n [\u003cc0112973\u003e] do_softirq+0x22/0x26\n [\u003cc0103a9d\u003e] do_IRQ+0x1e/0x25\n [\u003cc010255a\u003e] common_interrupt+0x1a/0x20\n [\u003cc01013c5\u003e] default_idle+0x2b/0x53\n [\u003cc0101426\u003e] cpu_idle+0x39/0x4e\n [\u003cc0328386\u003e] start_kernel+0x20b/0x20d\nCode: c0 e8 b3 b6 77 fc 85 c0 75 10 68 d8 c8 9b c3 e8 82 3d 75 fc 8b 43 60 5a eb 50 8d 56 50 c7 00 00 00 00 00 66 89 68 04 eb 02 89\nca \u003c8b\u003e 0a 85 c9 75 f8 89 02 89 da ff 46 54 8b 46 10 e8 30 79 fd ff\n \u003c0\u003eKernel panic - not syncing: Fatal exception in interrupt\n\nThat oops took me to the \"ackqueue\" implementation in capi.c.  The crash\noccured in capincci_add_ack() (auto-inlined by the compiler).\n\nI read the code a bit and finally decided to replace the custom linked list\nimplementation (struct capiminor-\u003eackqueue) by a struct list_head.  That\ndid not solve the crash, but produced the following interresting oops:\n\nUnable to handle kernel paging request at virtual address 00200200\n printing eip:\nc39bb1f5\n*pde \u003d 00000000\nOops: 0002 [#1]\nModules linked in: netconsole capi capifs 3c59x mii fcdsl kernelcapi uhci_hcd usbcore ide_cd cdrom\nCPU:    0\nEIP:    0060:[\u003cc39bb1f5\u003e]    Tainted: P      VLI\nEFLAGS: 00010246   (2.6.16.11 #3)\nEIP is at capiminor_del_ack+0x18/0x49 [capi]\neax: 00200200   ebx: c18d41a0   ecx: c1385620   edx: 00100100\nesi: 0000d147   edi: 00001103   ebp: 0000d147   esp: c1093f3c\nds: 007b   es: 007b   ss: 0068\nProcess events/0 (pid: 3, threadinfo\u003dc1092000 task\u003dc1089030)\nStack: \u003c0\u003ec2a17580 c18d41a0 c39bbd16 00000038 c18d41e0 00000000 d147c640 c29e0b68\n       c29e0b90 00000212 c29e0b68 c39932b2 c29e0bb0 c10736a0 c0119ef0 c399326c\n       c10736a8 c10736a0 c10736b0 c0119f93 c011a06e 00000001 00000000 00000000\nCall Trace:\n [\u003cc39bbd16\u003e] handle_minor_send+0x1af/0x241 [capi]\n [\u003cc39932b2\u003e] recv_handler+0x46/0x5f [kernelcapi]\n [\u003cc0119ef0\u003e] run_workqueue+0x5e/0x8d\n [\u003cc399326c\u003e] recv_handler+0x0/0x5f [kernelcapi]\n [\u003cc0119f93\u003e] worker_thread+0x0/0x10b\n [\u003cc011a06e\u003e] worker_thread+0xdb/0x10b\n [\u003cc010c998\u003e] default_wake_function+0x0/0xc\n [\u003cc011c399\u003e] kthread+0x90/0xbc\n [\u003cc011c309\u003e] kthread+0x0/0xbc\n [\u003cc0100a65\u003e] kernel_thread_helper+0x5/0xb\nCode: 7e 02 89 ee 89 f0 5a f7 d0 c1 f8 1f 5b 21 f0 5e 5f 5d c3 56 53 8b 48 50 89 d6 89 c3 8b 11 eb 2f 66 39 71 08 75 25 8b 41 04 8b 11 \u003c89\u003e 10 89 42 04 c7 01 00 01 10 00 89 c8 c7 41 04 00 02 20 00 e8\n\nThe interresting part of it is the \"virtual address 00200200\", which is\nLIST_POISON2.  I thought about some race condition, but as this is an UP\nsystem, it leads to questions on how it can happen.  If we look at EFLAGS:\n00010202, we see that interrupts are enabled at the time of the crash\n(eflags \u0026 0x200).\n\nFinally, I don\u0027t understand all the capi code, but I think that\nhandle_minor_send() is racing somehow against capi_recv_message(), which\ncall both capiminor_del_ack().  So if an IRQ occurs in the middle of\ncapiminor_del_ack() and another instance of it is invoked, it leads to\nlinked list corruption.\n\nI came up with the following patch.  With this, I could not reproduce the\ncrash anymore.  Clearly, this is not the correct fix for the issue.  As this\nseems to be some locking issue, there might be more locking issues in that\ncode.  For example, doesn\u0027t the whole struct capiminor have to be locked\nsomehow?\n\nCc: Carsten Paeth \u003ccalle@calle.de\u003e\nCc: Kai Germaschewski \u003ckai.germaschewski@gmx.de\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90d5ede5985f3b172cc3ccd89bf8c52a209088a5",
      "tree": "3163c41681c1cf7d90a7c272c82378413198d16f",
      "parents": [
        "a5370553952a9a414860d878b67c49eff11313bd"
      ],
      "author": {
        "name": "Stefan Schweizer",
        "email": "genstef@gentoo.org",
        "time": "Mon May 15 09:43:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon May 15 11:20:54 2006 -0700"
      },
      "message": "[PATCH] Fix capi reload by unregistering the correct major\n\nI am having the bug FATAL: Error inserting capi ([..]/capi.ko): Device or\nresource busy when I try to reload capi after loading it.  in dmesg:\ncapi20: unable to get major 68\n\nFix the issue which is caused by setting the major to zero when registering\nthe chrdev succeeded.\n\n(akpm: this means that we can again not use `major\u003d0\u0027 (dynamic major\nallocation) for this driver).\n\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99ac48f54a91d02140c497edc31dc57d4bc5c85d",
      "tree": "68719391694a6914191bdf73d2071875f7653f6f",
      "parents": [
        "ec1b9466cb4f6ae6d950bd67055d9410d1056d2a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] mark f_ops const in the inode\n\nMark the f_ops members of inodes as const, as well as fix the\nripple-through this causes by places that copy this f_ops and then \"do\nstuff\" with it.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6d9eac34104654aa129e365b8d48bbb8c957f186",
      "tree": "47b81aaebb9903df4bdaacad963ca4ee2bf04204",
      "parents": [
        "829d5f68ec59ff7c0fdd472132680df8e4b64f3e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Mar 28 01:56:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:02 2006 -0800"
      },
      "message": "[PATCH] capi: register_chrdev() fix\n\nIf the user specified `major\u003d0\u0027 (odd thing to do), capi.c will use dynamic\nallocation.  We need to pick up that major for subsequent unregister_chrdev().\n\nAcked-by: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9cdf18279d1f4a2d075ebe924d74e6e4547f6e1b",
      "tree": "38a5e7b45ea57535c472601a97785d1360b1e6ee",
      "parents": [
        "4f7a07b88726781e37c4c5f63db3a6ee3f8500d3"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Thu Mar 23 03:00:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:10 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: kcapi.c\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33f0f88f1c51ae5c2d593d26960c760ea154c2e2",
      "tree": "f53a38cf49406863f079d74d0e8f91b276f7c1a9",
      "parents": [
        "6ed80991a2dce4afc113be35089c564d62fa1f11"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Mon Jan 09 20:54:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:59 2006 -0800"
      },
      "message": "[PATCH] TTY layer buffering revamp\n\nThe API and code have been through various bits of initial review by\nserial driver people but they definitely need to live somewhere for a\nwhile so the unconverted drivers can get knocked into shape, existing\ndrivers that have been updated can be better tuned and bugs whacked out.\n\nThis replaces the tty flip buffers with kmalloc objects in rings. In the\nnormal situation for an IRQ driven serial port at typical speeds the\nbehaviour is pretty much the same, two buffers end up allocated and the\nkernel cycles between them as before.\n\nWhen there are delays or at high speed we now behave far better as the\nbuffer pool can grow a bit rather than lose characters. This also means\nthat we can operate at higher speeds reliably.\n\nFor drivers that receive characters in blocks (DMA based, USB and\nespecially virtualisation) the layer allows a lot of driver specific\ncode that works around the tty layer with private secondary queues to be\nremoved. The IBM folks need this sort of layer, the smart serial port\npeople do, the virtualisers do (because a virtualised tty typically\noperates at infinite speed rather than emulating 9600 baud).\n\nFinally many drivers had invalid and unsafe attempts to avoid buffer\noverflows by directly invoking tty methods extracted out of the innards\nof work queue structs. These are no longer needed and all go away. That\nfixes various random hangs with serial ports on overflow.\n\nThe other change in here is to optimise the receive_room path that is\nused by some callers. It turns out that only one ldisc uses receive room\nexcept asa constant and it updates it far far less than the value is\nread. We thus make it a variable not a function call.\n\nI expect the code to contain bugs due to the size alone but I\u0027ll be\nwatching and squashing them and feeding out new patches as it goes.\n\nBecause the buffers now dynamically expand you should only run out of\nbuffering when the kernel runs out of memory for real.  That means a lot of\nthe horrible hacks high performance drivers used to do just aren\u0027t needed any\nmore.\n\nDescription:\n\ntty_insert_flip_char is an old API and continues to work as before, as does\ntty_flip_buffer_push() [this is why many drivers dont need modification].  It\ndoes now also return the number of chars inserted\n\nThere are also\n\ntty_buffer_request_room(tty, len)\n\nwhich asks for a buffer block of the length requested and returns the space\nfound.  This improves efficiency with hardware that knows how much to\ntransfer.\n\nand tty_insert_flip_string_flags(tty, str, flags, len)\n\nto insert a string of characters and flags\n\nFor a smart interface the usual code is\n\n    len \u003d tty_request_buffer_room(tty, amount_hardware_says);\n    tty_insert_flip_string(tty, buffer_from_card, len);\n\nMore description!\n\nAt the moment tty buffers are attached directly to the tty.  This is causing a\nlot of the problems related to tty layer locking, also problems at high speed\nand also with bursty data (such as occurs in virtualised environments)\n\nI\u0027m working on ripping out the flip buffers and replacing them with a pool of\ndynamically allocated buffers.  This allows both for old style \"byte I/O\"\ndevices and also helps virtualisation and smart devices where large blocks of\ndata suddenely materialise and need storing.\n\nSo far so good.  Lots of drivers reference tty-\u003eflip.*.  Several of them also\ncall directly and unsafely into function pointers it provides.  This will all\nbreak.  Most drivers can use tty_insert_flip_char which can be kept as an API\nbut others need more.\n\nAt the moment I\u0027ve added the following interfaces, if people think more will\nbe needed now is a good time to say\n\n int tty_buffer_request_room(tty, size)\n\nTry and ensure at least size bytes are available, returns actual room (may be\nzero).  At the moment it just uses the flipbuf space but that will change.\nRepeated calls without characters being added are not cumulative.  (ie if you\ncall it with 1, 1, 1, and then 4 you\u0027ll have four characters of space.  The\nother functions will also try and grow buffers in future but this will be a\nmore efficient way when you know block sizes.\n\n int tty_insert_flip_char(tty, ch, flag)\n\nAs before insert a character if there is room.  Now returns 1 for success, 0\nfor failure.\n\n int tty_insert_flip_string(tty, str, len)\n\nInsert a block of non error characters.  Returns the number inserted.\n\n int tty_prepare_flip_string(tty, strptr, len)\n\nAdjust the buffer to allow len characters to be added.  Returns a buffer\npointer in strptr and the length available.  This allows for hardware that\nneeds to use functions like insl or mencpy_fromio.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nCc: Paul Fulghum \u003cpaulkf@microgate.com\u003e\nSigned-off-by: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nSigned-off-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: John Hawkes \u003chawkes@sgi.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6e21bd9a30f1d7eab26ef8b9259376e5322d89e5",
      "tree": "dd63e6e19965f8ef72d452694407e820ecb0e8c1",
      "parents": [
        "0f59cc4a35dbbc45c972daad0f1b063380cd9ea4"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Jan 08 01:05:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:14:09 2006 -0800"
      },
      "message": "[PATCH] drivers/isdn/: add missing #includes\n\nEvery file should #include the headers containing the prototypes for its\nglobal functions.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Armin Schindler \u003carmin@melware.de\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4e57b6817880946a3a78d5d8cad1ace363f7e449",
      "tree": "b6b5f3f9e8e52cc55d98239a4992e72e983c8fa4",
      "parents": [
        "b0423a0d9cc836b2c3d796623cd19236bfedfe63"
      ],
      "author": {
        "name": "Tim Schmielau",
        "email": "tim@physik3.uni-rostock.de",
        "time": "Sun Oct 30 15:03:48 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:32 2005 -0800"
      },
      "message": "[PATCH] fix missing includes\n\nI recently picked up my older work to remove unnecessary #includes of\nsched.h, starting from a patch by Dave Jones to not include sched.h\nfrom module.h. This reduces the number of indirect includes of sched.h\nby ~300. Another ~400 pointless direct includes can be removed after\nthis disentangling (patch to follow later).\nHowever, quite a few indirect includes need to be fixed up for this.\n\nIn order to feed the patches through -mm with as little disturbance as\npossible, I\u0027ve split out the fixes I accumulated up to now (complete for\ni386 and x86_64, more archs to follow later) and post them before the real\npatch.  This way this large part of the patch is kept simple with only\nadding #includes, and all hunks are independent of each other.  So if any\nhunk rejects or gets in the way of other patches, just drop it.  My scripts\nwill pick it up again in the next round.\n\nSigned-off-by: Tim Schmielau \u003ctim@physik3.uni-rostock.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "53f4654272df7c51064825024340554b39c9efba",
      "tree": "e3e7b82a6bb0040ffbd267b250be2720704b98f2",
      "parents": [
        "51d172d5f3a193e4b8f76179b2e55d7a36b94117"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Oct 27 22:25:43 2005 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 28 09:52:52 2005 -0700"
      },
      "message": "[PATCH] Driver Core: fix up all callers of class_device_create()\n\nThe previous patch adding the ability to nest struct class_device\nchanged the paramaters to the call class_device_create().  This patch\nfixes up all in-kernel users of the function.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "820d220de400cfaaf846a2d8b5de93f9ea5a9b80",
      "tree": "1ae4d2b24483c41446d42b07f6ca120674c3fae0",
      "parents": [
        "8dbddf17824861f2298de093549e6493d9844835"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Sat Aug 27 13:47:06 2005 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Aug 27 10:11:40 2005 -0700"
      },
      "message": "[PATCH] Fix capifs bug in initialization error path.\n\nThis fixes a bug in the capifs initialization code, where the\nfilesystem is not unregistered if kern_mount() fails.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Karsten Keil \u003ckkeil@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "56b2293595b2eb52cc2aa2baf92c6cfa8265f9d5",
      "tree": "5cbada5b35b1b87dfd75852c9397a2b14dfbb9d9",
      "parents": [
        "8874b414ffe037c39e73bb262ddf69653a13c0a4"
      ],
      "author": {
        "name": "gregkh@suse.de",
        "email": "gregkh@suse.de",
        "time": "Wed Mar 23 10:01:41 2005 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 20 15:15:09 2005 -0700"
      },
      "message": "[PATCH] class: convert drivers/* to use the new class api instead of class_simple\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "408b664a7d394a5e4315fbd14aca49b042cb2b08",
      "tree": "bd3ebe72229227962d157e46e61ed65b78d6e28b",
      "parents": [
        "c31403a1f5a761599df38bcc2d6ba94f24320c33"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun May 01 08:59:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:29 2005 -0700"
      },
      "message": "[PATCH] make lots of things static\n\nAnother large rollup of various patches from Adrian which make things static\nwhere they were needlessly exported.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
