)]}'
{
  "commit": "3b830a9c34d5897be07176ce4e6f2d75e2c8cfd7",
  "tree": "c0fbc7f3ff3d7525c548911e1132c4c130111af5",
  "parents": [
    "9bb48c82aced07698a2d08ee0f1475a6c4f6b266"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Jan 18 13:31:30 2021 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Jan 20 16:48:47 2021 -0800"
  },
  "message": "tty: convert tty_ldisc_ops \u0027read()\u0027 function to take a kernel pointer\n\nThe tty line discipline .read() function was passed the final user\npointer destination as an argument, which doesn\u0027t match the \u0027write()\u0027\nfunction, and makes it very inconvenient to do a splice method for\nttys.\n\nThis is a conversion to use a kernel buffer instead.\n\nNOTE! It does this by passing the tty line discipline -\u003eread() function\nan additional \"cookie\" to fill in, and an offset into the cookie data.\n\nThe line discipline can fill in the cookie data with its own private\ninformation, and then the reader will repeat the read until either the\ncookie is cleared or it runs out of data.\n\nThe only real user of this is N_HDLC, which can use this to handle big\npackets, even if the kernel buffer is smaller than the whole packet.\n\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f83d67eafc9f0e8739dfa6743c086ce3360ee2af",
      "old_mode": 33188,
      "old_path": "drivers/bluetooth/hci_ldisc.c",
      "new_id": "dd92aea15b8be4e7565b96195bdad5cec9058e58",
      "new_mode": 33188,
      "new_path": "drivers/bluetooth/hci_ldisc.c"
    },
    {
      "type": "modify",
      "old_id": "8ac970a423de6e6b0434ef6c645ee88e24eff4f2",
      "old_mode": 33188,
      "old_path": "drivers/input/serio/serport.c",
      "new_id": "33e9d9bfd036f3dd4a3afc2e9f22b7c911e0ab45",
      "new_mode": 33188,
      "new_path": "drivers/input/serio/serport.c"
    },
    {
      "type": "modify",
      "old_id": "29a0917a81e6088046ca168c812347b872d01f2a",
      "old_mode": 33188,
      "old_path": "drivers/net/ppp/ppp_async.c",
      "new_id": "f14a9d190de9135308fc4f8f80f11bd3501b86c1",
      "new_mode": 33188,
      "new_path": "drivers/net/ppp/ppp_async.c"
    },
    {
      "type": "modify",
      "old_id": "0f338752c38b9dfbe86e2ab3c501e1e42168f3eb",
      "old_mode": 33188,
      "old_path": "drivers/net/ppp/ppp_synctty.c",
      "new_id": "f774b7e52da44127ae24c06f5d09b4f94d686e27",
      "new_mode": 33188,
      "new_path": "drivers/net/ppp/ppp_synctty.c"
    },
    {
      "type": "modify",
      "old_id": "25f3152089c2a5c4077d587e65d9db625b801b9f",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_gsm.c",
      "new_id": "fea1eeac5b907fc9856f84d6d32a3f2ef100f83c",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_gsm.c"
    },
    {
      "type": "modify",
      "old_id": "12557ee1edb68d221d4777d6ce4c1baecc654a80",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_hdlc.c",
      "new_id": "1363e659dc1dbce8f08983e0f1c439555640006b",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_hdlc.c"
    },
    {
      "type": "modify",
      "old_id": "96feabae47407f0480785876f9272b5e6b533971",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_null.c",
      "new_id": "ce03ae78f5c6ac40a6fe2e1278b049fbc1d7edbe",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_null.c"
    },
    {
      "type": "modify",
      "old_id": "934dd2fb2ec8072d50fef3324ee12852a063f869",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_r3964.c",
      "new_id": "3161f0a535e3714d1aad14cb8ffc39b606f05fd9",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_r3964.c"
    },
    {
      "type": "modify",
      "old_id": "4479af4d2fa5c353228cb8726dd69992bcf7607b",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_tracerouter.c",
      "new_id": "3490ed51b1a3cfafe2a982f3d364e3d962e2eb78",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_tracerouter.c"
    },
    {
      "type": "modify",
      "old_id": "d96ba82cc35692e5c6c22357be8fff57e9df1e50",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_tracesink.c",
      "new_id": "1d9931041fd8b7f37f9418dc3f0b052be5b3d77a",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_tracesink.c"
    },
    {
      "type": "modify",
      "old_id": "7e5e36315260761a88ad2bf41643fa49ed521793",
      "old_mode": 33188,
      "old_path": "drivers/tty/n_tty.c",
      "new_id": "4a34a9f43b29f69d57a5ef98426fa71aefa2e459",
      "new_mode": 33188,
      "new_path": "drivers/tty/n_tty.c"
    },
    {
      "type": "modify",
      "old_id": "338bc4ef55496592226874b90cf9b60b53f3dc9e",
      "old_mode": 33188,
      "old_path": "drivers/tty/tty_io.c",
      "new_id": "a34f8bcf875eee5c1549cc433e8db0786fa51e81",
      "new_mode": 33188,
      "new_path": "drivers/tty/tty_io.c"
    },
    {
      "type": "modify",
      "old_id": "b1e6043e9917599be03a955e46ca73123827f6d6",
      "old_mode": 33188,
      "old_path": "include/linux/tty_ldisc.h",
      "new_id": "572a0797611659d25ebcfe9f5966adc4523b28b2",
      "new_mode": 33188,
      "new_path": "include/linux/tty_ldisc.h"
    },
    {
      "type": "modify",
      "old_id": "11b554ce07ffcc1ea20b8c388206ca1504fc4405",
      "old_mode": 33188,
      "old_path": "net/nfc/nci/uart.c",
      "new_id": "1204c438e87dc5ce92200f39f9888615923bb96b",
      "new_mode": 33188,
      "new_path": "net/nfc/nci/uart.c"
    }
  ]
}
