<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:16:20 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-8299] (vvp_io.c:922:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&gt;ft_index )</title>
                <link>https://jira.whamcloud.com/browse/LU-8299</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Full stack of the panic:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;&amp;lt;0&amp;gt;LustreError: 15833:0:(vvp_io.c:1233:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&amp;gt;ft_index ) failed:
&amp;lt;0&amp;gt;LustreError: 15833:0:(vvp_io.c:1233:vvp_io_fault_start()) LBUG
&amp;lt;4&amp;gt;Pid: 15833, comm: a.out
&amp;lt;4&amp;gt;
&amp;lt;4&amp;gt;Call Trace:
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa121c895&amp;gt;] libcfs_debug_dumpstack+0x55/0x80 [libcfs]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa121ce97&amp;gt;] lbug_with_loc+0x47/0xb0 [libcfs]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa192b6fb&amp;gt;] vvp_io_fault_start+0x9ab/0xc70 [lustre]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa122b121&amp;gt;] ? libcfs_debug_msg+0x41/0x50 [libcfs]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa1225778&amp;gt;] ? libcfs_log_return+0x28/0x40 [libcfs]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa135560a&amp;gt;] cl_io_start+0x6a/0x140 [obdclass]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa1359574&amp;gt;] cl_io_loop+0xb4/0x1b0 [obdclass]
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa1909cee&amp;gt;] ll_fault+0x2de/0x510 [lustre]
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8114a234&amp;gt;] __do_fault+0x54/0x530
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8114a807&amp;gt;] handle_pte_fault+0xf7/0xb00
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8117b2a9&amp;gt;] ? __mem_cgroup_try_charge+0x19/0x5d0
&amp;lt;4&amp;gt; [&amp;lt;ffffffffa121c27b&amp;gt;] ? cfs_set_ptldebug_header+0x2b/0xc0 [libcfs]
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8111f93e&amp;gt;] ? find_get_page+0x1e/0xa0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8152a0b9&amp;gt;] ? _cond_resched+0x9/0x40
&amp;lt;4&amp;gt; [&amp;lt;ffffffff81120e23&amp;gt;] ? filemap_fault+0xd3/0x500
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8114b43a&amp;gt;] handle_mm_fault+0x22a/0x300
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8104a8d8&amp;gt;] __do_page_fault+0x138/0x480
&amp;lt;4&amp;gt; [&amp;lt;ffffffff812307e4&amp;gt;] ? inode_has_perm+0x54/0xa0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8122ea61&amp;gt;] ? avc_has_perm+0x71/0x90
&amp;lt;4&amp;gt; [&amp;lt;ffffffff81334bbd&amp;gt;] ? tty_wakeup+0x3d/0x80
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8152f23e&amp;gt;] do_page_fault+0x3e/0xa0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8152c5f5&amp;gt;] page_fault+0x25/0x30
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8128e6ef&amp;gt;] ? copy_user_generic_unrolled+0x2f/0xb0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8133494f&amp;gt;] ? tty_write+0x1ff/0x2a0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff81337850&amp;gt;] ? n_tty_write+0x0/0x460
&amp;lt;4&amp;gt; [&amp;lt;ffffffff81189278&amp;gt;] vfs_write+0xb8/0x1a0
&amp;lt;4&amp;gt; [&amp;lt;ffffffff81189c41&amp;gt;] sys_write+0x51/0x90
&amp;lt;4&amp;gt; [&amp;lt;ffffffff810e202e&amp;gt;] ? __audit_syscall_exit+0x25e/0x290
&amp;lt;4&amp;gt; [&amp;lt;ffffffff8100b072&amp;gt;] system_call_fastpath+0x16/0x1b
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is triggered by a trivial mmap test code which accidentally passes in an argument &amp;gt;2^63.  I&apos;ll attach code for the test.&lt;/p&gt;

&lt;p&gt;Running it like this:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;truncate -s 8589934592 file
./mmap_test file 8589934500 8
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Will cause that panic.  The test is incorrect, but it still shouldn&apos;t panic nodes.&lt;/p&gt;

&lt;p&gt;In vvp_io_fault_start, we calculate the index with cl_index.  This treats its argument (offset) as signed...  But offset (which is the same as ft_index here, which is that argument from userspace) is greater than 2^63, so it&apos;s negative, so this doesn&apos;t work.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;/**
 * Converts a page index into a &lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; offset within object \a obj.
 */
pgoff_t cl_index(&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; struct cl_object *obj, loff_t offset)
{
        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; offset &amp;gt;&amp;gt; PAGE_CACHE_SHIFT;
}
EXPORT_SYMBOL(cl_index);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When offset is negative, bit shift division is invalid.  Oops.&lt;/p&gt;

