diff for duplicates of <cfc4caad55554bf68bfae8a23c32950c@h3c.com> diff --git a/a/1.txt b/N1/1.txt index 8795898..86bfa5e 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,63 +1,102 @@ -RGVhciBhbGzvvJoNCg0KQ291bGQgSSBnZXQgeW91ciBjb21tZW50cyBmb3IgdGhlIHVwZGF0ZXM/ -ICBJZiBJIGNhbiBnZXQgYSByZXBseSwgaXQgd2lsbCBoZWxwIG1lIGEgbG90IC4gVGhhbmtzDQoN -Cmh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDIwLzEyLzI4LzE5DQoNCg0KDQoqKioqKioqKioqKioq -KioqKioqKioqKioqKioqKioqDQoNCg0KLS0tLU9yaWdpbmFsIG1haWwgLS0tLS0NCuWPkeS7tuS6 -ujogZ2FveWFuIChSRCkgDQrlj5HpgIHml7bpl7Q6IDIwMjDlubQxMuaciDI45pelIDE1OjE2DQrm -lLbku7bkuro6IHBhdWx1c0BzYW1iYS5vcmc7IGRhdmVtQGRhdmVtbG9mdC5uZXQ7IGt1YmFAa2Vy -bmVsLm9yZw0K5oqE6YCBOiBsaW51eC1wcHBAdmdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5r -ZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBnYW95YW4gKFJEKSA8Z2Fv -LnlhbkJAaDNjLmNvbT4NCuS4u+mimDogW1BBVENIXSBuZXQ6IHJlbW92ZSBkaXNjX2RhdGFfbG9j -ayBpbiBwcHAgbGluZSBkaXNjaXBsaW5lDQoNCkluIHR0eSBsYXllciwgaXQgdXNlIHR0eS0+bGRp -c2Nfc2VtIHRvIHByb2VjdCB0dHlfbGRpc2Nfb3BzLg0KU28gSSB0aGluayB0dHktPmxkaXNjX3Nl -bSBjYW4gYWxzbyBwcm90ZWN0IHR0eS0+ZGlzY19kYXRhOyBGb3IgZXhhbWxwZSwgV2hlbiBjcHUg -QSBpcyBydW5uaW5nIHBwcF9zeW5jdHR5X2lvY3RsIHRoYXQgaG9sZCB0aGUgdHR5LT5sZGlzY19z -ZW0sIGF0IHRoZSBzYW1lIHRpbWUgIGlmIGNwdSBCIGNhbGxzIHBwcF9zeW5jdHR5X2Nsb3NlLCBp -dCB3aWxsIHdhaXQgdW50aWwgY3B1IEEgcmVsZWFzZSB0dHktPmxkaXNjX3NlbS4gU28gSSB0aGlu -ayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBoYXZlIHRoZSBkaXNjX2RhdGFfbG9jazsNCg0KY3B1IEEg -ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUgQg0KdHR5X2lvY3RsICAgICAgICAgICAgICAg -ICAgICAgICB0dHlfcmVvcGVuDQogLT5ob2xkIHR0eS0+bGRpc2Nfc2VtICAgICAgICAgICAgLT5o -b2xkIHR0eS0+bGRpc2Nfc2VtKHdyaXRlKSwgZmFpbGVkDQogLT5sZC0+b3BzLT5pb2N0bCAgICAg -ICAgICAgICAgICAgLT53YWl0Li4uDQogLT5yZWxlYXNlIHR0eS0+bGRpc2Nfc2VtICAgICAgICAg -LT53YWl0Li4uT0ssaG9sZCB0dHktPmxkaXNjX3NlbQ0KICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgLT50dHlfbGRpc2NfcmVpbml0DQogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIC0+dHR5X2xkaXNjX2Nsb3NlDQogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgLT5sZC0+b3BzLT5jbG9zZQ0KDQpTaWduZWQtb2ZmLWJ5OiBHYW8gWWFu -IDxnYW8ueWFuQkBoM2MuY29tPg0KLS0tDQogZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jICAg -fCAxMSArKy0tLS0tLS0tLQ0KIGRyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jIHwgMTIgKyst -LS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9u -cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jIGIvZHJpdmVy -cy9uZXQvcHBwL3BwcF9hc3luYy5jIGluZGV4IDI5YTA5MTdhOC4uMjBiNTBmYWNkIDEwMDY0NA0K -LS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jDQorKysgYi9kcml2ZXJzL25ldC9wcHAv -cHBwX2FzeW5jLmMNCkBAIC0xMjcsMTcgKzEyNywxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBw -cF9jaGFubmVsX29wcyBhc3luY19vcHMgPSB7DQogICogRklYTUU6IHRoaXMgaXMgbm8gbG9uZ2Vy -IHRydWUuIFRoZSBfY2xvc2UgcGF0aCBmb3IgdGhlIGxkaXNjIGlzDQogICogbm93IGd1YXJhbnRl -ZWQgdG8gYmUgc2FuZS4NCiAgKi8NCi1zdGF0aWMgREVGSU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9j -ayk7DQogDQogc3RhdGljIHN0cnVjdCBhc3luY3BwcCAqYXBfZ2V0KHN0cnVjdCB0dHlfc3RydWN0 -ICp0dHkpICB7DQotCXN0cnVjdCBhc3luY3BwcCAqYXA7DQorCXN0cnVjdCBhc3luY3BwcCAqYXAg -PSB0dHktPmRpc2NfZGF0YTsNCiANCi0JcmVhZF9sb2NrKCZkaXNjX2RhdGFfbG9jayk7DQotCWFw -ID0gdHR5LT5kaXNjX2RhdGE7DQogCWlmIChhcCAhPSBOVUxMKQ0KIAkJcmVmY291bnRfaW5jKCZh -cC0+cmVmY250KTsNCi0JcmVhZF91bmxvY2soJmRpc2NfZGF0YV9sb2NrKTsNCiAJcmV0dXJuIGFw -Ow0KIH0NCiANCkBAIC0yMTQsMTIgKzIxMCw5IEBAIHBwcF9hc3luY3R0eV9vcGVuKHN0cnVjdCB0 -dHlfc3RydWN0ICp0dHkpICBzdGF0aWMgdm9pZCAgcHBwX2FzeW5jdHR5X2Nsb3NlKHN0cnVjdCB0 -dHlfc3RydWN0ICp0dHkpICB7DQotCXN0cnVjdCBhc3luY3BwcCAqYXA7DQorCXN0cnVjdCBhc3lu -Y3BwcCAqYXAgPSB0dHktPmRpc2NfZGF0YTsNCiANCi0Jd3JpdGVfbG9ja19pcnEoJmRpc2NfZGF0 -YV9sb2NrKTsNCi0JYXAgPSB0dHktPmRpc2NfZGF0YTsNCiAJdHR5LT5kaXNjX2RhdGEgPSBOVUxM -Ow0KLQl3cml0ZV91bmxvY2tfaXJxKCZkaXNjX2RhdGFfbG9jayk7DQogCWlmICghYXApDQogCQly -ZXR1cm47DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9zeW5jdHR5LmMgYi9k -cml2ZXJzL25ldC9wcHAvcHBwX3N5bmN0dHkuYyBpbmRleCAwZjMzODc1MmMuLjUzZmI2OGUyOSAx -MDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jDQorKysgYi9kcml2ZXJz -L25ldC9wcHAvcHBwX3N5bmN0dHkuYw0KQEAgLTEyOSwxNyArMTI5LDEyIEBAIHBwcF9wcmludF9i -dWZmZXIgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IF9fdTggKmJ1ZiwgaW50IGNvdW50KQ0KICAq -DQogICogRklYTUU6IEZpeGVkIGluIHR0eV9pbyBub3dhZGF5cy4NCiAgKi8NCi1zdGF0aWMgREVG -SU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9jayk7DQotDQogc3RhdGljIHN0cnVjdCBzeW5jcHBwICpz -cF9nZXQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkgIHsNCi0Jc3RydWN0IHN5bmNwcHAgKmFwOw0K -KwlzdHJ1Y3Qgc3luY3BwcCAqYXAgPSB0dHktPmRpc2NfZGF0YTsNCiANCi0JcmVhZF9sb2NrKCZk -aXNjX2RhdGFfbG9jayk7DQotCWFwID0gdHR5LT5kaXNjX2RhdGE7DQogCWlmIChhcCAhPSBOVUxM -KQ0KIAkJcmVmY291bnRfaW5jKCZhcC0+cmVmY250KTsNCi0JcmVhZF91bmxvY2soJmRpc2NfZGF0 -YV9sb2NrKTsNCiAJcmV0dXJuIGFwOw0KIH0NCiANCkBAIC0yMTMsMTIgKzIwOCw5IEBAIHBwcF9z -eW5jX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkgIHN0YXRpYyB2b2lkICBwcHBfc3luY19j -bG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KSAgew0KLQlzdHJ1Y3Qgc3luY3BwcCAqYXA7DQor -CXN0cnVjdCBzeW5jcHBwICphcCA9IHR0eS0+ZGlzY19kYXRhOw0KIA0KLQl3cml0ZV9sb2NrX2ly -cSgmZGlzY19kYXRhX2xvY2spOw0KLQlhcCA9IHR0eS0+ZGlzY19kYXRhOw0KIAl0dHktPmRpc2Nf -ZGF0YSA9IE5VTEw7DQotCXdyaXRlX3VubG9ja19pcnEoJmRpc2NfZGF0YV9sb2NrKTsNCiAJaWYg -KCFhcCkNCiAJCXJldHVybjsNCiANCi0tDQoyLjE3LjENCg0K +Dear all: + +Could I get your comments for the updates? If I can get a reply, it will help me a lot . Thanks + +https://lkml.org/lkml/2020/12/28/19 + + + +******************************* + + +----Original mail ----- +发件人: gaoyan (RD) +发送时间: 2020年12月28日 15:16 +收件人: paulus@samba.org; davem@davemloft.net; kuba@kernel.org +抄送: linux-ppp@vger.kernel.org; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; gaoyan (RD) <gao.yanB@h3c.com> +主题: [PATCH] net: remove disc_data_lock in ppp line discipline + +In tty layer, it use tty->ldisc_sem to proect tty_ldisc_ops. +So I think tty->ldisc_sem can also protect tty->disc_data; For examlpe, When cpu A is running ppp_synctty_ioctl that hold the tty->ldisc_sem, at the same time if cpu B calls ppp_synctty_close, it will wait until cpu A release tty->ldisc_sem. So I think it is unnecessary to have the disc_data_lock; + +cpu A cpu B +tty_ioctl tty_reopen + ->hold tty->ldisc_sem ->hold tty->ldisc_sem(write), failed + ->ld->ops->ioctl ->wait... + ->release tty->ldisc_sem ->wait...OK,hold tty->ldisc_sem + ->tty_ldisc_reinit + ->tty_ldisc_close + ->ld->ops->close + +Signed-off-by: Gao Yan <gao.yanB@h3c.com> +--- + drivers/net/ppp/ppp_async.c | 11 ++--------- + drivers/net/ppp/ppp_synctty.c | 12 ++---------- + 2 files changed, 4 insertions(+), 19 deletions(-) + +diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c index 29a0917a8..20b50facd 100644 +--- a/drivers/net/ppp/ppp_async.c ++++ b/drivers/net/ppp/ppp_async.c +@@ -127,17 +127,13 @@ static const struct ppp_channel_ops async_ops = { + * FIXME: this is no longer true. The _close path for the ldisc is + * now guaranteed to be sane. + */ +-static DEFINE_RWLOCK(disc_data_lock); + + static struct asyncppp *ap_get(struct tty_struct *tty) { +- struct asyncppp *ap; ++ struct asyncppp *ap = tty->disc_data; + +- read_lock(&disc_data_lock); +- ap = tty->disc_data; + if (ap != NULL) + refcount_inc(&ap->refcnt); +- read_unlock(&disc_data_lock); + return ap; + } + +@@ -214,12 +210,9 @@ ppp_asynctty_open(struct tty_struct *tty) static void ppp_asynctty_close(struct tty_struct *tty) { +- struct asyncppp *ap; ++ struct asyncppp *ap = tty->disc_data; + +- write_lock_irq(&disc_data_lock); +- ap = tty->disc_data; + tty->disc_data = NULL; +- write_unlock_irq(&disc_data_lock); + if (!ap) + return; + +diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c index 0f338752c..53fb68e29 100644 +--- a/drivers/net/ppp/ppp_synctty.c ++++ b/drivers/net/ppp/ppp_synctty.c +@@ -129,17 +129,12 @@ ppp_print_buffer (const char *name, const __u8 *buf, int count) + * + * FIXME: Fixed in tty_io nowadays. + */ +-static DEFINE_RWLOCK(disc_data_lock); +- + static struct syncppp *sp_get(struct tty_struct *tty) { +- struct syncppp *ap; ++ struct syncppp *ap = tty->disc_data; + +- read_lock(&disc_data_lock); +- ap = tty->disc_data; + if (ap != NULL) + refcount_inc(&ap->refcnt); +- read_unlock(&disc_data_lock); + return ap; + } + +@@ -213,12 +208,9 @@ ppp_sync_open(struct tty_struct *tty) static void ppp_sync_close(struct tty_struct *tty) { +- struct syncppp *ap; ++ struct syncppp *ap = tty->disc_data; + +- write_lock_irq(&disc_data_lock); +- ap = tty->disc_data; + tty->disc_data = NULL; +- write_unlock_irq(&disc_data_lock); + if (!ap) + return; + +-- +2.17.1 diff --git a/a/content_digest b/N1/content_digest index a16b65b..060c53a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,6 +1,6 @@ "ref\020201228071550.15745-1-gao.yanB@h3c.com\0" "From\0Gaoyan <gao.yanB@h3c.com>\0" - "Subject\0\347\255\224\345\244\215: [PATCH] net: remove disc_data_lock in =?utf-8?Q?_ppp_line_discipl\0" + "Subject\0\347\255\224\345\244\215: [PATCH] net: remove disc_data_lock in ppp line discipline\0" "Date\0Thu, 31 Dec 2020 10:00:12 +0000\0" "To\0paulus@samba.org <paulus@samba.org>" davem@davemloft.net <davem@davemloft.net> @@ -10,68 +10,107 @@ " linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>\0" "\00:1\0" "b\0" - "RGVhciBhbGzvvJoNCg0KQ291bGQgSSBnZXQgeW91ciBjb21tZW50cyBmb3IgdGhlIHVwZGF0ZXM/\n" - "ICBJZiBJIGNhbiBnZXQgYSByZXBseSwgaXQgd2lsbCBoZWxwIG1lIGEgbG90IC4gVGhhbmtzDQoN\n" - "Cmh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDIwLzEyLzI4LzE5DQoNCg0KDQoqKioqKioqKioqKioq\n" - "KioqKioqKioqKioqKioqKioqDQoNCg0KLS0tLU9yaWdpbmFsIG1haWwgLS0tLS0NCuWPkeS7tuS6\n" - "ujogZ2FveWFuIChSRCkgDQrlj5HpgIHml7bpl7Q6IDIwMjDlubQxMuaciDI45pelIDE1OjE2DQrm\n" - "lLbku7bkuro6IHBhdWx1c0BzYW1iYS5vcmc7IGRhdmVtQGRhdmVtbG9mdC5uZXQ7IGt1YmFAa2Vy\n" - "bmVsLm9yZw0K5oqE6YCBOiBsaW51eC1wcHBAdmdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5r\n" - "ZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBnYW95YW4gKFJEKSA8Z2Fv\n" - "LnlhbkJAaDNjLmNvbT4NCuS4u+mimDogW1BBVENIXSBuZXQ6IHJlbW92ZSBkaXNjX2RhdGFfbG9j\n" - "ayBpbiBwcHAgbGluZSBkaXNjaXBsaW5lDQoNCkluIHR0eSBsYXllciwgaXQgdXNlIHR0eS0+bGRp\n" - "c2Nfc2VtIHRvIHByb2VjdCB0dHlfbGRpc2Nfb3BzLg0KU28gSSB0aGluayB0dHktPmxkaXNjX3Nl\n" - "bSBjYW4gYWxzbyBwcm90ZWN0IHR0eS0+ZGlzY19kYXRhOyBGb3IgZXhhbWxwZSwgV2hlbiBjcHUg\n" - "QSBpcyBydW5uaW5nIHBwcF9zeW5jdHR5X2lvY3RsIHRoYXQgaG9sZCB0aGUgdHR5LT5sZGlzY19z\n" - "ZW0sIGF0IHRoZSBzYW1lIHRpbWUgIGlmIGNwdSBCIGNhbGxzIHBwcF9zeW5jdHR5X2Nsb3NlLCBp\n" - "dCB3aWxsIHdhaXQgdW50aWwgY3B1IEEgcmVsZWFzZSB0dHktPmxkaXNjX3NlbS4gU28gSSB0aGlu\n" - "ayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBoYXZlIHRoZSBkaXNjX2RhdGFfbG9jazsNCg0KY3B1IEEg\n" - "ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUgQg0KdHR5X2lvY3RsICAgICAgICAgICAgICAg\n" - "ICAgICAgICB0dHlfcmVvcGVuDQogLT5ob2xkIHR0eS0+bGRpc2Nfc2VtICAgICAgICAgICAgLT5o\n" - "b2xkIHR0eS0+bGRpc2Nfc2VtKHdyaXRlKSwgZmFpbGVkDQogLT5sZC0+b3BzLT5pb2N0bCAgICAg\n" - "ICAgICAgICAgICAgLT53YWl0Li4uDQogLT5yZWxlYXNlIHR0eS0+bGRpc2Nfc2VtICAgICAgICAg\n" - "LT53YWl0Li4uT0ssaG9sZCB0dHktPmxkaXNjX3NlbQ0KICAgICAgICAgICAgICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgLT50dHlfbGRpc2NfcmVpbml0DQogICAgICAgICAgICAgICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgIC0+dHR5X2xkaXNjX2Nsb3NlDQogICAgICAgICAgICAgICAgICAgICAgICAg\n" - "ICAgICAgICAgICAgICAgLT5sZC0+b3BzLT5jbG9zZQ0KDQpTaWduZWQtb2ZmLWJ5OiBHYW8gWWFu\n" - "IDxnYW8ueWFuQkBoM2MuY29tPg0KLS0tDQogZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jICAg\n" - "fCAxMSArKy0tLS0tLS0tLQ0KIGRyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jIHwgMTIgKyst\n" - "LS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9u\n" - "cygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jIGIvZHJpdmVy\n" - "cy9uZXQvcHBwL3BwcF9hc3luYy5jIGluZGV4IDI5YTA5MTdhOC4uMjBiNTBmYWNkIDEwMDY0NA0K\n" - "LS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jDQorKysgYi9kcml2ZXJzL25ldC9wcHAv\n" - "cHBwX2FzeW5jLmMNCkBAIC0xMjcsMTcgKzEyNywxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBw\n" - "cF9jaGFubmVsX29wcyBhc3luY19vcHMgPSB7DQogICogRklYTUU6IHRoaXMgaXMgbm8gbG9uZ2Vy\n" - "IHRydWUuIFRoZSBfY2xvc2UgcGF0aCBmb3IgdGhlIGxkaXNjIGlzDQogICogbm93IGd1YXJhbnRl\n" - "ZWQgdG8gYmUgc2FuZS4NCiAgKi8NCi1zdGF0aWMgREVGSU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9j\n" - "ayk7DQogDQogc3RhdGljIHN0cnVjdCBhc3luY3BwcCAqYXBfZ2V0KHN0cnVjdCB0dHlfc3RydWN0\n" - "ICp0dHkpICB7DQotCXN0cnVjdCBhc3luY3BwcCAqYXA7DQorCXN0cnVjdCBhc3luY3BwcCAqYXAg\n" - "PSB0dHktPmRpc2NfZGF0YTsNCiANCi0JcmVhZF9sb2NrKCZkaXNjX2RhdGFfbG9jayk7DQotCWFw\n" - "ID0gdHR5LT5kaXNjX2RhdGE7DQogCWlmIChhcCAhPSBOVUxMKQ0KIAkJcmVmY291bnRfaW5jKCZh\n" - "cC0+cmVmY250KTsNCi0JcmVhZF91bmxvY2soJmRpc2NfZGF0YV9sb2NrKTsNCiAJcmV0dXJuIGFw\n" - "Ow0KIH0NCiANCkBAIC0yMTQsMTIgKzIxMCw5IEBAIHBwcF9hc3luY3R0eV9vcGVuKHN0cnVjdCB0\n" - "dHlfc3RydWN0ICp0dHkpICBzdGF0aWMgdm9pZCAgcHBwX2FzeW5jdHR5X2Nsb3NlKHN0cnVjdCB0\n" - "dHlfc3RydWN0ICp0dHkpICB7DQotCXN0cnVjdCBhc3luY3BwcCAqYXA7DQorCXN0cnVjdCBhc3lu\n" - "Y3BwcCAqYXAgPSB0dHktPmRpc2NfZGF0YTsNCiANCi0Jd3JpdGVfbG9ja19pcnEoJmRpc2NfZGF0\n" - "YV9sb2NrKTsNCi0JYXAgPSB0dHktPmRpc2NfZGF0YTsNCiAJdHR5LT5kaXNjX2RhdGEgPSBOVUxM\n" - "Ow0KLQl3cml0ZV91bmxvY2tfaXJxKCZkaXNjX2RhdGFfbG9jayk7DQogCWlmICghYXApDQogCQly\n" - "ZXR1cm47DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9zeW5jdHR5LmMgYi9k\n" - "cml2ZXJzL25ldC9wcHAvcHBwX3N5bmN0dHkuYyBpbmRleCAwZjMzODc1MmMuLjUzZmI2OGUyOSAx\n" - "MDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfc3luY3R0eS5jDQorKysgYi9kcml2ZXJz\n" - "L25ldC9wcHAvcHBwX3N5bmN0dHkuYw0KQEAgLTEyOSwxNyArMTI5LDEyIEBAIHBwcF9wcmludF9i\n" - "dWZmZXIgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IF9fdTggKmJ1ZiwgaW50IGNvdW50KQ0KICAq\n" - "DQogICogRklYTUU6IEZpeGVkIGluIHR0eV9pbyBub3dhZGF5cy4NCiAgKi8NCi1zdGF0aWMgREVG\n" - "SU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9jayk7DQotDQogc3RhdGljIHN0cnVjdCBzeW5jcHBwICpz\n" - "cF9nZXQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkgIHsNCi0Jc3RydWN0IHN5bmNwcHAgKmFwOw0K\n" - "KwlzdHJ1Y3Qgc3luY3BwcCAqYXAgPSB0dHktPmRpc2NfZGF0YTsNCiANCi0JcmVhZF9sb2NrKCZk\n" - "aXNjX2RhdGFfbG9jayk7DQotCWFwID0gdHR5LT5kaXNjX2RhdGE7DQogCWlmIChhcCAhPSBOVUxM\n" - "KQ0KIAkJcmVmY291bnRfaW5jKCZhcC0+cmVmY250KTsNCi0JcmVhZF91bmxvY2soJmRpc2NfZGF0\n" - "YV9sb2NrKTsNCiAJcmV0dXJuIGFwOw0KIH0NCiANCkBAIC0yMTMsMTIgKzIwOCw5IEBAIHBwcF9z\n" - "eW5jX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkgIHN0YXRpYyB2b2lkICBwcHBfc3luY19j\n" - "bG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KSAgew0KLQlzdHJ1Y3Qgc3luY3BwcCAqYXA7DQor\n" - "CXN0cnVjdCBzeW5jcHBwICphcCA9IHR0eS0+ZGlzY19kYXRhOw0KIA0KLQl3cml0ZV9sb2NrX2ly\n" - "cSgmZGlzY19kYXRhX2xvY2spOw0KLQlhcCA9IHR0eS0+ZGlzY19kYXRhOw0KIAl0dHktPmRpc2Nf\n" - "ZGF0YSA9IE5VTEw7DQotCXdyaXRlX3VubG9ja19pcnEoJmRpc2NfZGF0YV9sb2NrKTsNCiAJaWYg\n" - KCFhcCkNCiAJCXJldHVybjsNCiANCi0tDQoyLjE3LjENCg0K + "Dear all\357\274\232\n" + "\n" + "Could I get your comments for the updates? If I can get a reply, it will help me a lot . Thanks\n" + "\n" + "https://lkml.org/lkml/2020/12/28/19\n" + "\n" + "\n" + "\n" + "*******************************\n" + "\n" + "\n" + "----Original mail -----\n" + "\345\217\221\344\273\266\344\272\272: gaoyan (RD) \n" + "\345\217\221\351\200\201\346\227\266\351\227\264: 2020\345\271\26412\346\234\21028\346\227\245 15:16\n" + "\346\224\266\344\273\266\344\272\272: paulus@samba.org; davem@davemloft.net; kuba@kernel.org\n" + "\346\212\204\351\200\201: linux-ppp@vger.kernel.org; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; gaoyan (RD) <gao.yanB@h3c.com>\n" + "\344\270\273\351\242\230: [PATCH] net: remove disc_data_lock in ppp line discipline\n" + "\n" + "In tty layer, it use tty->ldisc_sem to proect tty_ldisc_ops.\n" + "So I think tty->ldisc_sem can also protect tty->disc_data; For examlpe, When cpu A is running ppp_synctty_ioctl that hold the tty->ldisc_sem, at the same time if cpu B calls ppp_synctty_close, it will wait until cpu A release tty->ldisc_sem. So I think it is unnecessary to have the disc_data_lock;\n" + "\n" + "cpu A cpu B\n" + "tty_ioctl tty_reopen\n" + " ->hold tty->ldisc_sem ->hold tty->ldisc_sem(write), failed\n" + " ->ld->ops->ioctl ->wait...\n" + " ->release tty->ldisc_sem ->wait...OK,hold tty->ldisc_sem\n" + " ->tty_ldisc_reinit\n" + " ->tty_ldisc_close\n" + " ->ld->ops->close\n" + "\n" + "Signed-off-by: Gao Yan <gao.yanB@h3c.com>\n" + "---\n" + " drivers/net/ppp/ppp_async.c | 11 ++---------\n" + " drivers/net/ppp/ppp_synctty.c | 12 ++----------\n" + " 2 files changed, 4 insertions(+), 19 deletions(-)\n" + "\n" + "diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c index 29a0917a8..20b50facd 100644\n" + "--- a/drivers/net/ppp/ppp_async.c\n" + "+++ b/drivers/net/ppp/ppp_async.c\n" + "@@ -127,17 +127,13 @@ static const struct ppp_channel_ops async_ops = {\n" + " * FIXME: this is no longer true. The _close path for the ldisc is\n" + " * now guaranteed to be sane.\n" + " */\n" + "-static DEFINE_RWLOCK(disc_data_lock);\n" + " \n" + " static struct asyncppp *ap_get(struct tty_struct *tty) {\n" + "-\tstruct asyncppp *ap;\n" + "+\tstruct asyncppp *ap = tty->disc_data;\n" + " \n" + "-\tread_lock(&disc_data_lock);\n" + "-\tap = tty->disc_data;\n" + " \tif (ap != NULL)\n" + " \t\trefcount_inc(&ap->refcnt);\n" + "-\tread_unlock(&disc_data_lock);\n" + " \treturn ap;\n" + " }\n" + " \n" + "@@ -214,12 +210,9 @@ ppp_asynctty_open(struct tty_struct *tty) static void ppp_asynctty_close(struct tty_struct *tty) {\n" + "-\tstruct asyncppp *ap;\n" + "+\tstruct asyncppp *ap = tty->disc_data;\n" + " \n" + "-\twrite_lock_irq(&disc_data_lock);\n" + "-\tap = tty->disc_data;\n" + " \ttty->disc_data = NULL;\n" + "-\twrite_unlock_irq(&disc_data_lock);\n" + " \tif (!ap)\n" + " \t\treturn;\n" + " \n" + "diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c index 0f338752c..53fb68e29 100644\n" + "--- a/drivers/net/ppp/ppp_synctty.c\n" + "+++ b/drivers/net/ppp/ppp_synctty.c\n" + "@@ -129,17 +129,12 @@ ppp_print_buffer (const char *name, const __u8 *buf, int count)\n" + " *\n" + " * FIXME: Fixed in tty_io nowadays.\n" + " */\n" + "-static DEFINE_RWLOCK(disc_data_lock);\n" + "-\n" + " static struct syncppp *sp_get(struct tty_struct *tty) {\n" + "-\tstruct syncppp *ap;\n" + "+\tstruct syncppp *ap = tty->disc_data;\n" + " \n" + "-\tread_lock(&disc_data_lock);\n" + "-\tap = tty->disc_data;\n" + " \tif (ap != NULL)\n" + " \t\trefcount_inc(&ap->refcnt);\n" + "-\tread_unlock(&disc_data_lock);\n" + " \treturn ap;\n" + " }\n" + " \n" + "@@ -213,12 +208,9 @@ ppp_sync_open(struct tty_struct *tty) static void ppp_sync_close(struct tty_struct *tty) {\n" + "-\tstruct syncppp *ap;\n" + "+\tstruct syncppp *ap = tty->disc_data;\n" + " \n" + "-\twrite_lock_irq(&disc_data_lock);\n" + "-\tap = tty->disc_data;\n" + " \ttty->disc_data = NULL;\n" + "-\twrite_unlock_irq(&disc_data_lock);\n" + " \tif (!ap)\n" + " \t\treturn;\n" + " \n" + "--\n" + 2.17.1 -3708a543dd7bf609ad9b1a92e13846d40bf67f74de98aec2597db74bd8a5f3c5 +b0f37b8b1991017ccbf16ceafb6f9d262549709202cd8d9b6121279589dbd3aa
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.