All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1489760913.8441.1.camel@primarydata.com>

diff --git a/a/1.txt b/N1/1.txt
index 17aed84..2e8fb67 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,92 +1,66 @@
-On Fri, 2017-03-17 at 09:02 -0400, Jeff Layton wrote:
-> On Fri, 2017-03-17 at 12:50 +0000, Trond Myklebust wrote:
-> > On Fri, 2017-03-17 at 14:10 +0200, Elena Reshetova wrote:
-> > > refcount_t type and corresponding API should be
-> > > used instead of atomic_t when the variable is used as
-> > > a reference counter. This allows to avoid accidental
-> > > refcounter overflows that might lead to use-after-free
-> > > situations.
-> > > 
-> > > Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>
-> > > Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>
-> > > Signed-off-by: Kees Cook <keescook@chromium.org>
-> > > Signed-off-by: David Windsor <dwindsor@gmail.com>
-> > > ---
-> > >  include/linux/sunrpc/auth.h |  8 ++++----
-> > >  net/sunrpc/auth.c           | 12 ++++++------
-> > >  2 files changed, 10 insertions(+), 10 deletions(-)
-> > > 
-> > > diff --git a/include/linux/sunrpc/auth.h
-> > > b/include/linux/sunrpc/auth.h
-> > > index b1bc62b..bd36e0b 100644
-> > > --- a/include/linux/sunrpc/auth.h
-> > > +++ b/include/linux/sunrpc/auth.h
-> > > @@ -15,7 +15,7 @@
-> > >  #include <linux/sunrpc/msg_prot.h>
-> > >  #include <linux/sunrpc/xdr.h>
-> > >  
-> > > -#include <linux/atomic.h>
-> > > +#include <linux/refcount.h>
-> > >  #include <linux/rcupdate.h>
-> > >  #include <linux/uidgid.h>
-> > >  #include <linux/utsname.h>
-> > > @@ -68,7 +68,7 @@ struct rpc_cred {
-> > >  #endif
-> > >  	unsigned long		cr_expire;	/* when
-> > > to gc
-> > > */
-> > >  	unsigned long		cr_flags;	/* various
-> > > flags */
-> > > -	atomic_t		cr_count;	/* ref count */
-> > > +	refcount_t		cr_count;	/* ref count
-> > > */
-> > > 
-> > 
-> > NACK. That's going to be hitting
-> > WARN_ONCE(!refcount_inc_not_zero(r),
-> > "refcount_t: increment on 0; use-after-free.\n") like there's no
-> > tomorrow...
-> > 
-> > Please stop with these automated conversions. They are going to
-> > cause a
-> > lot more bugs than they fix.
-> > 
-> 
-> Agreed. These patchsets are touching places where we've already
-> banged
-> out most of the refcounting bugs. I'm against doing large scale
-> conversions like this without a damned good reason.
-> 
-> I think it may be best to do this sort of thing in a more piecemeal
-> fashion. Pick a subsystem or two and do the conversions there to
-> prove
-> that they're better than what we have. If the subsystem already has
-> problems with its refcounting, then so much the better. Point to bugs
-> that this new infrastructure helped find.
-> 
-> Encourage people to adopt your new infrastructure as new refcounted
-> objects are introduced into the kernel. You might even consider a LWN
-> article about this.
-> 
-> Eventually we'll get around to changing existing code to use it, once
-> there is a sufficient advantage to doing so. Most likely when we're
-> reworking the code for other reasons, or when we're chasing some
-> horrid
-> refcounting bug and think that this might help find it.
-
-The main issue is that this "refcount_t" implementation appears to be
-assuming that there is one and only one model for refcounts (the one
-where a value of "0" means "free me immediately").
-
-The kernel has a plethora of object caching implementations where this
-is simply not the case; the dcache is a prime example, and this cache
-is another. In both these implementation, the atomic_t variable is
-being used more as a semaphore-style lock that prevents freeing of the
-object while it is in active use as opposed to being freeable, but
-cached. This is why these automated conversions are a nuisance and a
-source of bugs.
-
--- 
-Trond Myklebust
-Linux NFS client maintainer, PrimaryData
-trond.myklebust@primarydata.com
+T24gRnJpLCAyMDE3LTAzLTE3IGF0IDA5OjAyIC0wNDAwLCBKZWZmIExheXRvbiB3cm90ZToNCj4g
+T24gRnJpLCAyMDE3LTAzLTE3IGF0IDEyOjUwICswMDAwLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6
+DQo+ID4gT24gRnJpLCAyMDE3LTAzLTE3IGF0IDE0OjEwICswMjAwLCBFbGVuYSBSZXNoZXRvdmEg
+d3JvdGU6DQo+ID4gPiByZWZjb3VudF90IHR5cGUgYW5kIGNvcnJlc3BvbmRpbmcgQVBJIHNob3Vs
+ZCBiZQ0KPiA+ID4gdXNlZCBpbnN0ZWFkIG9mIGF0b21pY190IHdoZW4gdGhlIHZhcmlhYmxlIGlz
+IHVzZWQgYXMNCj4gPiA+IGEgcmVmZXJlbmNlIGNvdW50ZXIuIFRoaXMgYWxsb3dzIHRvIGF2b2lk
+IGFjY2lkZW50YWwNCj4gPiA+IHJlZmNvdW50ZXIgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgbGVhZCB0
+byB1c2UtYWZ0ZXItZnJlZQ0KPiA+ID4gc2l0dWF0aW9ucy4NCj4gPiA+IA0KPiA+ID4gU2lnbmVk
+LW9mZi1ieTogRWxlbmEgUmVzaGV0b3ZhIDxlbGVuYS5yZXNoZXRvdmFAaW50ZWwuY29tPg0KPiA+
+ID4gU2lnbmVkLW9mZi1ieTogSGFucyBMaWxqZXN0cmFuZCA8aXNoa2FtaWVsQGdtYWlsLmNvbT4N
+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPg0K
+PiA+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgV2luZHNvciA8ZHdpbmRzb3JAZ21haWwuY29tPg0K
+PiA+ID4gLS0tDQo+ID4gPiDCoGluY2x1ZGUvbGludXgvc3VucnBjL2F1dGguaCB8wqDCoDggKysr
+Ky0tLS0NCj4gPiA+IMKgbmV0L3N1bnJwYy9hdXRoLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAx
+MiArKysrKystLS0tLS0NCj4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp
+LCAxMCBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu
+dXgvc3VucnBjL2F1dGguaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9hdXRoLmgNCj4g
+PiA+IGluZGV4IGIxYmM2MmIuLmJkMzZlMGIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNsdWRlL2xp
+bnV4L3N1bnJwYy9hdXRoLmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL2F1dGgu
+aA0KPiA+ID4gQEAgLTE1LDcgKzE1LDcgQEANCj4gPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3N1bnJw
+Yy9tc2dfcHJvdC5oPg0KPiA+ID4gwqAjaW5jbHVkZSA8bGludXgvc3VucnBjL3hkci5oPg0KPiA+
+ID4gwqANCj4gPiA+IC0jaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQo+ID4gPiArI2luY2x1ZGUg
+PGxpbnV4L3JlZmNvdW50Lmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPg0K
+PiA+ID4gwqAjaW5jbHVkZSA8bGludXgvdWlkZ2lkLmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51
+eC91dHNuYW1lLmg+DQo+ID4gPiBAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgcnBjX2NyZWQgew0K
+PiA+ID4gwqAjZW5kaWYNCj4gPiA+IMKgCXVuc2lnbmVkIGxvbmcJCWNyX2V4cGlyZTsJLyogd2hl
+bg0KPiA+ID4gdG8gZ2MNCj4gPiA+ICovDQo+ID4gPiDCoAl1bnNpZ25lZCBsb25nCQljcl9mbGFn
+czsJLyogdmFyaW91cw0KPiA+ID4gZmxhZ3MgKi8NCj4gPiA+IC0JYXRvbWljX3QJCWNyX2NvdW50
+OwkvKiByZWYgY291bnQgKi8NCj4gPiA+ICsJcmVmY291bnRfdAkJY3JfY291bnQ7CS8qIHJlZiBj
+b3VudA0KPiA+ID4gKi8NCj4gPiA+IA0KPiA+IA0KPiA+IE5BQ0suIFRoYXQncyBnb2luZyB0byBi
+ZSBoaXR0aW5nDQo+ID4gV0FSTl9PTkNFKCFyZWZjb3VudF9pbmNfbm90X3plcm8ociksDQo+ID4g
+InJlZmNvdW50X3Q6IGluY3JlbWVudCBvbiAwOyB1c2UtYWZ0ZXItZnJlZS5cbiIpIGxpa2UgdGhl
+cmUncyBubw0KPiA+IHRvbW9ycm93Li4uDQo+ID4gDQo+ID4gUGxlYXNlIHN0b3Agd2l0aCB0aGVz
+ZSBhdXRvbWF0ZWQgY29udmVyc2lvbnMuIFRoZXkgYXJlIGdvaW5nIHRvDQo+ID4gY2F1c2UgYQ0K
+PiA+IGxvdCBtb3JlIGJ1Z3MgdGhhbiB0aGV5IGZpeC4NCj4gPiANCj4gDQo+IEFncmVlZC4gVGhl
+c2UgcGF0Y2hzZXRzIGFyZSB0b3VjaGluZyBwbGFjZXMgd2hlcmUgd2UndmUgYWxyZWFkeQ0KPiBi
+YW5nZWQNCj4gb3V0IG1vc3Qgb2YgdGhlIHJlZmNvdW50aW5nIGJ1Z3MuIEknbSBhZ2FpbnN0IGRv
+aW5nIGxhcmdlIHNjYWxlDQo+IGNvbnZlcnNpb25zIGxpa2UgdGhpcyB3aXRob3V0IGEgZGFtbmVk
+IGdvb2QgcmVhc29uLg0KPiANCj4gSSB0aGluayBpdCBtYXkgYmUgYmVzdCB0byBkbyB0aGlzIHNv
+cnQgb2YgdGhpbmcgaW4gYSBtb3JlIHBpZWNlbWVhbA0KPiBmYXNoaW9uLiBQaWNrIGEgc3Vic3lz
+dGVtIG9yIHR3byBhbmQgZG8gdGhlIGNvbnZlcnNpb25zIHRoZXJlIHRvDQo+IHByb3ZlDQo+IHRo
+YXQgdGhleSdyZSBiZXR0ZXIgdGhhbiB3aGF0IHdlIGhhdmUuIElmIHRoZSBzdWJzeXN0ZW0gYWxy
+ZWFkeSBoYXMNCj4gcHJvYmxlbXMgd2l0aCBpdHMgcmVmY291bnRpbmcsIHRoZW4gc28gbXVjaCB0
+aGUgYmV0dGVyLiBQb2ludCB0byBidWdzDQo+IHRoYXQgdGhpcyBuZXcgaW5mcmFzdHJ1Y3R1cmUg
+aGVscGVkIGZpbmQuDQo+IA0KPiBFbmNvdXJhZ2UgcGVvcGxlIHRvIGFkb3B0IHlvdXIgbmV3IGlu
+ZnJhc3RydWN0dXJlIGFzIG5ldyByZWZjb3VudGVkDQo+IG9iamVjdHMgYXJlIGludHJvZHVjZWQg
+aW50byB0aGUga2VybmVsLiBZb3UgbWlnaHQgZXZlbiBjb25zaWRlciBhIExXTg0KPiBhcnRpY2xl
+IGFib3V0IHRoaXMuDQo+IA0KPiBFdmVudHVhbGx5IHdlJ2xsIGdldCBhcm91bmQgdG8gY2hhbmdp
+bmcgZXhpc3RpbmcgY29kZSB0byB1c2UgaXQsIG9uY2UNCj4gdGhlcmUgaXMgYSBzdWZmaWNpZW50
+IGFkdmFudGFnZSB0byBkb2luZyBzby4gTW9zdCBsaWtlbHkgd2hlbiB3ZSdyZQ0KPiByZXdvcmtp
+bmcgdGhlIGNvZGUgZm9yIG90aGVyIHJlYXNvbnMsIG9yIHdoZW4gd2UncmUgY2hhc2luZyBzb21l
+DQo+IGhvcnJpZA0KPiByZWZjb3VudGluZyBidWcgYW5kIHRoaW5rIHRoYXQgdGhpcyBtaWdodCBo
+ZWxwIGZpbmQgaXQuDQoNClRoZSBtYWluIGlzc3VlIGlzIHRoYXQgdGhpcyAicmVmY291bnRfdCIg
+aW1wbGVtZW50YXRpb24gYXBwZWFycyB0byBiZQ0KYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmUg
+YW5kIG9ubHkgb25lIG1vZGVsIGZvciByZWZjb3VudHMgKHRoZSBvbmUNCndoZXJlIGEgdmFsdWUg
+b2YgIjAiIG1lYW5zICJmcmVlIG1lIGltbWVkaWF0ZWx5IikuDQoNClRoZSBrZXJuZWwgaGFzIGEg
+cGxldGhvcmEgb2Ygb2JqZWN0IGNhY2hpbmcgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRoaXMNCmlz
+IHNpbXBseSBub3QgdGhlIGNhc2U7IHRoZSBkY2FjaGUgaXMgYSBwcmltZSBleGFtcGxlLCBhbmQg
+dGhpcyBjYWNoZQ0KaXMgYW5vdGhlci4gSW4gYm90aCB0aGVzZSBpbXBsZW1lbnRhdGlvbiwgdGhl
+IGF0b21pY190IHZhcmlhYmxlIGlzDQpiZWluZyB1c2VkIG1vcmUgYXMgYSBzZW1hcGhvcmUtc3R5
+bGUgbG9jayB0aGF0IHByZXZlbnRzIGZyZWVpbmcgb2YgdGhlDQpvYmplY3Qgd2hpbGUgaXQgaXMg
+aW4gYWN0aXZlIHVzZSBhcyBvcHBvc2VkIHRvIGJlaW5nIGZyZWVhYmxlLCBidXQNCmNhY2hlZC4g
+VGhpcyBpcyB3aHkgdGhlc2UgYXV0b21hdGVkIGNvbnZlcnNpb25zIGFyZSBhIG51aXNhbmNlIGFu
+ZCBhDQpzb3VyY2Ugb2YgYnVncy4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBj
+bGllbnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0
+YS5jb20NCg==
diff --git a/a/content_digest b/N1/content_digest
index ebcd1d0..f20a017 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -2,122 +2,101 @@
  "ref\01489752646-8749-2-git-send-email-elena.reshetova@intel.com\0"
  "ref\01489755011.6453.1.camel@primarydata.com\0"
  "ref\01489755736.2810.10.camel@poochiereds.net\0"
- "ref\01489755736.2810.10.camel-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org\0"
- "From\0Trond Myklebust <trondmy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>\0"
+ "From\0Trond Myklebust <trondmy@primarydata.com>\0"
  "Subject\0Re: [PATCH 01/23] net, sunrpc: convert rpc_cred.cr_count from atomic_t to refcount_t\0"
  "Date\0Fri, 17 Mar 2017 14:28:37 +0000\0"
- "To\0elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org <elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>"
-  netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
- " jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org <jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org>\0"
- "Cc\0herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org <herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>"
-  linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
-  ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org <ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org>
-  linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  ishkamiel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <ishkamiel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-  bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
-  steffen.klassert-opNxpl+3fjRBDgjK7y7TUQ@public.gmane.org <steffen.klassert-opNxpl+3fjRBDgjK7y7TUQ@public.gmane.org>
-  nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
-  linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  jreuter-K7Hl1MveuGQ@public.gmane.org <jreuter-K7Hl1MveuGQ@public.gmane.org>
-  keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
-  linux-hams-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-hams-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  dwindsor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <dwindsor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-  zyan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org <zyan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
- " sage@redhat.\0"
+ "To\0elena.reshetova@intel.com <elena.reshetova@intel.com>"
+  netdev@vger.kernel.org <netdev@vger.kernel.org>
+ " jlayton@poochiereds.net <jlayton@poochiereds.net>\0"
+ "Cc\0herbert@gondor.apana.org.au <herbert@gondor.apana.org.au>"
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+  peterz@infradead.org <peterz@infradead.org>
+  ralf@linux-mips.org <ralf@linux-mips.org>
+  linux-rdma@vger.kernel.org <linux-rdma@vger.kernel.org>
+  ishkamiel@gmail.com <ishkamiel@gmail.com>
+  bfields@fieldses.org <bfields@fieldses.org>
+  steffen.klassert@secunet.com <steffen.klassert@secunet.com>
+  nhorman@tuxdriver.com <nhorman@tuxdriver.com>
+  linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>
+  jreuter@yaina.de <jreuter@yaina.de>
+  keescook@chromium.org <keescook@chromium.org>
+  linux-hams@vger.kernel.org <linux-hams@vger.kernel.org>
+  dwindsor@gmail.com <dwindsor@gmail.com>
+  zyan@redhat.com <zyan@redhat.com>
+  sage@redhat.com <sage@redhat.com>
+  davem@davemloft.net <davem@davemloft.net>
+  linux-sctp@vger.kernel.org <linux-sctp@vger.kernel.org>
+  vyasevich@gmail.com <vyasevich@gmail.com>
+  linux-x25@vger.kernel.org <linux-x25@vger.kernel.org>
+  santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com>
+ " ceph-devel@vger.kernel.org <ceph-devel@vger.kernel.org>\0"
  "\00:1\0"
  "b\0"
- "On Fri, 2017-03-17 at 09:02 -0400, Jeff Layton wrote:\n"
- "> On Fri, 2017-03-17 at 12:50 +0000, Trond Myklebust wrote:\n"
- "> > On Fri, 2017-03-17 at 14:10 +0200, Elena Reshetova wrote:\n"
- "> > > refcount_t type and corresponding API should be\n"
- "> > > used instead of atomic_t when the variable is used as\n"
- "> > > a reference counter. This allows to avoid accidental\n"
- "> > > refcounter overflows that might lead to use-after-free\n"
- "> > > situations.\n"
- "> > > \n"
- "> > > Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>\n"
- "> > > Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>\n"
- "> > > Signed-off-by: Kees Cook <keescook@chromium.org>\n"
- "> > > Signed-off-by: David Windsor <dwindsor@gmail.com>\n"
- "> > > ---\n"
- "> > > \302\240include/linux/sunrpc/auth.h |\302\240\302\2408 ++++----\n"
- "> > > \302\240net/sunrpc/auth.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 12 ++++++------\n"
- "> > > \302\2402 files changed, 10 insertions(+), 10 deletions(-)\n"
- "> > > \n"
- "> > > diff --git a/include/linux/sunrpc/auth.h\n"
- "> > > b/include/linux/sunrpc/auth.h\n"
- "> > > index b1bc62b..bd36e0b 100644\n"
- "> > > --- a/include/linux/sunrpc/auth.h\n"
- "> > > +++ b/include/linux/sunrpc/auth.h\n"
- "> > > @@ -15,7 +15,7 @@\n"
- "> > > \302\240#include <linux/sunrpc/msg_prot.h>\n"
- "> > > \302\240#include <linux/sunrpc/xdr.h>\n"
- "> > > \302\240\n"
- "> > > -#include <linux/atomic.h>\n"
- "> > > +#include <linux/refcount.h>\n"
- "> > > \302\240#include <linux/rcupdate.h>\n"
- "> > > \302\240#include <linux/uidgid.h>\n"
- "> > > \302\240#include <linux/utsname.h>\n"
- "> > > @@ -68,7 +68,7 @@ struct rpc_cred {\n"
- "> > > \302\240#endif\n"
- "> > > \302\240\tunsigned long\t\tcr_expire;\t/* when\n"
- "> > > to gc\n"
- "> > > */\n"
- "> > > \302\240\tunsigned long\t\tcr_flags;\t/* various\n"
- "> > > flags */\n"
- "> > > -\tatomic_t\t\tcr_count;\t/* ref count */\n"
- "> > > +\trefcount_t\t\tcr_count;\t/* ref count\n"
- "> > > */\n"
- "> > > \n"
- "> > \n"
- "> > NACK. That's going to be hitting\n"
- "> > WARN_ONCE(!refcount_inc_not_zero(r),\n"
- "> > \"refcount_t: increment on 0; use-after-free.\\n\") like there's no\n"
- "> > tomorrow...\n"
- "> > \n"
- "> > Please stop with these automated conversions. They are going to\n"
- "> > cause a\n"
- "> > lot more bugs than they fix.\n"
- "> > \n"
- "> \n"
- "> Agreed. These patchsets are touching places where we've already\n"
- "> banged\n"
- "> out most of the refcounting bugs. I'm against doing large scale\n"
- "> conversions like this without a damned good reason.\n"
- "> \n"
- "> I think it may be best to do this sort of thing in a more piecemeal\n"
- "> fashion. Pick a subsystem or two and do the conversions there to\n"
- "> prove\n"
- "> that they're better than what we have. If the subsystem already has\n"
- "> problems with its refcounting, then so much the better. Point to bugs\n"
- "> that this new infrastructure helped find.\n"
- "> \n"
- "> Encourage people to adopt your new infrastructure as new refcounted\n"
- "> objects are introduced into the kernel. You might even consider a LWN\n"
- "> article about this.\n"
- "> \n"
- "> Eventually we'll get around to changing existing code to use it, once\n"
- "> there is a sufficient advantage to doing so. Most likely when we're\n"
- "> reworking the code for other reasons, or when we're chasing some\n"
- "> horrid\n"
- "> refcounting bug and think that this might help find it.\n"
- "\n"
- "The main issue is that this \"refcount_t\" implementation appears to be\n"
- "assuming that there is one and only one model for refcounts (the one\n"
- "where a value of \"0\" means \"free me immediately\").\n"
- "\n"
- "The kernel has a plethora of object caching implementations where this\n"
- "is simply not the case; the dcache is a prime example, and this cache\n"
- "is another. In both these implementation, the atomic_t variable is\n"
- "being used more as a semaphore-style lock that prevents freeing of the\n"
- "object while it is in active use as opposed to being freeable, but\n"
- "cached. This is why these automated conversions are a nuisance and a\n"
- "source of bugs.\n"
- "\n"
- "-- \n"
- "Trond Myklebust\n"
- "Linux NFS client maintainer, PrimaryData\n"
- trond.myklebust@primarydata.com
+ "T24gRnJpLCAyMDE3LTAzLTE3IGF0IDA5OjAyIC0wNDAwLCBKZWZmIExheXRvbiB3cm90ZToNCj4g\n"
+ "T24gRnJpLCAyMDE3LTAzLTE3IGF0IDEyOjUwICswMDAwLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6\n"
+ "DQo+ID4gT24gRnJpLCAyMDE3LTAzLTE3IGF0IDE0OjEwICswMjAwLCBFbGVuYSBSZXNoZXRvdmEg\n"
+ "d3JvdGU6DQo+ID4gPiByZWZjb3VudF90IHR5cGUgYW5kIGNvcnJlc3BvbmRpbmcgQVBJIHNob3Vs\n"
+ "ZCBiZQ0KPiA+ID4gdXNlZCBpbnN0ZWFkIG9mIGF0b21pY190IHdoZW4gdGhlIHZhcmlhYmxlIGlz\n"
+ "IHVzZWQgYXMNCj4gPiA+IGEgcmVmZXJlbmNlIGNvdW50ZXIuIFRoaXMgYWxsb3dzIHRvIGF2b2lk\n"
+ "IGFjY2lkZW50YWwNCj4gPiA+IHJlZmNvdW50ZXIgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgbGVhZCB0\n"
+ "byB1c2UtYWZ0ZXItZnJlZQ0KPiA+ID4gc2l0dWF0aW9ucy4NCj4gPiA+IA0KPiA+ID4gU2lnbmVk\n"
+ "LW9mZi1ieTogRWxlbmEgUmVzaGV0b3ZhIDxlbGVuYS5yZXNoZXRvdmFAaW50ZWwuY29tPg0KPiA+\n"
+ "ID4gU2lnbmVkLW9mZi1ieTogSGFucyBMaWxqZXN0cmFuZCA8aXNoa2FtaWVsQGdtYWlsLmNvbT4N\n"
+ "Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPg0K\n"
+ "PiA+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgV2luZHNvciA8ZHdpbmRzb3JAZ21haWwuY29tPg0K\n"
+ "PiA+ID4gLS0tDQo+ID4gPiDCoGluY2x1ZGUvbGludXgvc3VucnBjL2F1dGguaCB8wqDCoDggKysr\n"
+ "Ky0tLS0NCj4gPiA+IMKgbmV0L3N1bnJwYy9hdXRoLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAx\n"
+ "MiArKysrKystLS0tLS0NCj4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp\n"
+ "LCAxMCBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu\n"
+ "dXgvc3VucnBjL2F1dGguaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9hdXRoLmgNCj4g\n"
+ "PiA+IGluZGV4IGIxYmM2MmIuLmJkMzZlMGIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNsdWRlL2xp\n"
+ "bnV4L3N1bnJwYy9hdXRoLmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL2F1dGgu\n"
+ "aA0KPiA+ID4gQEAgLTE1LDcgKzE1LDcgQEANCj4gPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3N1bnJw\n"
+ "Yy9tc2dfcHJvdC5oPg0KPiA+ID4gwqAjaW5jbHVkZSA8bGludXgvc3VucnBjL3hkci5oPg0KPiA+\n"
+ "ID4gwqANCj4gPiA+IC0jaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQo+ID4gPiArI2luY2x1ZGUg\n"
+ "PGxpbnV4L3JlZmNvdW50Lmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPg0K\n"
+ "PiA+ID4gwqAjaW5jbHVkZSA8bGludXgvdWlkZ2lkLmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51\n"
+ "eC91dHNuYW1lLmg+DQo+ID4gPiBAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgcnBjX2NyZWQgew0K\n"
+ "PiA+ID4gwqAjZW5kaWYNCj4gPiA+IMKgCXVuc2lnbmVkIGxvbmcJCWNyX2V4cGlyZTsJLyogd2hl\n"
+ "bg0KPiA+ID4gdG8gZ2MNCj4gPiA+ICovDQo+ID4gPiDCoAl1bnNpZ25lZCBsb25nCQljcl9mbGFn\n"
+ "czsJLyogdmFyaW91cw0KPiA+ID4gZmxhZ3MgKi8NCj4gPiA+IC0JYXRvbWljX3QJCWNyX2NvdW50\n"
+ "OwkvKiByZWYgY291bnQgKi8NCj4gPiA+ICsJcmVmY291bnRfdAkJY3JfY291bnQ7CS8qIHJlZiBj\n"
+ "b3VudA0KPiA+ID4gKi8NCj4gPiA+IA0KPiA+IA0KPiA+IE5BQ0suIFRoYXQncyBnb2luZyB0byBi\n"
+ "ZSBoaXR0aW5nDQo+ID4gV0FSTl9PTkNFKCFyZWZjb3VudF9pbmNfbm90X3plcm8ociksDQo+ID4g\n"
+ "InJlZmNvdW50X3Q6IGluY3JlbWVudCBvbiAwOyB1c2UtYWZ0ZXItZnJlZS5cbiIpIGxpa2UgdGhl\n"
+ "cmUncyBubw0KPiA+IHRvbW9ycm93Li4uDQo+ID4gDQo+ID4gUGxlYXNlIHN0b3Agd2l0aCB0aGVz\n"
+ "ZSBhdXRvbWF0ZWQgY29udmVyc2lvbnMuIFRoZXkgYXJlIGdvaW5nIHRvDQo+ID4gY2F1c2UgYQ0K\n"
+ "PiA+IGxvdCBtb3JlIGJ1Z3MgdGhhbiB0aGV5IGZpeC4NCj4gPiANCj4gDQo+IEFncmVlZC4gVGhl\n"
+ "c2UgcGF0Y2hzZXRzIGFyZSB0b3VjaGluZyBwbGFjZXMgd2hlcmUgd2UndmUgYWxyZWFkeQ0KPiBi\n"
+ "YW5nZWQNCj4gb3V0IG1vc3Qgb2YgdGhlIHJlZmNvdW50aW5nIGJ1Z3MuIEknbSBhZ2FpbnN0IGRv\n"
+ "aW5nIGxhcmdlIHNjYWxlDQo+IGNvbnZlcnNpb25zIGxpa2UgdGhpcyB3aXRob3V0IGEgZGFtbmVk\n"
+ "IGdvb2QgcmVhc29uLg0KPiANCj4gSSB0aGluayBpdCBtYXkgYmUgYmVzdCB0byBkbyB0aGlzIHNv\n"
+ "cnQgb2YgdGhpbmcgaW4gYSBtb3JlIHBpZWNlbWVhbA0KPiBmYXNoaW9uLiBQaWNrIGEgc3Vic3lz\n"
+ "dGVtIG9yIHR3byBhbmQgZG8gdGhlIGNvbnZlcnNpb25zIHRoZXJlIHRvDQo+IHByb3ZlDQo+IHRo\n"
+ "YXQgdGhleSdyZSBiZXR0ZXIgdGhhbiB3aGF0IHdlIGhhdmUuIElmIHRoZSBzdWJzeXN0ZW0gYWxy\n"
+ "ZWFkeSBoYXMNCj4gcHJvYmxlbXMgd2l0aCBpdHMgcmVmY291bnRpbmcsIHRoZW4gc28gbXVjaCB0\n"
+ "aGUgYmV0dGVyLiBQb2ludCB0byBidWdzDQo+IHRoYXQgdGhpcyBuZXcgaW5mcmFzdHJ1Y3R1cmUg\n"
+ "aGVscGVkIGZpbmQuDQo+IA0KPiBFbmNvdXJhZ2UgcGVvcGxlIHRvIGFkb3B0IHlvdXIgbmV3IGlu\n"
+ "ZnJhc3RydWN0dXJlIGFzIG5ldyByZWZjb3VudGVkDQo+IG9iamVjdHMgYXJlIGludHJvZHVjZWQg\n"
+ "aW50byB0aGUga2VybmVsLiBZb3UgbWlnaHQgZXZlbiBjb25zaWRlciBhIExXTg0KPiBhcnRpY2xl\n"
+ "IGFib3V0IHRoaXMuDQo+IA0KPiBFdmVudHVhbGx5IHdlJ2xsIGdldCBhcm91bmQgdG8gY2hhbmdp\n"
+ "bmcgZXhpc3RpbmcgY29kZSB0byB1c2UgaXQsIG9uY2UNCj4gdGhlcmUgaXMgYSBzdWZmaWNpZW50\n"
+ "IGFkdmFudGFnZSB0byBkb2luZyBzby4gTW9zdCBsaWtlbHkgd2hlbiB3ZSdyZQ0KPiByZXdvcmtp\n"
+ "bmcgdGhlIGNvZGUgZm9yIG90aGVyIHJlYXNvbnMsIG9yIHdoZW4gd2UncmUgY2hhc2luZyBzb21l\n"
+ "DQo+IGhvcnJpZA0KPiByZWZjb3VudGluZyBidWcgYW5kIHRoaW5rIHRoYXQgdGhpcyBtaWdodCBo\n"
+ "ZWxwIGZpbmQgaXQuDQoNClRoZSBtYWluIGlzc3VlIGlzIHRoYXQgdGhpcyAicmVmY291bnRfdCIg\n"
+ "aW1wbGVtZW50YXRpb24gYXBwZWFycyB0byBiZQ0KYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmUg\n"
+ "YW5kIG9ubHkgb25lIG1vZGVsIGZvciByZWZjb3VudHMgKHRoZSBvbmUNCndoZXJlIGEgdmFsdWUg\n"
+ "b2YgIjAiIG1lYW5zICJmcmVlIG1lIGltbWVkaWF0ZWx5IikuDQoNClRoZSBrZXJuZWwgaGFzIGEg\n"
+ "cGxldGhvcmEgb2Ygb2JqZWN0IGNhY2hpbmcgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRoaXMNCmlz\n"
+ "IHNpbXBseSBub3QgdGhlIGNhc2U7IHRoZSBkY2FjaGUgaXMgYSBwcmltZSBleGFtcGxlLCBhbmQg\n"
+ "dGhpcyBjYWNoZQ0KaXMgYW5vdGhlci4gSW4gYm90aCB0aGVzZSBpbXBsZW1lbnRhdGlvbiwgdGhl\n"
+ "IGF0b21pY190IHZhcmlhYmxlIGlzDQpiZWluZyB1c2VkIG1vcmUgYXMgYSBzZW1hcGhvcmUtc3R5\n"
+ "bGUgbG9jayB0aGF0IHByZXZlbnRzIGZyZWVpbmcgb2YgdGhlDQpvYmplY3Qgd2hpbGUgaXQgaXMg\n"
+ "aW4gYWN0aXZlIHVzZSBhcyBvcHBvc2VkIHRvIGJlaW5nIGZyZWVhYmxlLCBidXQNCmNhY2hlZC4g\n"
+ "VGhpcyBpcyB3aHkgdGhlc2UgYXV0b21hdGVkIGNvbnZlcnNpb25zIGFyZSBhIG51aXNhbmNlIGFu\n"
+ "ZCBhDQpzb3VyY2Ugb2YgYnVncy4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBj\n"
+ "bGllbnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0\n"
+ YS5jb20NCg==
 
-c15dec5be1e2483993c6399e2910d4d8a79ef1e9c76cc8bf70dcdc4f0723a1ca
+104030a4129dc6c4d6bf91e83d4d287128175d894529ca85477cebc16d2014ea

diff --git a/a/1.txt b/N2/1.txt
index 17aed84..6e99ee8 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -1,92 +1,66 @@
-On Fri, 2017-03-17 at 09:02 -0400, Jeff Layton wrote:
-> On Fri, 2017-03-17 at 12:50 +0000, Trond Myklebust wrote:
-> > On Fri, 2017-03-17 at 14:10 +0200, Elena Reshetova wrote:
-> > > refcount_t type and corresponding API should be
-> > > used instead of atomic_t when the variable is used as
-> > > a reference counter. This allows to avoid accidental
-> > > refcounter overflows that might lead to use-after-free
-> > > situations.
-> > > 
-> > > Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>
-> > > Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>
-> > > Signed-off-by: Kees Cook <keescook@chromium.org>
-> > > Signed-off-by: David Windsor <dwindsor@gmail.com>
-> > > ---
-> > >  include/linux/sunrpc/auth.h |  8 ++++----
-> > >  net/sunrpc/auth.c           | 12 ++++++------
-> > >  2 files changed, 10 insertions(+), 10 deletions(-)
-> > > 
-> > > diff --git a/include/linux/sunrpc/auth.h
-> > > b/include/linux/sunrpc/auth.h
-> > > index b1bc62b..bd36e0b 100644
-> > > --- a/include/linux/sunrpc/auth.h
-> > > +++ b/include/linux/sunrpc/auth.h
-> > > @@ -15,7 +15,7 @@
-> > >  #include <linux/sunrpc/msg_prot.h>
-> > >  #include <linux/sunrpc/xdr.h>
-> > >  
-> > > -#include <linux/atomic.h>
-> > > +#include <linux/refcount.h>
-> > >  #include <linux/rcupdate.h>
-> > >  #include <linux/uidgid.h>
-> > >  #include <linux/utsname.h>
-> > > @@ -68,7 +68,7 @@ struct rpc_cred {
-> > >  #endif
-> > >  	unsigned long		cr_expire;	/* when
-> > > to gc
-> > > */
-> > >  	unsigned long		cr_flags;	/* various
-> > > flags */
-> > > -	atomic_t		cr_count;	/* ref count */
-> > > +	refcount_t		cr_count;	/* ref count
-> > > */
-> > > 
-> > 
-> > NACK. That's going to be hitting
-> > WARN_ONCE(!refcount_inc_not_zero(r),
-> > "refcount_t: increment on 0; use-after-free.\n") like there's no
-> > tomorrow...
-> > 
-> > Please stop with these automated conversions. They are going to
-> > cause a
-> > lot more bugs than they fix.
-> > 
-> 
-> Agreed. These patchsets are touching places where we've already
-> banged
-> out most of the refcounting bugs. I'm against doing large scale
-> conversions like this without a damned good reason.
-> 
-> I think it may be best to do this sort of thing in a more piecemeal
-> fashion. Pick a subsystem or two and do the conversions there to
-> prove
-> that they're better than what we have. If the subsystem already has
-> problems with its refcounting, then so much the better. Point to bugs
-> that this new infrastructure helped find.
-> 
-> Encourage people to adopt your new infrastructure as new refcounted
-> objects are introduced into the kernel. You might even consider a LWN
-> article about this.
-> 
-> Eventually we'll get around to changing existing code to use it, once
-> there is a sufficient advantage to doing so. Most likely when we're
-> reworking the code for other reasons, or when we're chasing some
-> horrid
-> refcounting bug and think that this might help find it.
-
-The main issue is that this "refcount_t" implementation appears to be
-assuming that there is one and only one model for refcounts (the one
-where a value of "0" means "free me immediately").
-
-The kernel has a plethora of object caching implementations where this
-is simply not the case; the dcache is a prime example, and this cache
-is another. In both these implementation, the atomic_t variable is
-being used more as a semaphore-style lock that prevents freeing of the
-object while it is in active use as opposed to being freeable, but
-cached. This is why these automated conversions are a nuisance and a
-source of bugs.
-
--- 
-Trond Myklebust
-Linux NFS client maintainer, PrimaryData
-trond.myklebust@primarydata.com
+T24gRnJpLCAyMDE3LTAzLTE3IGF0IDA5OjAyIC0wNDAwLCBKZWZmIExheXRvbiB3cm90ZToNCj4g
+T24gRnJpLCAyMDE3LTAzLTE3IGF0IDEyOjUwICswMDAwLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6
+DQo+ID4gT24gRnJpLCAyMDE3LTAzLTE3IGF0IDE0OjEwICswMjAwLCBFbGVuYSBSZXNoZXRvdmEg
+d3JvdGU6DQo+ID4gPiByZWZjb3VudF90IHR5cGUgYW5kIGNvcnJlc3BvbmRpbmcgQVBJIHNob3Vs
+ZCBiZQ0KPiA+ID4gdXNlZCBpbnN0ZWFkIG9mIGF0b21pY190IHdoZW4gdGhlIHZhcmlhYmxlIGlz
+IHVzZWQgYXMNCj4gPiA+IGEgcmVmZXJlbmNlIGNvdW50ZXIuIFRoaXMgYWxsb3dzIHRvIGF2b2lk
+IGFjY2lkZW50YWwNCj4gPiA+IHJlZmNvdW50ZXIgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgbGVhZCB0
+byB1c2UtYWZ0ZXItZnJlZQ0KPiA+ID4gc2l0dWF0aW9ucy4NCj4gPiA+IA0KPiA+ID4gU2lnbmVk
+LW9mZi1ieTogRWxlbmEgUmVzaGV0b3ZhIDxlbGVuYS5yZXNoZXRvdmFAaW50ZWwuY29tPg0KPiA+
+ID4gU2lnbmVkLW9mZi1ieTogSGFucyBMaWxqZXN0cmFuZCA8aXNoa2FtaWVsQGdtYWlsLmNvbT4N
+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPg0K
+PiA+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgV2luZHNvciA8ZHdpbmRzb3JAZ21haWwuY29tPg0K
+PiA+ID4gLS0tDQo+ID4gPiDCoGluY2x1ZGUvbGludXgvc3VucnBjL2F1dGguaCB8wqDCoDggKysr
+Ky0tLS0NCj4gPiA+IMKgbmV0L3N1bnJwYy9hdXRoLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAx
+MiArKysrKystLS0tLS0NCj4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp
+LCAxMCBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu
+dXgvc3VucnBjL2F1dGguaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9hdXRoLmgNCj4g
+PiA+IGluZGV4IGIxYmM2MmIuLmJkMzZlMGIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNsdWRlL2xp
+bnV4L3N1bnJwYy9hdXRoLmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL2F1dGgu
+aA0KPiA+ID4gQEAgLTE1LDcgKzE1LDcgQEANCj4gPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3N1bnJw
+Yy9tc2dfcHJvdC5oPg0KPiA+ID4gwqAjaW5jbHVkZSA8bGludXgvc3VucnBjL3hkci5oPg0KPiA+
+ID4gwqANCj4gPiA+IC0jaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQo+ID4gPiArI2luY2x1ZGUg
+PGxpbnV4L3JlZmNvdW50Lmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPg0K
+PiA+ID4gwqAjaW5jbHVkZSA8bGludXgvdWlkZ2lkLmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51
+eC91dHNuYW1lLmg+DQo+ID4gPiBAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgcnBjX2NyZWQgew0K
+PiA+ID4gwqAjZW5kaWYNCj4gPiA+IMKgCXVuc2lnbmVkIGxvbmcJCWNyX2V4cGlyZTsJLyogd2hl
+bg0KPiA+ID4gdG8gZ2MNCj4gPiA+ICovDQo+ID4gPiDCoAl1bnNpZ25lZCBsb25nCQljcl9mbGFn
+czsJLyogdmFyaW91cw0KPiA+ID4gZmxhZ3MgKi8NCj4gPiA+IC0JYXRvbWljX3QJCWNyX2NvdW50
+OwkvKiByZWYgY291bnQgKi8NCj4gPiA+ICsJcmVmY291bnRfdAkJY3JfY291bnQ7CS8qIHJlZiBj
+b3VudA0KPiA+ID4gKi8NCj4gPiA+IA0KPiA+IA0KPiA+IE5BQ0suIFRoYXQncyBnb2luZyB0byBi
+ZSBoaXR0aW5nDQo+ID4gV0FSTl9PTkNFKCFyZWZjb3VudF9pbmNfbm90X3plcm8ociksDQo+ID4g
+InJlZmNvdW50X3Q6IGluY3JlbWVudCBvbiAwOyB1c2UtYWZ0ZXItZnJlZS5cbiIpIGxpa2UgdGhl
+cmUncyBubw0KPiA+IHRvbW9ycm93Li4uDQo+ID4gDQo+ID4gUGxlYXNlIHN0b3Agd2l0aCB0aGVz
+ZSBhdXRvbWF0ZWQgY29udmVyc2lvbnMuIFRoZXkgYXJlIGdvaW5nIHRvDQo+ID4gY2F1c2UgYQ0K
+PiA+IGxvdCBtb3JlIGJ1Z3MgdGhhbiB0aGV5IGZpeC4NCj4gPiANCj4gDQo+IEFncmVlZC4gVGhl
+c2UgcGF0Y2hzZXRzIGFyZSB0b3VjaGluZyBwbGFjZXMgd2hlcmUgd2UndmUgYWxyZWFkeQ0KPiBi
+YW5nZWQNCj4gb3V0IG1vc3Qgb2YgdGhlIHJlZmNvdW50aW5nIGJ1Z3MuIEknbSBhZ2FpbnN0IGRv
+aW5nIGxhcmdlIHNjYWxlDQo+IGNvbnZlcnNpb25zIGxpa2UgdGhpcyB3aXRob3V0IGEgZGFtbmVk
+IGdvb2QgcmVhc29uLg0KPiANCj4gSSB0aGluayBpdCBtYXkgYmUgYmVzdCB0byBkbyB0aGlzIHNv
+cnQgb2YgdGhpbmcgaW4gYSBtb3JlIHBpZWNlbWVhbA0KPiBmYXNoaW9uLiBQaWNrIGEgc3Vic3lz
+dGVtIG9yIHR3byBhbmQgZG8gdGhlIGNvbnZlcnNpb25zIHRoZXJlIHRvDQo+IHByb3ZlDQo+IHRo
+YXQgdGhleSdyZSBiZXR0ZXIgdGhhbiB3aGF0IHdlIGhhdmUuIElmIHRoZSBzdWJzeXN0ZW0gYWxy
+ZWFkeSBoYXMNCj4gcHJvYmxlbXMgd2l0aCBpdHMgcmVmY291bnRpbmcsIHRoZW4gc28gbXVjaCB0
+aGUgYmV0dGVyLiBQb2ludCB0byBidWdzDQo+IHRoYXQgdGhpcyBuZXcgaW5mcmFzdHJ1Y3R1cmUg
+aGVscGVkIGZpbmQuDQo+IA0KPiBFbmNvdXJhZ2UgcGVvcGxlIHRvIGFkb3B0IHlvdXIgbmV3IGlu
+ZnJhc3RydWN0dXJlIGFzIG5ldyByZWZjb3VudGVkDQo+IG9iamVjdHMgYXJlIGludHJvZHVjZWQg
+aW50byB0aGUga2VybmVsLiBZb3UgbWlnaHQgZXZlbiBjb25zaWRlciBhIExXTg0KPiBhcnRpY2xl
+IGFib3V0IHRoaXMuDQo+IA0KPiBFdmVudHVhbGx5IHdlJ2xsIGdldCBhcm91bmQgdG8gY2hhbmdp
+bmcgZXhpc3RpbmcgY29kZSB0byB1c2UgaXQsIG9uY2UNCj4gdGhlcmUgaXMgYSBzdWZmaWNpZW50
+IGFkdmFudGFnZSB0byBkb2luZyBzby4gTW9zdCBsaWtlbHkgd2hlbiB3ZSdyZQ0KPiByZXdvcmtp
+bmcgdGhlIGNvZGUgZm9yIG90aGVyIHJlYXNvbnMsIG9yIHdoZW4gd2UncmUgY2hhc2luZyBzb21l
+DQo+IGhvcnJpZA0KPiByZWZjb3VudGluZyBidWcgYW5kIHRoaW5rIHRoYXQgdGhpcyBtaWdodCBo
+ZWxwIGZpbmQgaXQuDQoNClRoZSBtYWluIGlzc3VlIGlzIHRoYXQgdGhpcyAicmVmY291bnRfdCIg
+aW1wbGVtZW50YXRpb24gYXBwZWFycyB0byBiZQ0KYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmUg
+YW5kIG9ubHkgb25lIG1vZGVsIGZvciByZWZjb3VudHMgKHRoZSBvbmUNCndoZXJlIGEgdmFsdWUg
+b2YgIjAiIG1lYW5zICJmcmVlIG1lIGltbWVkaWF0ZWx5IikuDQoNClRoZSBrZXJuZWwgaGFzIGEg
+cGxldGhvcmEgb2Ygb2JqZWN0IGNhY2hpbmcgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRoaXMNCmlz
+IHNpbXBseSBub3QgdGhlIGNhc2U7IHRoZSBkY2FjaGUgaXMgYSBwcmltZSBleGFtcGxlLCBhbmQg
+dGhpcyBjYWNoZQ0KaXMgYW5vdGhlci4gSW4gYm90aCB0aGVzZSBpbXBsZW1lbnRhdGlvbiwgdGhl
+IGF0b21pY190IHZhcmlhYmxlIGlzDQpiZWluZyB1c2VkIG1vcmUgYXMgYSBzZW1hcGhvcmUtc3R5
+bGUgbG9jayB0aGF0IHByZXZlbnRzIGZyZWVpbmcgb2YgdGhlDQpvYmplY3Qgd2hpbGUgaXQgaXMg
+aW4gYWN0aXZlIHVzZSBhcyBvcHBvc2VkIHRvIGJlaW5nIGZyZWVhYmxlLCBidXQNCmNhY2hlZC4g
+VGhpcyBpcyB3aHkgdGhlc2UgYXV0b21hdGVkIGNvbnZlcnNpb25zIGFyZSBhIG51aXNhbmNlIGFu
+ZCBhDQpzb3VyY2Ugb2YgYnVncy4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBj
+bGllbnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0
+YS5jb20NCg=
diff --git a/a/content_digest b/N2/content_digest
index ebcd1d0..e907673 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -3,7 +3,7 @@
  "ref\01489755011.6453.1.camel@primarydata.com\0"
  "ref\01489755736.2810.10.camel@poochiereds.net\0"
  "ref\01489755736.2810.10.camel-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org\0"
- "From\0Trond Myklebust <trondmy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>\0"
+ "From\0Trond Myklebust <trondmy@primarydata.com>\0"
  "Subject\0Re: [PATCH 01/23] net, sunrpc: convert rpc_cred.cr_count from atomic_t to refcount_t\0"
  "Date\0Fri, 17 Mar 2017 14:28:37 +0000\0"
  "To\0elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org <elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>"
@@ -27,97 +27,71 @@
  " sage@redhat.\0"
  "\00:1\0"
  "b\0"
- "On Fri, 2017-03-17 at 09:02 -0400, Jeff Layton wrote:\n"
- "> On Fri, 2017-03-17 at 12:50 +0000, Trond Myklebust wrote:\n"
- "> > On Fri, 2017-03-17 at 14:10 +0200, Elena Reshetova wrote:\n"
- "> > > refcount_t type and corresponding API should be\n"
- "> > > used instead of atomic_t when the variable is used as\n"
- "> > > a reference counter. This allows to avoid accidental\n"
- "> > > refcounter overflows that might lead to use-after-free\n"
- "> > > situations.\n"
- "> > > \n"
- "> > > Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>\n"
- "> > > Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>\n"
- "> > > Signed-off-by: Kees Cook <keescook@chromium.org>\n"
- "> > > Signed-off-by: David Windsor <dwindsor@gmail.com>\n"
- "> > > ---\n"
- "> > > \302\240include/linux/sunrpc/auth.h |\302\240\302\2408 ++++----\n"
- "> > > \302\240net/sunrpc/auth.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 12 ++++++------\n"
- "> > > \302\2402 files changed, 10 insertions(+), 10 deletions(-)\n"
- "> > > \n"
- "> > > diff --git a/include/linux/sunrpc/auth.h\n"
- "> > > b/include/linux/sunrpc/auth.h\n"
- "> > > index b1bc62b..bd36e0b 100644\n"
- "> > > --- a/include/linux/sunrpc/auth.h\n"
- "> > > +++ b/include/linux/sunrpc/auth.h\n"
- "> > > @@ -15,7 +15,7 @@\n"
- "> > > \302\240#include <linux/sunrpc/msg_prot.h>\n"
- "> > > \302\240#include <linux/sunrpc/xdr.h>\n"
- "> > > \302\240\n"
- "> > > -#include <linux/atomic.h>\n"
- "> > > +#include <linux/refcount.h>\n"
- "> > > \302\240#include <linux/rcupdate.h>\n"
- "> > > \302\240#include <linux/uidgid.h>\n"
- "> > > \302\240#include <linux/utsname.h>\n"
- "> > > @@ -68,7 +68,7 @@ struct rpc_cred {\n"
- "> > > \302\240#endif\n"
- "> > > \302\240\tunsigned long\t\tcr_expire;\t/* when\n"
- "> > > to gc\n"
- "> > > */\n"
- "> > > \302\240\tunsigned long\t\tcr_flags;\t/* various\n"
- "> > > flags */\n"
- "> > > -\tatomic_t\t\tcr_count;\t/* ref count */\n"
- "> > > +\trefcount_t\t\tcr_count;\t/* ref count\n"
- "> > > */\n"
- "> > > \n"
- "> > \n"
- "> > NACK. That's going to be hitting\n"
- "> > WARN_ONCE(!refcount_inc_not_zero(r),\n"
- "> > \"refcount_t: increment on 0; use-after-free.\\n\") like there's no\n"
- "> > tomorrow...\n"
- "> > \n"
- "> > Please stop with these automated conversions. They are going to\n"
- "> > cause a\n"
- "> > lot more bugs than they fix.\n"
- "> > \n"
- "> \n"
- "> Agreed. These patchsets are touching places where we've already\n"
- "> banged\n"
- "> out most of the refcounting bugs. I'm against doing large scale\n"
- "> conversions like this without a damned good reason.\n"
- "> \n"
- "> I think it may be best to do this sort of thing in a more piecemeal\n"
- "> fashion. Pick a subsystem or two and do the conversions there to\n"
- "> prove\n"
- "> that they're better than what we have. If the subsystem already has\n"
- "> problems with its refcounting, then so much the better. Point to bugs\n"
- "> that this new infrastructure helped find.\n"
- "> \n"
- "> Encourage people to adopt your new infrastructure as new refcounted\n"
- "> objects are introduced into the kernel. You might even consider a LWN\n"
- "> article about this.\n"
- "> \n"
- "> Eventually we'll get around to changing existing code to use it, once\n"
- "> there is a sufficient advantage to doing so. Most likely when we're\n"
- "> reworking the code for other reasons, or when we're chasing some\n"
- "> horrid\n"
- "> refcounting bug and think that this might help find it.\n"
- "\n"
- "The main issue is that this \"refcount_t\" implementation appears to be\n"
- "assuming that there is one and only one model for refcounts (the one\n"
- "where a value of \"0\" means \"free me immediately\").\n"
- "\n"
- "The kernel has a plethora of object caching implementations where this\n"
- "is simply not the case; the dcache is a prime example, and this cache\n"
- "is another. In both these implementation, the atomic_t variable is\n"
- "being used more as a semaphore-style lock that prevents freeing of the\n"
- "object while it is in active use as opposed to being freeable, but\n"
- "cached. This is why these automated conversions are a nuisance and a\n"
- "source of bugs.\n"
- "\n"
- "-- \n"
- "Trond Myklebust\n"
- "Linux NFS client maintainer, PrimaryData\n"
- trond.myklebust@primarydata.com
+ "T24gRnJpLCAyMDE3LTAzLTE3IGF0IDA5OjAyIC0wNDAwLCBKZWZmIExheXRvbiB3cm90ZToNCj4g\n"
+ "T24gRnJpLCAyMDE3LTAzLTE3IGF0IDEyOjUwICswMDAwLCBUcm9uZCBNeWtsZWJ1c3Qgd3JvdGU6\n"
+ "DQo+ID4gT24gRnJpLCAyMDE3LTAzLTE3IGF0IDE0OjEwICswMjAwLCBFbGVuYSBSZXNoZXRvdmEg\n"
+ "d3JvdGU6DQo+ID4gPiByZWZjb3VudF90IHR5cGUgYW5kIGNvcnJlc3BvbmRpbmcgQVBJIHNob3Vs\n"
+ "ZCBiZQ0KPiA+ID4gdXNlZCBpbnN0ZWFkIG9mIGF0b21pY190IHdoZW4gdGhlIHZhcmlhYmxlIGlz\n"
+ "IHVzZWQgYXMNCj4gPiA+IGEgcmVmZXJlbmNlIGNvdW50ZXIuIFRoaXMgYWxsb3dzIHRvIGF2b2lk\n"
+ "IGFjY2lkZW50YWwNCj4gPiA+IHJlZmNvdW50ZXIgb3ZlcmZsb3dzIHRoYXQgbWlnaHQgbGVhZCB0\n"
+ "byB1c2UtYWZ0ZXItZnJlZQ0KPiA+ID4gc2l0dWF0aW9ucy4NCj4gPiA+IA0KPiA+ID4gU2lnbmVk\n"
+ "LW9mZi1ieTogRWxlbmEgUmVzaGV0b3ZhIDxlbGVuYS5yZXNoZXRvdmFAaW50ZWwuY29tPg0KPiA+\n"
+ "ID4gU2lnbmVkLW9mZi1ieTogSGFucyBMaWxqZXN0cmFuZCA8aXNoa2FtaWVsQGdtYWlsLmNvbT4N\n"
+ "Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPg0K\n"
+ "PiA+ID4gU2lnbmVkLW9mZi1ieTogRGF2aWQgV2luZHNvciA8ZHdpbmRzb3JAZ21haWwuY29tPg0K\n"
+ "PiA+ID4gLS0tDQo+ID4gPiDCoGluY2x1ZGUvbGludXgvc3VucnBjL2F1dGguaCB8wqDCoDggKysr\n"
+ "Ky0tLS0NCj4gPiA+IMKgbmV0L3N1bnJwYy9hdXRoLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAx\n"
+ "MiArKysrKystLS0tLS0NCj4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCsp\n"
+ "LCAxMCBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu\n"
+ "dXgvc3VucnBjL2F1dGguaA0KPiA+ID4gYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9hdXRoLmgNCj4g\n"
+ "PiA+IGluZGV4IGIxYmM2MmIuLmJkMzZlMGIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNsdWRlL2xp\n"
+ "bnV4L3N1bnJwYy9hdXRoLmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL2F1dGgu\n"
+ "aA0KPiA+ID4gQEAgLTE1LDcgKzE1LDcgQEANCj4gPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3N1bnJw\n"
+ "Yy9tc2dfcHJvdC5oPg0KPiA+ID4gwqAjaW5jbHVkZSA8bGludXgvc3VucnBjL3hkci5oPg0KPiA+\n"
+ "ID4gwqANCj4gPiA+IC0jaW5jbHVkZSA8bGludXgvYXRvbWljLmg+DQo+ID4gPiArI2luY2x1ZGUg\n"
+ "PGxpbnV4L3JlZmNvdW50Lmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPg0K\n"
+ "PiA+ID4gwqAjaW5jbHVkZSA8bGludXgvdWlkZ2lkLmg+DQo+ID4gPiDCoCNpbmNsdWRlIDxsaW51\n"
+ "eC91dHNuYW1lLmg+DQo+ID4gPiBAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgcnBjX2NyZWQgew0K\n"
+ "PiA+ID4gwqAjZW5kaWYNCj4gPiA+IMKgCXVuc2lnbmVkIGxvbmcJCWNyX2V4cGlyZTsJLyogd2hl\n"
+ "bg0KPiA+ID4gdG8gZ2MNCj4gPiA+ICovDQo+ID4gPiDCoAl1bnNpZ25lZCBsb25nCQljcl9mbGFn\n"
+ "czsJLyogdmFyaW91cw0KPiA+ID4gZmxhZ3MgKi8NCj4gPiA+IC0JYXRvbWljX3QJCWNyX2NvdW50\n"
+ "OwkvKiByZWYgY291bnQgKi8NCj4gPiA+ICsJcmVmY291bnRfdAkJY3JfY291bnQ7CS8qIHJlZiBj\n"
+ "b3VudA0KPiA+ID4gKi8NCj4gPiA+IA0KPiA+IA0KPiA+IE5BQ0suIFRoYXQncyBnb2luZyB0byBi\n"
+ "ZSBoaXR0aW5nDQo+ID4gV0FSTl9PTkNFKCFyZWZjb3VudF9pbmNfbm90X3plcm8ociksDQo+ID4g\n"
+ "InJlZmNvdW50X3Q6IGluY3JlbWVudCBvbiAwOyB1c2UtYWZ0ZXItZnJlZS5cbiIpIGxpa2UgdGhl\n"
+ "cmUncyBubw0KPiA+IHRvbW9ycm93Li4uDQo+ID4gDQo+ID4gUGxlYXNlIHN0b3Agd2l0aCB0aGVz\n"
+ "ZSBhdXRvbWF0ZWQgY29udmVyc2lvbnMuIFRoZXkgYXJlIGdvaW5nIHRvDQo+ID4gY2F1c2UgYQ0K\n"
+ "PiA+IGxvdCBtb3JlIGJ1Z3MgdGhhbiB0aGV5IGZpeC4NCj4gPiANCj4gDQo+IEFncmVlZC4gVGhl\n"
+ "c2UgcGF0Y2hzZXRzIGFyZSB0b3VjaGluZyBwbGFjZXMgd2hlcmUgd2UndmUgYWxyZWFkeQ0KPiBi\n"
+ "YW5nZWQNCj4gb3V0IG1vc3Qgb2YgdGhlIHJlZmNvdW50aW5nIGJ1Z3MuIEknbSBhZ2FpbnN0IGRv\n"
+ "aW5nIGxhcmdlIHNjYWxlDQo+IGNvbnZlcnNpb25zIGxpa2UgdGhpcyB3aXRob3V0IGEgZGFtbmVk\n"
+ "IGdvb2QgcmVhc29uLg0KPiANCj4gSSB0aGluayBpdCBtYXkgYmUgYmVzdCB0byBkbyB0aGlzIHNv\n"
+ "cnQgb2YgdGhpbmcgaW4gYSBtb3JlIHBpZWNlbWVhbA0KPiBmYXNoaW9uLiBQaWNrIGEgc3Vic3lz\n"
+ "dGVtIG9yIHR3byBhbmQgZG8gdGhlIGNvbnZlcnNpb25zIHRoZXJlIHRvDQo+IHByb3ZlDQo+IHRo\n"
+ "YXQgdGhleSdyZSBiZXR0ZXIgdGhhbiB3aGF0IHdlIGhhdmUuIElmIHRoZSBzdWJzeXN0ZW0gYWxy\n"
+ "ZWFkeSBoYXMNCj4gcHJvYmxlbXMgd2l0aCBpdHMgcmVmY291bnRpbmcsIHRoZW4gc28gbXVjaCB0\n"
+ "aGUgYmV0dGVyLiBQb2ludCB0byBidWdzDQo+IHRoYXQgdGhpcyBuZXcgaW5mcmFzdHJ1Y3R1cmUg\n"
+ "aGVscGVkIGZpbmQuDQo+IA0KPiBFbmNvdXJhZ2UgcGVvcGxlIHRvIGFkb3B0IHlvdXIgbmV3IGlu\n"
+ "ZnJhc3RydWN0dXJlIGFzIG5ldyByZWZjb3VudGVkDQo+IG9iamVjdHMgYXJlIGludHJvZHVjZWQg\n"
+ "aW50byB0aGUga2VybmVsLiBZb3UgbWlnaHQgZXZlbiBjb25zaWRlciBhIExXTg0KPiBhcnRpY2xl\n"
+ "IGFib3V0IHRoaXMuDQo+IA0KPiBFdmVudHVhbGx5IHdlJ2xsIGdldCBhcm91bmQgdG8gY2hhbmdp\n"
+ "bmcgZXhpc3RpbmcgY29kZSB0byB1c2UgaXQsIG9uY2UNCj4gdGhlcmUgaXMgYSBzdWZmaWNpZW50\n"
+ "IGFkdmFudGFnZSB0byBkb2luZyBzby4gTW9zdCBsaWtlbHkgd2hlbiB3ZSdyZQ0KPiByZXdvcmtp\n"
+ "bmcgdGhlIGNvZGUgZm9yIG90aGVyIHJlYXNvbnMsIG9yIHdoZW4gd2UncmUgY2hhc2luZyBzb21l\n"
+ "DQo+IGhvcnJpZA0KPiByZWZjb3VudGluZyBidWcgYW5kIHRoaW5rIHRoYXQgdGhpcyBtaWdodCBo\n"
+ "ZWxwIGZpbmQgaXQuDQoNClRoZSBtYWluIGlzc3VlIGlzIHRoYXQgdGhpcyAicmVmY291bnRfdCIg\n"
+ "aW1wbGVtZW50YXRpb24gYXBwZWFycyB0byBiZQ0KYXNzdW1pbmcgdGhhdCB0aGVyZSBpcyBvbmUg\n"
+ "YW5kIG9ubHkgb25lIG1vZGVsIGZvciByZWZjb3VudHMgKHRoZSBvbmUNCndoZXJlIGEgdmFsdWUg\n"
+ "b2YgIjAiIG1lYW5zICJmcmVlIG1lIGltbWVkaWF0ZWx5IikuDQoNClRoZSBrZXJuZWwgaGFzIGEg\n"
+ "cGxldGhvcmEgb2Ygb2JqZWN0IGNhY2hpbmcgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRoaXMNCmlz\n"
+ "IHNpbXBseSBub3QgdGhlIGNhc2U7IHRoZSBkY2FjaGUgaXMgYSBwcmltZSBleGFtcGxlLCBhbmQg\n"
+ "dGhpcyBjYWNoZQ0KaXMgYW5vdGhlci4gSW4gYm90aCB0aGVzZSBpbXBsZW1lbnRhdGlvbiwgdGhl\n"
+ "IGF0b21pY190IHZhcmlhYmxlIGlzDQpiZWluZyB1c2VkIG1vcmUgYXMgYSBzZW1hcGhvcmUtc3R5\n"
+ "bGUgbG9jayB0aGF0IHByZXZlbnRzIGZyZWVpbmcgb2YgdGhlDQpvYmplY3Qgd2hpbGUgaXQgaXMg\n"
+ "aW4gYWN0aXZlIHVzZSBhcyBvcHBvc2VkIHRvIGJlaW5nIGZyZWVhYmxlLCBidXQNCmNhY2hlZC4g\n"
+ "VGhpcyBpcyB3aHkgdGhlc2UgYXV0b21hdGVkIGNvbnZlcnNpb25zIGFyZSBhIG51aXNhbmNlIGFu\n"
+ "ZCBhDQpzb3VyY2Ugb2YgYnVncy4NCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5GUyBj\n"
+ "bGllbnQgbWFpbnRhaW5lciwgUHJpbWFyeURhdGENCnRyb25kLm15a2xlYnVzdEBwcmltYXJ5ZGF0\n"
+ YS5jb20NCg=
 
-c15dec5be1e2483993c6399e2910d4d8a79ef1e9c76cc8bf70dcdc4f0723a1ca
+d7ba5a2ace664941b551073e275372e4b3e1fc7dfbf096f122e3d2ef5de2e2b9

diff --git a/a/content_digest b/N3/content_digest
index ebcd1d0..d4fddcf 100644
--- a/a/content_digest
+++ b/N3/content_digest
@@ -2,29 +2,34 @@
  "ref\01489752646-8749-2-git-send-email-elena.reshetova@intel.com\0"
  "ref\01489755011.6453.1.camel@primarydata.com\0"
  "ref\01489755736.2810.10.camel@poochiereds.net\0"
- "ref\01489755736.2810.10.camel-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org\0"
- "From\0Trond Myklebust <trondmy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>\0"
+ "From\0Trond Myklebust <trondmy@primarydata.com>\0"
  "Subject\0Re: [PATCH 01/23] net, sunrpc: convert rpc_cred.cr_count from atomic_t to refcount_t\0"
  "Date\0Fri, 17 Mar 2017 14:28:37 +0000\0"
- "To\0elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org <elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>"
-  netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
- " jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org <jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org>\0"
- "Cc\0herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org <herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>"
-  linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
-  ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org <ralf-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org>
-  linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  ishkamiel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <ishkamiel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-  bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
-  steffen.klassert-opNxpl+3fjRBDgjK7y7TUQ@public.gmane.org <steffen.klassert-opNxpl+3fjRBDgjK7y7TUQ@public.gmane.org>
-  nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org <nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
-  linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  jreuter-K7Hl1MveuGQ@public.gmane.org <jreuter-K7Hl1MveuGQ@public.gmane.org>
-  keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
-  linux-hams-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-hams-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  dwindsor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <dwindsor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-  zyan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org <zyan-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
- " sage@redhat.\0"
+ "To\0elena.reshetova@intel.com <elena.reshetova@intel.com>"
+  netdev@vger.kernel.org <netdev@vger.kernel.org>
+ " jlayton@poochiereds.net <jlayton@poochiereds.net>\0"
+ "Cc\0herbert@gondor.apana.org.au <herbert@gondor.apana.org.au>"
+  linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>
+  peterz@infradead.org <peterz@infradead.org>
+  ralf@linux-mips.org <ralf@linux-mips.org>
+  linux-rdma@vger.kernel.org <linux-rdma@vger.kernel.org>
+  ishkamiel@gmail.com <ishkamiel@gmail.com>
+  bfields@fieldses.org <bfields@fieldses.org>
+  steffen.klassert@secunet.com <steffen.klassert@secunet.com>
+  nhorman@tuxdriver.com <nhorman@tuxdriver.com>
+  linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>
+  jreuter@yaina.de <jreuter@yaina.de>
+  keescook@chromium.org <keescook@chromium.org>
+  linux-hams@vger.kernel.org <linux-hams@vger.kernel.org>
+  dwindsor@gmail.com <dwindsor@gmail.com>
+  zyan@redhat.com <zyan@redhat.com>
+  sage@redhat.com <sage@redhat.com>
+  davem@davemloft.net <davem@davemloft.net>
+  linux-sctp@vger.kernel.org <linux-sctp@vger.kernel.org>
+  vyasevich@gmail.com <vyasevich@gmail.com>
+  linux-x25@vger.kernel.org <linux-x25@vger.kernel.org>
+  santosh.shilimkar@oracle.com <santosh.shilimkar@oracle.com>
+ " ceph-devel@vger.kernel.org <ceph-devel@vger.kernel.org>\0"
  "\00:1\0"
  "b\0"
  "On Fri, 2017-03-17 at 09:02 -0400, Jeff Layton wrote:\n"
@@ -120,4 +125,4 @@
  "Linux NFS client maintainer, PrimaryData\n"
  trond.myklebust@primarydata.com
 
-c15dec5be1e2483993c6399e2910d4d8a79ef1e9c76cc8bf70dcdc4f0723a1ca
+4c39298dcf5469498cd977cadb56d4e634f6eb029561e3bb80a09116183b8512

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.