&lt;p&gt;This is corrected by making the function in question (cl_index) accept its argument as unsigned.  This gets the bits twiddled correctly, but it&apos;s nasty, because offset in vvp_io_fault_start is still loff_t...  and loff_t is still signed.&lt;/p&gt;

&lt;p&gt;I don&apos;t have a larger solution, because loff_t being signed is something we get from the kernel.  It seems wrong, but I&apos;m not sure what to do about it.&lt;/p&gt;

&lt;p&gt;I&apos;ll post my little patch and the powers that be can ponder the larger situation.&lt;/p&gt;</description>
                <environment></environment>
        <key id="37650">LU-8299</key>
            <summary>(vvp_io.c:922:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&gt;ft_index )</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="zam">Alexander Zarochentsev</assignee>
                                    <reporter username="paf">Patrick Farrell</reporter>
                        <labels>
                    </labels>
                <created>Fri, 17 Jun 2016 20:00:19 +0000</created>
                <updated>Mon, 20 Feb 2023 10:06:47 +0000</updated>
                            <resolved>Wed, 27 Feb 2019 05:40:16 +0000</resolved>
                                                    <fixVersion>Lustre 2.13.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                            <comments>
                            <comment id="156079" author="gerrit" created="Fri, 17 Jun 2016 20:04:46 +0000"  >&lt;p&gt;Patrick Farrell (paf@cray.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/20861&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/20861&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8299&quot; title=&quot;(vvp_io.c:922:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&amp;gt;ft_index )&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8299&quot;&gt;&lt;del&gt;LU-8299&lt;/del&gt;&lt;/a&gt; clio: correct arithmetic in cl_index&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: b72725d2325072b9beb2a9e5a48ed8843dacf9b5&lt;/p&gt;</comment>
                            <comment id="156080" author="paf" created="Fri, 17 Jun 2016 20:07:56 +0000"  >&lt;p&gt;Meant to include this code from vvp_io_fault_start in my original posting:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        &lt;span class=&quot;code-comment&quot;&gt;/* offset of the last &lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; on the page */&lt;/span&gt;
        offset = cl_offset(obj, fio-&amp;gt;ft_index + 1) - 1;
        LASSERT(cl_index(obj, offset) == fio-&amp;gt;ft_index);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note that the specific error here is that for our value, cl_index doesn&apos;t actually do the expected &quot;divide by page size&quot;, so cl_index(obj, offset) has the same value as &quot;offset&quot;.&lt;/p&gt;</comment>
                            <comment id="156081" author="adilger" created="Fri, 17 Jun 2016 20:13:08 +0000"  >&lt;p&gt;My understanding is that the kernel allows negative file offsets for certain special cases (e.g. accessing kernel memory via /dev/kmem on some CPU architectures), but this should be blocked when accessing filesystems.  Negative offsets are definitely blocked in &lt;tt&gt;llseek_execute()&lt;/tt&gt;, but I&apos;m not sure if we are missing some check at a high-level routine for mmap() that should do the same.&lt;/p&gt;</comment>
                            <comment id="240327" author="spitzcor" created="Fri, 18 Jan 2019 15:05:47 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=bobijam&quot; class=&quot;user-hover&quot; rel=&quot;bobijam&quot;&gt;bobijam&lt;/a&gt; and&#160;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=pfarrell&quot; class=&quot;user-hover&quot; rel=&quot;pfarrell&quot;&gt;pfarrell&lt;/a&gt; what should be done with&#160;&lt;a href=&quot;https://review.whamcloud.com/#/c/20861&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/#/c/20861&lt;/a&gt; ?  Patrick contributed that a while back and it was last touched six months ago.  It has some negative feedback.  Who should address that and finish the work up?&lt;/p&gt;</comment>
                            <comment id="241850" author="gerrit" created="Wed, 13 Feb 2019 10:54:49 +0000"  >&lt;p&gt;Alexander Zarochentsev (c17826@cray.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/34242&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/34242&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8299&quot; title=&quot;(vvp_io.c:922:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&amp;gt;ft_index )&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8299&quot;&gt;&lt;del&gt;LU-8299&lt;/del&gt;&lt;/a&gt; llite: ll_fault should fail for insane file offsets&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: f49e3d20b7175f7686aff0a6e690468a5a7c99dd&lt;/p&gt;</comment>
                            <comment id="241853" author="zam" created="Wed, 13 Feb 2019 11:23:50 +0000"  >&lt;blockquote&gt;&lt;p&gt;My understanding is that the kernel allows negative file offsets for certain special cases (e.g. accessing kernel memory via /dev/kmem on some CPU architectures), but this should be blocked when accessing filesystems. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;yes, absolute file offset should not be negative. filemap_fault() has the following code :&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; error;
        struct file *file = vma-&amp;gt;vm_file;
        struct address_space *mapping = file-&amp;gt;f_mapping;
        struct file_ra_state *ra = &amp;amp;file-&amp;gt;f_ra;
        struct inode *inode = mapping-&amp;gt;host;
        pgoff_t offset = vmf-&amp;gt;pgoff;
        struct page *page;
        pgoff_t size;
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; ret = 0;

        size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) &amp;gt;&amp;gt; PAGE_CACHE_SHIFT;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (offset &amp;gt;= size)
                &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; VM_FAULT_SIGBUS;

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lustre tries to handle such a large offset usual way and has all those problems with conversion page offset to file offset and back.  I submitted a small patch to return an error early in ll_fault() for obviously insane page indexes &lt;a href=&quot;https://review.whamcloud.com/34242&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/34242&lt;/a&gt; .&lt;/p&gt;</comment>
                            <comment id="241856" author="zam" created="Wed, 13 Feb 2019 12:15:24 +0000"  >&lt;p&gt;running the reproducer with the fix from&#160;&lt;a href=&quot;https://review.whamcloud.com/34242&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/34242&lt;/a&gt; :&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[root@devvm1 tests]# ~zam/work/tasks/LUS-1392/mmap_test /mnt/lustre/bar 8589934500 8
 command line: /mnt/lustre/bar 8589934500 8
 file size 8589934592, offset -92, length 8589934684
write: Bad address
[root@devvm1 tests]# 
 &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="241876" author="pfarrell" created="Wed, 13 Feb 2019 16:27:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=spitzcor&quot; class=&quot;user-hover&quot; rel=&quot;spitzcor&quot;&gt;spitzcor&lt;/a&gt; I think the proper approach is to take Zam&apos;s patch and abandon the other one - It&apos;s a bit of a pain to get right, and with Zam&apos;s patch, it&apos;s irrelevant.&#160; (I see you suggested that in Gerrit.)&lt;/p&gt;</comment>
                            <comment id="241879" author="simmonsja" created="Wed, 13 Feb 2019 17:16:04 +0000"  >&lt;p&gt;Since we have a reproducer could we add that to the sanity test &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="241898" author="zam" created="Wed, 13 Feb 2019 18:21:02 +0000"  >&lt;p&gt;&amp;gt; Since we have a reproducer could we add that to the sanity test &lt;br/&gt;
yes. just uploaded new revision with mmap_sanity/tst9.  below is how it fails w/o the fix &lt;br/&gt;
(machine hanged, I had to reboot it):&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[root@devvm1 tests]# ./mmap_sanity -d /mnt/lustre
mmap test1: basic mmap operation (PASS, 0.022238s)
mmap test2: MAP_PRIVATE not write back (PASS, 0.006258s)
mmap test3: concurrent mmap ops on two nodes (SKIPPED, 0s)
mmap test4: c1 write to f1 from mmapped f2, c2 write to f1 from mmapped f1 (SKIPPED, 0s)
fwrite failed for &apos;/sys/fs/lustre/ldlm/namespaces/lustre-OST0000-osc-MDT0000/lru_size&apos;: Bad file descriptor
mmap test5: read/write file to/from the buffer which mmapped to just this file (PASS, 0.008157s)
mmap test6: check mmap write/read content on two nodes (SKIPPED, 0s)
mmap test7: file i/o with an unmapped buffer (PASS, 0.007631s)
mmap test8: SIGBUS for beyond file size (PASS, 0.001838s)
packet_write_wait: Connection to 192.168.56.101 port 22: Broken pipe
C02T94HYGTFM:lustre-wc-rel c17826$ 
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="241899" author="simmonsja" created="Wed, 13 Feb 2019 18:33:59 +0000"  >&lt;p&gt;awesome!!!&lt;/p&gt;</comment>
                            <comment id="242903" author="gerrit" created="Wed, 27 Feb 2019 02:03:22 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/34242/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/34242/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8299&quot; title=&quot;(vvp_io.c:922:vvp_io_fault_start()) ASSERTION( cl_index(obj, offset) == fio-&amp;gt;ft_index )&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8299&quot;&gt;&lt;del&gt;LU-8299&lt;/del&gt;&lt;/a&gt; llite: ll_fault should fail for insane file offsets&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: ada3b33b52cdc6420e3b186c0aba4dd0b0337d8c&lt;/p&gt;</comment>
                            <comment id="242929" author="pjones" created="Wed, 27 Feb 2019 05:40:16 +0000"  >&lt;p&gt;Landed for 2.13&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="21894" name="mmap_test.c" size="2119" author="paf" created="Fri, 17 Jun 2016 20:00:19 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzyexz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>