<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>8992</bug_id>
          
          <creation_ts>2016-01-25 08:06:09 +0000</creation_ts>
          <short_desc>e2fsprogs/pseudo: xattr incomplete</short_desc>
          <delta_ts>2016-02-24 13:37:28 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>devtools / tool chain</component>
          <version>2.1</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.1 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Ohly">patrick.ohly</reporter>
          <assigned_to name="Richard Purdie">richard.purdie</assigned_to>
          <cc>bogdanx.a.voiculescu</cc>
    
    <cc>mark.hatle</cc>
    
    <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>seebs</cc>
          
          <qa_contact name="Bogdan Alexandru Voiculescu">bogdanx.a.voiculescu</qa_contact>
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58169</commentid>
    <comment_count>0</comment_count>
      <attachid>2949</attachid>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-25 08:06:09 +0000</bug_when>
    <thetext>Created attachment 2949
rootfs with xattrs

Attached a test case with a single file inside a directory. The file has two xattrs (see bug 8954 for a description how the archive was created):

$ getfattr -d -m . testrootfs/foobar 
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

Converting this directory tree into an ext4 partition leads to an incomplete security.ima attribute, but only *when running the command under pseudo*. It works fine when unpacking the archive as root on the build host (Debian Stable) and invoking mkfs.ext4 there.

Steps to reproduce:
1. Build pseudo with bug 8954 fixed. For that add to local.conf:

PREFERRED_VERSION_pseudo-native = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
SRCREV_pn-pseudo-native = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;
PREFERRED_VERSION_pseudo = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
SRCREV_pn-pseudo = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;

bitbake pseudo pseudo-native

2. enter pseudo: bitbake -c devshell core-image-minimal

3. Under pseudo:
   tar --xattrs --xattrs-include=* -xf testrootfs.tar
   getfattr -d -m . testrootfs/foobar
   dd if=/dev/zero of=rootfs.ext4 bs=512 count=100000
   mkfs.ext4 -d testrootfs  rootfs.ext4

