All of lore.kernel.org
 help / color / mirror / Atom feed
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.