4. On the host:
   sudo losetup /dev/loop0 rootfs.ext4
   mkdir mnt
   sudo mount /dev/loop0 mnt/; getfattr -d -m . mnt/*; sudo  umount mnt

Expected result: foobar should have the full xattrs as in the tar archive (shown above)
Actual result:

# file: mnt/foobar
security.SMACK64=&quot;_&quot;
mnt/foobar: security.ima: No such attribute

&quot;No such attribute&quot; = ENODATA = ENOATTR in getfattr(), despite security.ima being reported by listxattr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58172</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-25 09:59:58 +0000</bug_when>
    <thetext>I compiled with debug information by adding the following to local.conf:

PREFERRED_VERSION_pseudo-native = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
SRCREV_pn-pseudo-native = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;
PREFERRED_VERSION_pseudo = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
SRCREV_pn-pseudo = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;
BUILD_OPTIMIZATION_pn-e2fsprogs-native = &quot;-g&quot;
INHIBIT_SYSROOT_STRIP = &quot;1&quot;

I&apos;m still walking through a comparison of mkfs.ext4 inside and outside of pseudo. Some observations:
- llistxattr() for &quot;foobar&quot; returns xattrs in a different order: security.ima comes first under pseudo and second outside
- When I override the order when running under pseudo (see below), the resulting image is correct.

So it seems that setting xattrs with ext2fs_xattr_set() is somehow sensitive to the order in which the two xattrs are getting set.

To override llistxattr() under gdb:
b llistxattr
Breakpoint 2, llistxattr (path=0x63b27b &quot;foobar&quot;, list=0x0, size=0) at pseudo_wrapfuncs.c:7534
7534    llistxattr(const char *path, char *list, size_t size) {
(gdb) 
Continuing.

Breakpoint 2, llistxattr (path=0x63b27b &quot;foobar&quot;, list=0x621350 &quot;\230\326\354\366\377\177&quot;, size=30) at pseudo_wrapfuncs.c:7534
7534    llistxattr(const char *path, char *list, size_t size) {
(gdb) fin
Run till exit from #0  llistxattr (path=0x63b27b &quot;foobar&quot;, list=0x621350 &quot;\230\326\354\366\377\177&quot;, size=30) at pseudo_wrapfuncs.c:7534
0x000000000040e3be in set_inode_xattr (fs=0x62a400, ino=12, filename=0x63b27b &quot;foobar&quot;) at ../../git/misc/create_inode.c:160
160             size = llistxattr(filename, list, size);
Value returned is $14 = 30
(gdb) p list
$15 = 0x621350 &quot;security.ima&quot;
(gdb) call strcpy(list, &quot;security.SMACK64&quot;)
$16 = 6427472
(gdb) call strcpy(list+strlen(list)+1, &quot;security.ima&quot;)
$18 = 6427489
(gdb) p list
$19 = 0x621350 &quot;security.SMACK64&quot;
(gdb) p list+strlen(list)+1
$20 = 0x621361 &quot;security.ima&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58256</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2016-01-27 03:19:25 +0000</bug_when>
    <thetext>(In reply to comment #0)
&gt; Created attachment 2949 [details]
&gt; rootfs with xattrs
&gt; 
&gt; Attached a test case with a single file inside a directory. The file has two
&gt; xattrs (see bug 8954 for a description how the archive was created):
&gt; 
&gt; $ getfattr -d -m . testrootfs/foobar 
&gt; # file: testrootfs/foobar
&gt; security.SMACK64=&quot;_&quot;

How can you set security.SMACK64, please ? I only can set user.foo on my host Ubuntu 12.04 (the &quot;user.&quot; is a must).

&gt; security.ima=0sAwIC2C1O/
&gt; QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGv
&gt; ncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/
&gt; SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

And also I got &quot;bad input encoding&quot; when use such a value.

It seems that pseudo related, add Peter and Mark in the loop.

Since I can&apos;t set the value you provided, so that I can&apos;t reproduce the problem.

&gt; 
&gt; Converting this directory tree into an ext4 partition leads to an incomplete
&gt; security.ima attribute, but only *when running the command under pseudo*. It
&gt; works fine when unpacking the archive as root on the build host (Debian
&gt; Stable) and invoking mkfs.ext4 there.
&gt; 
&gt; Steps to reproduce:
&gt; 1. Build pseudo with bug 8954 fixed. For that add to local.conf:
&gt; 
&gt; PREFERRED_VERSION_pseudo-native = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
&gt; SRCREV_pn-pseudo-native = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;
&gt; PREFERRED_VERSION_pseudo = &quot;1.7.4+gitAUTOINC+735ac1b9ff&quot;
&gt; SRCREV_pn-pseudo = &quot;735ac1b9ff7471b100f6758f9072bfd45e0e3f40&quot;
&gt; 
&gt; bitbake pseudo pseudo-native
&gt; 
&gt; 2. enter pseudo: bitbake -c devshell core-image-minimal
&gt; 
&gt; 3. Under pseudo:
&gt;    tar --xattrs --xattrs-include=* -xf testrootfs.tar
&gt;    getfattr -d -m . testrootfs/foobar
&gt;    dd if=/dev/zero of=rootfs.ext4 bs=512 count=100000
&gt;    mkfs.ext4 -d testrootfs  rootfs.ext4
&gt; 
&gt; 4. On the host:
&gt;    sudo losetup /dev/loop0 rootfs.ext4
&gt;    mkdir mnt
&gt;    sudo mount /dev/loop0 mnt/; getfattr -d -m . mnt/*; sudo  umount mnt
&gt; 
&gt; Expected result: foobar should have the full xattrs as in the tar archive
&gt; (shown above)
&gt; Actual result:
&gt; 
&gt; # file: mnt/foobar
&gt; security.SMACK64=&quot;_&quot;
&gt; mnt/foobar: security.ima: No such attribute
&gt; 
&gt; &quot;No such attribute&quot; = ENODATA = ENOATTR in getfattr(), despite security.ima
&gt; being reported by listxattr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58260</commentid>
    <comment_count>3</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-27 07:59:31 +0000</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; Created attachment 2949 [details]
&gt; &gt; rootfs with xattrs
&gt; &gt; 
&gt; &gt; Attached a test case with a single file inside a directory. The file has two
&gt; &gt; xattrs (see bug 8954 for a description how the archive was created):
&gt; &gt; 
&gt; &gt; $ getfattr -d -m . testrootfs/foobar 
&gt; &gt; # file: testrootfs/foobar
&gt; &gt; security.SMACK64=&quot;_&quot;
&gt; 
&gt; How can you set security.SMACK64, please ? I only can set user.foo on my
&gt; host Ubuntu 12.04 (the &quot;user.&quot; is a must).

To do it on the host, you must be root. But beware that the problem did not occur on the host because the ordering of xattrs was different than under pseudo. I could only reproduce it under pseudo.

Also note that you do not have to re-create a test case with setfattr unless you want to - just unpack the attachement with &quot;tar --xattrs --xattrs-include -xf testrootfs.tar&quot;.


&gt; &gt; security.ima=0sAwIC2C1O/
&gt; &gt; QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGv
&gt; &gt; ncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/
&gt; &gt; SrFa1+PDlu9Cdr6L3uOzkkVjoEs=
&gt; 
&gt; And also I got &quot;bad input encoding&quot; when use such a value.

Worked fine for me:

$ sudo setfattr -n security.ima -v security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs= foo

$ getfattr -d -m . foo
# file: foo
security.capability=0sAAAAAgEAAAAAAAAAAAAAAAAAAAA=
security.ima=&quot;security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=&quot;

&gt; Since I can&apos;t set the value you provided, so that I can&apos;t reproduce the
&gt; problem.

Please try with the attached test case. However, to unpack it you have to use the modified pseudo, see step 1 in the initial bug description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58283</commentid>
    <comment_count>4</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-01-27 22:23:31 +0000</bug_when>
    <thetext>Huh, that&apos;s interesting. I saw similar behavior, but at the time I didn&apos;t think anything of it. But I just tried it now, and it appeared to work:

# tar --xattrs --xattrs-include=* -xf foo.tar
# getfattr -d -m . testrootfs/foobar
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

But if I run *outside* of pseudo:

root@seebs-worktop:~/pseudo# tar --xattrs --xattrs-include=* -xf foo.tar
root@seebs-worktop:~/pseudo# getfattr -d -m . testrootfs/foobar
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;

And I don&apos;t remotely know why that would be the case. But it may be related to why the generated image is showing different attributes than expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58340</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-29 12:53:57 +0000</bug_when>
    <thetext>(In reply to comment #4)
&gt; But if I run *outside* of pseudo:
&gt; 
&gt; root@seebs-worktop:~/pseudo# tar --xattrs --xattrs-include=* -xf foo.tar
&gt; root@seebs-worktop:~/pseudo# getfattr -d -m . testrootfs/foobar
&gt; # file: testrootfs/foobar
&gt; security.SMACK64=&quot;_&quot;
&gt; 
&gt; And I don&apos;t remotely know why that would be the case.

My guess is that the host&apos;s kernel has IMA support and thus interferes with setting security.ima. I believe Fedora has it in its kernels. strace on tar might show more.

&gt; But it may be related
&gt; to why the generated image is showing different attributes than expected?

No, the problem occurs when running inside pseudo, and there setting the xattrs always works when done &quot;normally&quot;. It was just unpacking with GNU tar which led to odd results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58341</commentid>
    <comment_count>6</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-29 12:56:44 +0000</bug_when>
    <thetext>Regarding priority of this bug: I thought initially that it would only occur rarely that we need to have two xattrs on one file.

But I just noticed that I have to label the entire /var hierarchy with a Smack label, and then multiple files are affect. So this is fairly critical for us now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58357</commentid>
    <comment_count>7</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-01-29 21:41:39 +0000</bug_when>
    <thetext>Huh. At that point, I guess the next question is why it seems to be working for me, but not for you. Although I&apos;m still using the old rootfs, let me try with the one from this case... Looks to me like it&apos;s working?

# tar --xattrs --xattrs-include=* -xf testrootfs.tar
# getfattr -d -m . testrootfs/*
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

So it seems to me that the tar unpack in pseudo is working. Maybe this is an ext4fs thing?

It&apos;s quite possible that the issue is that, when you mount the ext4fs, it runs into whatever&apos;s making the .ima value disappear when you run tar as root instead of under pseudo, which would be maybe some kind of kernel support. The kernel could be choosing not to show you those values, maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58361</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-01-30 09:03:20 +0000</bug_when>
    <thetext>(In reply to comment #7)
&gt; So it seems to me that the tar unpack in pseudo is working. Maybe this is an
&gt; ext4fs thing?

Yes, absolutely. Sorry if that hasn&apos;t been clear. As I said in comment #2, the order of xattrs as returned by listxattr() is relevant for mkfs.ext4, but it shouldn&apos;t be. It works when returned as on the host, but fails when returned as under pseudo.

Fixing bug 8954 was necessary only to make it simpler to reproduce the problem, because otherwise unpacking the test case under pseudo would have failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58363</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Yang">liezhi.yang</who>
    <bug_when>2016-02-01 01:37:33 +0000</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; So it seems to me that the tar unpack in pseudo is working. Maybe this is an
&gt; &gt; ext4fs thing?
&gt; 
&gt; Yes, absolutely. Sorry if that hasn&apos;t been clear. As I said in comment #2,
&gt; the order of xattrs as returned by listxattr() is relevant for mkfs.ext4,
&gt; but it shouldn&apos;t be. It works when returned as on the host, but fails when
&gt; returned as under pseudo.
&gt; 
&gt; Fixing bug 8954 was necessary only to make it simpler to reproduce the
&gt; problem, because otherwise unpacking the test case under pseudo would have
&gt; failed.

Maybe it is tar version related ? Works for me when use tar-native:

$ bitbake -c devshell core-image-minimal
$ /buildarea/lyang1/test_u/tmp/sysroots/x86_64-linux/usr/bin/tar-native/tar --xattrs --xattrs-include=* -xf testrootfs.tar

# getfattr -d -m . testrootfs/*
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=
QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58368</commentid>
    <comment_count>10</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-01 07:11:52 +0000</bug_when>
    <thetext>(In reply to comment #9)
&gt; Maybe it is tar version related ? Works for me when use tar-native:
&gt; 
&gt; $ bitbake -c devshell core-image-minimal
&gt; $ /buildarea/lyang1/test_u/tmp/sysroots/x86_64-linux/usr/bin/tar-native/tar
&gt; --xattrs --xattrs-include=* -xf testrootfs.tar
&gt; 
&gt; # getfattr -d -m . testrootfs/*
&gt; # file: testrootfs/foobar
&gt; security.SMACK64=&quot;_&quot;
&gt; security.ima=0sAwIC2C1O/
&gt; QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGv
&gt; ncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/
&gt; SrFa1+PDlu9Cdr6L3uOzkkVjoEs=
&gt; QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

You are confusing this bug here with bug #8954. #8954 was about unpacking the test case archive under pseudo. This one here, bug #8992, is about converting the content of that archive after unpacking into an ext4 partition. 

What you show above is that unpacking works. Now please try creating an ext4 partition from it. If it works, check in which order listxattr() returns xattrs. It fails only when returned in a certain order (see comment #1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58521</commentid>
    <comment_count>11</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-04 07:54:35 +0000</bug_when>
    <thetext>Other combinations of xattrs besides the one mentioned in comment #1 have similar problems.

What seems to avoid the problem is sorting the xattrs by the length of their value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58618</commentid>
    <comment_count>12</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-02-04 21:18:26 +0000</bug_when>
    <thetext>I&apos;m guessing that the length-of-value is not the actual determinant, but it may be that order in which they were written matters, and we ought to be sorting them, maybe?

I don&apos;t know whether there&apos;s any existing guarantees about the order in which attributes are stored or written. If I write two attributes, am I guaranteed that list will return them in the order they were written?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58621</commentid>
    <comment_count>13</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-05 07:35:27 +0000</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m guessing that the length-of-value is not the actual determinant, but it
&gt; may be that order in which they were written matters, and we ought to be
&gt; sorting them, maybe?

The order should not matter. Conceptually, it is a key/value store with no guarantees about the ordering in listxattr().

&gt; I don&apos;t know whether there&apos;s any existing guarantees about the order in
&gt; which attributes are stored or written. If I write two attributes, am I
&gt; guaranteed that list will return them in the order they were written?

No; at least I haven&apos;t see anything like that, and it also would not make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58622</commentid>
    <comment_count>14</comment_count>
      <attachid>2969</attachid>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-05 07:37:50 +0000</bug_when>
    <thetext>Created attachment 2969
sort xattrs by size before adding to image

This is the workaround that I am using now until someone can fix the image creation code so that it works regardless of the order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58678</commentid>
    <comment_count>15</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-05 18:20:36 +0000</bug_when>
    <thetext>I think I understand what might be the problem here. http://www.nongnu.org/ext2-doc/ext2.html#CONTRIB-EXTENDED-ATTRIBUTES contains the small snippet that &quot; The entry descriptors are sorted by attribute name, so that two extended attribute blocks can be compared efficiently. &quot;.

Looking at the kernel code for reading ext file systems, it will iterate the attributes and stop short if the comparison becomes higher than the searched value (ext4_xattr_find_entry()).

This is consistent with strace showing an ENODATA, yet the index showing the listing. It could also explain why Patrick&apos;s &apos;order by size&apos; happened to work.

[pid 10171] mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x7fdb36a8c000
[pid 10171] close(3)                    = 0
[pid 10171] getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=64*1024}) = 0
[pid 10171] lstat(&quot;mnt/foobar&quot;, {st_mode=S_IFREG|0755, st_size=1, ...}) = 0
[pid 10171] listxattr(&quot;mnt/foobar&quot;, NULL, 0) = 30
[pid 10171] listxattr(&quot;mnt/foobar&quot;, &quot;security.SMACK64\0security.ima\0&quot;, 256) = 30
[pid 10171] getxattr(&quot;mnt/foobar&quot;, &quot;security.SMACK64&quot;, 0x0, 0) = 1
[pid 10171] getxattr(&quot;mnt/foobar&quot;, &quot;security.SMACK64&quot;, &quot;_&quot;, 256) = 1
[pid 10171] fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 13), ...}) = 0
[pid 10171] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdb36a8b000
[pid 10171] write(1, &quot;# file: mnt/foobar\n&quot;, 19# file: mnt/foobar
) = 19
[pid 10171] write(1, &quot;security.SMACK64=\&quot;_\&quot;\n&quot;, 21security.SMACK64=&quot;_&quot;
) = 21
[pid 10171] getxattr(&quot;mnt/foobar&quot;, &quot;security.ima&quot;, 0x0, 0) = -1 ENODATA (No data available)
[pid 10171] write(2, &quot;mnt/foobar: &quot;, 12mnt/foobar: ) = 12
[pid 10171] write(2, &quot;security.ima: No such attribute\n&quot;, 32security.ima: No such attribute
) = 32

I suspect the libext2fs code in e2fsprogs needs to be taught about this minor sorting detail as I can&apos;t see any sorting code in it but I&apos;ll need to double check with fresh eyes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58680</commentid>
    <comment_count>16</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-05 19:03:06 +0000</bug_when>
    <thetext>(In reply to comment #15)
&gt; I think I understand what might be the problem here.
&gt; http://www.nongnu.org/ext2-doc/ext2.html#CONTRIB-EXTENDED-ATTRIBUTES
&gt; contains the small snippet that &quot; The entry descriptors are sorted by
&gt; attribute name, so that two extended attribute blocks can be compared
&gt; efficiently. &quot;.
&gt; 
&gt; Looking at the kernel code for reading ext file systems, it will iterate the
&gt; attributes and stop short if the comparison becomes higher than the searched
&gt; value (ext4_xattr_find_entry()).
&gt; 
&gt; This is consistent with strace showing an ENODATA, yet the index showing the
&gt; listing. It could also explain why Patrick&apos;s &apos;order by size&apos; happened to
&gt; work.

But I was sorting on the wrong value and it just happened to hit the right order, right? Fixing that will be easy and also simplify the code, because it can be done between listxattr() and the following getxattr() calls.

&gt; I suspect the libext2fs code in e2fsprogs needs to be taught about this
&gt; minor sorting detail as I can&apos;t see any sorting code in it but I&apos;ll need to
&gt; double check with fresh eyes.

Doing the sorting where I placed then might be the right location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58684</commentid>
    <comment_count>17</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-02-05 20:22:55 +0000</bug_when>
    <thetext>Oh.

4c56d54

-       char *sql = &quot;SELECT name FROM xattrs WHERE file_id = ?;&quot;;
+       char *sql = &quot;SELECT name FROM xattrs WHERE file_id = ? ORDER BY name;&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58691</commentid>
    <comment_count>18</comment_count>
      <attachid>2973</attachid>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-05 23:21:01 +0000</bug_when>
    <thetext>Created attachment 2973
Patch which fixes the issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58692</commentid>
    <comment_count>19</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-05 23:24:00 +0000</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; I think I understand what might be the problem here.
&gt; &gt; http://www.nongnu.org/ext2-doc/ext2.html#CONTRIB-EXTENDED-ATTRIBUTES
&gt; &gt; contains the small snippet that &quot; The entry descriptors are sorted by
&gt; &gt; attribute name, so that two extended attribute blocks can be compared
&gt; &gt; efficiently. &quot;.
&gt; &gt; 
&gt; &gt; Looking at the kernel code for reading ext file systems, it will iterate the
&gt; &gt; attributes and stop short if the comparison becomes higher than the searched
&gt; &gt; value (ext4_xattr_find_entry()).
&gt; &gt; 
&gt; &gt; This is consistent with strace showing an ENODATA, yet the index showing the
&gt; &gt; listing. It could also explain why Patrick&apos;s &apos;order by size&apos; happened to
&gt; &gt; work.
&gt; 
&gt; But I was sorting on the wrong value and it just happened to hit the right
&gt; order, right?

Yes, that was just luck.

&gt; Fixing that will be easy and also simplify the code, because
&gt; it can be done between listxattr() and the following getxattr() calls.
&gt; 
&gt; &gt; I suspect the libext2fs code in e2fsprogs needs to be taught about this
&gt; &gt; minor sorting detail as I can&apos;t see any sorting code in it but I&apos;ll need to
&gt; &gt; double check with fresh eyes.
&gt; 
&gt; Doing the sorting where I placed then might be the right location.

I suspect that this needs to be fixed in the ext2fs code, so close but not quite. You should be able to add the attributes in any order and it will sort them into the correct order when the change is committed.

The nice thing is there is already in fact a sort function there, it just needs to handle them in the correct order. I&apos;ve attached a patch. I&apos;m basing the &quot;right&quot; order on the code in the kernel since I can&apos;t find the order defined anywhere. That patch works with the cases I&apos;ve tested it with. Note that its not just a sort on the value of the attribute names but also their length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58693</commentid>
    <comment_count>20</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-05 23:24:34 +0000</bug_when>
    <thetext>(In reply to comment #17)
&gt; Oh.
&gt; 
&gt; 4c56d54
&gt; 
&gt; -       char *sql = &quot;SELECT name FROM xattrs WHERE file_id = ?;&quot;;
&gt; +       char *sql = &quot;SELECT name FROM xattrs WHERE file_id = ? ORDER BY
&gt; name;&quot;;

Neat, however this is a bug in the ext* filesystem generation code. Makes a nice workaround though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58766</commentid>
    <comment_count>21</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-02-09 00:37:33 +0000</bug_when>
    <thetext>Yeah. But it&apos;s easy enough to do so I&apos;ve put it in pseudo-master because why not, it&apos;s cheap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58799</commentid>
    <comment_count>22</comment_count>
    <who name="Seebs">seebs</who>
    <bug_when>2016-02-09 20:00:40 +0000</bug_when>
    <thetext>The workaround is now in pseudo 1.7.5 which has been submitted for oe-core, which should make this go away for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58908</commentid>
    <comment_count>23</comment_count>
    <who name="Patrick Ohly">patrick.ohly</who>
    <bug_when>2016-02-11 16:27:24 +0000</bug_when>
    <thetext>I can confirm that RP&apos;s patch works. See https://github.com/01org/meta-intel-iot-security/pull/100/commits and the TravisCI test results (also passed with older OE-core where pseudo is not changed) https://travis-ci.org/01org/meta-intel-iot-security/builds/108498911

Robert, will you take care of upstreaming this fix, both in e2fsprogs and in OE-core master?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58927</commentid>
    <comment_count>24</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-02-11 21:09:48 +0000</bug_when>
    <thetext>http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=d1496b4cc48d2c4c081052d04e1ede51a7503f25

Discussions are ongoing upstream about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59430</commentid>
    <comment_count>25</comment_count>
    <who name="Bogdan Alexandru Voiculescu">bogdanx.a.voiculescu</who>
    <bug_when>2016-02-24 13:37:28 +0000</bug_when>
    <thetext>Verified: not reproducible on 36b43b233c841b3c09fc17e04686b4b758780963

sudo mount /dev/loop0 mnt/; getfattr -d -m . mnt/*; sudo  umount mnt
# file: mnt/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=

getfattr -d -m . testrootfs/foobar
# file: testrootfs/foobar
security.SMACK64=&quot;_&quot;
security.ima=0sAwIC2C1O/QCAKE3nkQA9MB2DFaZOveb+E6kTTq4FQrmCugFE5vnX4vGJQ3NK7jNJkcJXuxhQnG1rf68Z31mkGvncxKz93RS9RjjZML7X8I0H5j3+QsU3Y8ZXsxhTg+UOIWiZV0XeVgKIvwaTlvrEXcvNjHH/SrFa1+PDlu9Cdr6L3uOzkkVjoEs=</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2949</attachid>
            <date>2016-01-25 08:06:09 +0000</date>
            <delta_ts>2016-01-25 08:06:09 +0000</delta_ts>
            <desc>rootfs with xattrs</desc>
            <filename>testrootfs.tar</filename>
            <type>application/x-tar</type>
            <size>10240</size>
            <attacher name="Patrick Ohly">patrick.ohly</attacher>
            
              <data encoding="base64">Li9QYXhIZWFkZXJzLjE1MzEwL3Rlc3Ryb290ZnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAw
MAAwMDAwMDAwADAwMDAwMDAwMTMyADEyNjQ3NjY3NTA2ADAxMzEyMwAgeAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz
MCBtdGltZT0xNDUzMjg5Mjg2LjQwMjI0NTE3OQozMCBhdGltZT0xNDUzMjg5MjkxLjY5NDI3MTQy
MQozMCBjdGltZT0xNDUzMjg5Mjg2LjQwMjI0NTE3OQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRl
c3Ryb290ZnMvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDE3NTAA
MDAwMTc1MAAwMDAwMDAwMDAwMAAxMjY0NzY2NzUwNgAwMTE1MzUAIDUAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAw
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVz
dHJvb3Rmcy9QYXhIZWFkZXJzLjE1MzEwL2Zvb2JhcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMDAwMAAw
MDAwMDAwADAwMDAwMDAwNDQ1ADEyNjQ3NjY3NDM3ADAxNDI1MAAgeAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMCBt
dGltZT0xNDUzMjg5MjQ3LjE4NjA1MDcxNwozMCBhdGltZT0xNDUzMjg5MjkxLjY5NDI3MTQyMQoz
MCBjdGltZT0xNDUzMjg5Mjg2LjQwMjI0NTE3OQoxNjggU0NISUxZLnhhdHRyLnNlY3VyaXR5Lmlt
YT0DAgLYLU79AIAoTeeRAD0wHYMVpk695v4TqRNOrgVCuYK6AUTm+dfi8YlDc0ruM0mRwle7GFCc
bWt/rxnfWaQa+dzErP3dFL1GONkwvtfwjQfmPf5CxTdjxlezGFOD5Q4haJlXRd5WAoi/BpOW+sRd
y82Mcf9KsVrX48OW70J2vove47OSRWOgSwozNSBTQ0hJTFkueGF0dHIuc2VjdXJpdHkuU01BQ0s2
ND1fCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRlc3Ry
b290ZnMvZm9vYmFyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAw
MDAwMAAwMDAwMDAwMDAwMQAxMjY0NzY2NzQzNwAwMTQ1MDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDAwMAAwMDAwMDAwAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2969</attachid>
            <date>2016-02-05 07:37:50 +0000</date>
            <delta_ts>2016-02-05 07:37:50 +0000</delta_ts>
            <desc>sort xattrs by size before adding to image</desc>
            <filename>create_inode.c-work-around-xattr-handling.patch</filename>
            <type>text/plain</type>
            <size>3625</size>
            <attacher name="Patrick Ohly">patrick.ohly</attacher>
            
              <data encoding="base64">RnJvbSAxY2MwOGM3NmE2ZTIyMWRkZjdlMDdmN2U0MWVlODg5ZjI5ZjgxZGZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+
CkRhdGU6IFdlZCwgMyBGZWIgMjAxNiAxNDo0Nzo0NyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGNy
ZWF0ZV9pbm9kZS5jOiB3b3JrIGFyb3VuZCB4YXR0ciBoYW5kbGluZyBidWcKCldoZW4gbXVsdGlw
bGUgeGF0dHJzIGFyZSBzZXQgZm9yIGFuIGlub2RlLCBpbWFnZSBjcmVhdGlvbiBvbmx5IHdvcmtz
CmNvcnJlY3RseSB3aGVuIHRoZXkgZ2V0IGFkZGVkIHRvIHRoZSBpbWFnZSB3aXRoIGluY3JlYXNp
bmcgbGVuZ3RoIG9mCnRoZWlyIHZhbHVlcy4gT3RoZXJ3aXNlIHJlYWRpbmcgdmFsdWVzIGZyb20g
dGhlIGltYWdlIGZhaWxzIHdpdGgKRU5PQVRUUi4KCkl0IGlzIHVuY2xlYXIgd2hldGhlciBleHQy
ZnNfeGF0dHJfc2V0KCkgY2FuIChvciBzaG91bGQpIGJlIGNoYW5nZWQgdG8KaGFuZGxlIGFkZGlu
ZyB4YXR0cnMgaW4gYXJiaXRyYXJ5IG9yZGVyLiBBIHByb3BlciBzb2x1dGlvbiBpcyBiZWluZwp3
b3JrZWQgb24gaW4gaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTkyCgpVbnRpbCB0aGF0IGJlY29tZXMgY2xlYXIsIHNvcnRpbmcgaW4gc2V0X2lub2Rl
X3hhdHRyKCkgYXZvaWRzIHRoZQppc3N1ZS4KClVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0
ZSBbaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD04OTky
XQoKU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgot
LS0KCmRpZmYgLS1naXQgYS9taXNjL2NyZWF0ZV9pbm9kZS5jIGIvbWlzYy9jcmVhdGVfaW5vZGUu
YwppbmRleCAwZGU1NzE5Li5iZjMyMDE1IDEwMDY0NAotLS0gYS9taXNjL2NyZWF0ZV9pbm9kZS5j
CisrKyBiL21pc2MvY3JlYXRlX2lub2RlLmMKQEAgLTEyNCw2ICsxMjQsMjMgQEAgc3RhdGljIGVy
cmNvZGVfdCBzZXRfaW5vZGVfZXh0cmEoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAog
fQogCiAjaWZkZWYgSEFWRV9MTElTVFhBVFRSCitzdHJ1Y3QgeGF0dHJfZW50cnkgeworCWNvbnN0
IGNoYXIgKm5hbWU7CisJc2l6ZV90IHZhbHVlX3NpemU7Cit9Oworc3RhdGljIGludCB4YXR0cnNf
Y21wX3NpemUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwlzaXplX3Qgc2l6ZV9h
ID0gKChjb25zdCBzdHJ1Y3QgeGF0dHJfZW50cnkgKilhKS0+dmFsdWVfc2l6ZSwKKwkJc2l6ZV9i
ID0gKChjb25zdCBzdHJ1Y3QgeGF0dHJfZW50cnkgKiliKS0+dmFsdWVfc2l6ZTsKKwlpZiAoc2l6
ZV9hIDwgc2l6ZV9iICkgeworCQlyZXR1cm4gLTE7CisJfSBlbHNlIGlmIChzaXplX2EgPT0gc2l6
ZV9iICkgeworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQlyZXR1cm4gMTsKKwl9Cit9CisKIHN0
YXRpYyBlcnJjb2RlX3Qgc2V0X2lub2RlX3hhdHRyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190
IGlubywKIAkJCQkgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CkBAIC0xMzEsNyArMTQ4LDkgQEAg
c3RhdGljIGVycmNvZGVfdCBzZXRfaW5vZGVfeGF0dHIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5v
X3QgaW5vLAogCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZQkqaGFuZGxlOwogCXNzaXplX3QJCQkJ
c2l6ZSwgdmFsdWVfc2l6ZTsKIAljaGFyCQkJCSpsaXN0ID0gTlVMTDsKLQlpbnQJCQkJaTsKKwlp
bnQJCQkJaSwgZTsKKwlpbnQJCQkJbnVtX3hhdHRyczsKKwlzdHJ1Y3QgeGF0dHJfZW50cnkJCSp4
YXR0cnMgPSBOVUxMOwogCiAJc2l6ZSA9IGxsaXN0eGF0dHIoZmlsZW5hbWUsIE5VTEwsIDApOwog
CWlmIChzaXplID09IC0xKSB7CkBAIC0xNjUsOSArMTg0LDIxIEBAIHN0YXRpYyBlcnJjb2RlX3Qg
c2V0X2lub2RlX3hhdHRyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKIAkJZ290byBv
dXQ7CiAgICAgICAgIH0KIAorCS8qIFJlb3JkZXIgeGF0dHJzIHRvIGF2b2lkIGh0dHBzOi8vYnVn
emlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk5MjoKKwkgKiBpZiBzZWN1
cml0eS5pbWEgaXMgYWRkZWQgdG8gdGhlIGltYWdlIGZpcnN0LCByZWFkaW5nIGl0cyB2YWx1ZSBm
cm9tIHRoZSBpbWFnZQorCSAqIGZhaWxzIHdpdGggIk5vIHN1Y2ggYXR0cmlidXRlIi4gQWRkaW5n
IGl0IGxhdGVyIHdvcmtzLgorCSAqLworCW51bV94YXR0cnMgPSAwOwogCWZvciAoaSA9IDA7IGkg
PCBzaXplOyBpICs9IHN0cmxlbigmbGlzdFtpXSkgKyAxKSB7CisJCW51bV94YXR0cnMrKzsKKwl9
CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0obnVtX3hhdHRycyAqIHNpemVvZigqeGF0dHJzKSwg
JnhhdHRycyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8o
IndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IikpOworCQlnb3RvIG91dDsKKwl9CisJZm9yIChpID0g
MCwgZSA9IDA7IGkgPCBzaXplOyBpICs9IHN0cmxlbigmbGlzdFtpXSkgKyAxLCBlKyspIHsKIAkJ
Y29uc3QgY2hhciAqbmFtZSA9ICZsaXN0W2ldOwotCQljaGFyICp2YWx1ZTsKIAogCQl2YWx1ZV9z
aXplID0gbGdldHhhdHRyKGZpbGVuYW1lLCBuYW1lLCBOVUxMLCAwKTsKIAkJaWYgKHZhbHVlX3Np
emUgPT0gLTEpIHsKQEAgLTE3NywxMyArMjA4LDIxIEBAIHN0YXRpYyBlcnJjb2RlX3Qgc2V0X2lu
b2RlX3hhdHRyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKIAkJCQluYW1lLCBmaWxl
bmFtZSk7CiAJCQlicmVhazsKIAkJfQorCQl4YXR0cnNbZV0ubmFtZSA9IG5hbWU7CisJCXhhdHRy
c1tlXS52YWx1ZV9zaXplID0gdmFsdWVfc2l6ZTsKKwl9CisJcXNvcnQoeGF0dHJzLCBudW1feGF0
dHJzLCBzaXplb2YoKnhhdHRycyksIHhhdHRyc19jbXBfc2l6ZSk7CiAKKwlmb3IgKGUgPSAwOyBl
IDwgbnVtX3hhdHRyczsgZSsrKSB7CisJCWNvbnN0IGNoYXIgKm5hbWUgPSB4YXR0cnNbZV0ubmFt
ZTsKKwkJY2hhciAqdmFsdWU7CisKKwkJdmFsdWVfc2l6ZSA9IHhhdHRyc1tlXS52YWx1ZV9zaXpl
OwogCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbSh2YWx1ZV9zaXplLCAmdmFsdWUpOwogCQlpZiAo
cmV0dmFsKSB7CiAJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIGFsbG9jYXRp
bmcgbWVtb3J5IikpOwogCQkJYnJlYWs7CiAJCX0KLQogCQl2YWx1ZV9zaXplID0gbGdldHhhdHRy
KGZpbGVuYW1lLCBuYW1lLCB2YWx1ZSwgdmFsdWVfc2l6ZSk7CiAJCWlmICh2YWx1ZV9zaXplID09
IC0xKSB7CiAJCQlleHQyZnNfZnJlZV9tZW0oJnZhbHVlKTsKQEAgLTIwNiw2ICsyNDUsNyBAQCBz
dGF0aWMgZXJyY29kZV90IHNldF9pbm9kZV94YXR0cihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9f
dCBpbm8sCiAJfQogIG91dDoKIAlleHQyZnNfZnJlZV9tZW0oJmxpc3QpOworCWV4dDJmc19mcmVl
X21lbSgmeGF0dHJzKTsKIAljbG9zZV9yZXR2YWwgPSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoYW5k
bGUpOwogCWlmIChjbG9zZV9yZXR2YWwpIHsKIAkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLCBf
KCJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IiksIGlubyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2973</attachid>
            <date>2016-02-05 23:21:01 +0000</date>
            <delta_ts>2016-02-05 23:21:01 +0000</delta_ts>
            <desc>Patch which fixes the issue</desc>
            <filename>rp.patch</filename>
            <type>text/plain</type>
            <size>691</size>
            <attacher name="Richard Purdie">richard.purdie</attacher>
            
              <data encoding="base64">SW5kZXg6IGdpdC9saWIvZXh0MmZzL2V4dF9hdHRyLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2l0Lm9yaWcv
bGliL2V4dDJmcy9leHRfYXR0ci5jCisrKyBnaXQvbGliL2V4dDJmcy9leHRfYXR0ci5jCkBAIC0y
NTgsNiArMjU4LDcgQEAgc3RhdGljIHN0cnVjdCBlYV9uYW1lX2luZGV4IGVhX25hbWVzW10gPQog
c3RhdGljIGludCBhdHRyX2NvbXBhcmUoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsK
IAljb25zdCBzdHJ1Y3QgZXh0Ml94YXR0ciAqeGEgPSBhLCAqeGIgPSBiOworCXNpemVfdCBsZW47
CiAKIAlpZiAoeGEtPm5hbWUgPT0gTlVMTCkKIAkJcmV0dXJuICsxOwpAQCAtMjY3LDcgKzI2OCwx
MSBAQCBzdGF0aWMgaW50IGF0dHJfY29tcGFyZShjb25zdCB2b2lkICphLCBjCiAJCXJldHVybiAt
MTsKIAllbHNlIGlmICghc3RyY21wKHhiLT5uYW1lLCAic3lzdGVtLmRhdGEiKSkKIAkJcmV0dXJu
ICsxOwotCXJldHVybiAwOworCWxlbiA9IHN0cmxlbih4YS0+bmFtZSkgLSBzdHJsZW4oeGItPm5h
bWUpOworCWlmIChsZW4pCisJCXJldHVybiBsZW47CisKKwlyZXR1cm4gc3RyY21wKHhhLT5uYW1l
LCB4Yi0+bmFtZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpmaW5kX2VhX3ByZWZpeChpbnQg
aW5kZXgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>