<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/net/wireless, branch v2.6.36</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>wext: fix potential private ioctl memory content leak</title>
<updated>2010-09-20T17:41:40+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-09-16T22:38:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=df6d02300f7c2fbd0fbe626d819c8e5237d72c62'/>
<id>df6d02300f7c2fbd0fbe626d819c8e5237d72c62</id>
<content type='text'>
When a driver doesn't fill the entire buffer, old
heap contents may remain, and if it also doesn't
update the length properly, this old heap content
will be copied back to userspace.

It is very unlikely that this happens in any of
the drivers using private ioctls since it would
show up as junk being reported by iwpriv, but it
seems better to be safe here, so use kzalloc.

Reported-by: Jeff Mahoney &lt;jeffm@suse.com&gt;
Cc: stable@kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a driver doesn't fill the entire buffer, old
heap contents may remain, and if it also doesn't
update the length properly, this old heap content
will be copied back to userspace.

It is very unlikely that this happens in any of
the drivers using private ioctls since it would
show up as junk being reported by iwpriv, but it
seems better to be safe here, so use kzalloc.

Reported-by: Jeff Mahoney &lt;jeffm@suse.com&gt;
Cc: stable@kernel.org
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: register wiphy rfkill w/o holding cfg80211_mutex</title>
<updated>2010-08-31T18:48:47+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2010-08-30T21:36:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c3d34d5d9654ec9c2510f9341bfb1030b8f029d1'/>
<id>c3d34d5d9654ec9c2510f9341bfb1030b8f029d1</id>
<content type='text'>
Otherwise lockdep complains...

https://bugzilla.kernel.org/show_bug.cgi?id=17311

[ INFO: possible circular locking dependency detected ]
2.6.36-rc2-git4 #12
-------------------------------------------------------
kworker/0:3/3630 is trying to acquire lock:
 (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14

but task is already holding lock:
 (rfkill_global_mutex){+.+.+.}, at: [&lt;ffffffffa014b129&gt;]
rfkill_switch_all+0x24/0x49 [rfkill]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (rfkill_global_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa014b4ab&gt;] rfkill_register+0x2b/0x29c [rfkill]
       [&lt;ffffffffa0185ba0&gt;] wiphy_register+0x1ae/0x270 [cfg80211]
       [&lt;ffffffffa0206f01&gt;] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
       [&lt;ffffffffa0292e98&gt;] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
       [&lt;ffffffff812d3e9d&gt;] request_firmware_work_func+0x54/0x6f
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

-&gt; #1 (cfg80211_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa018605e&gt;] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
       [&lt;ffffffffa0189f36&gt;] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
       [&lt;ffffffff8139a3ce&gt;] ioctl_standard_iw_point+0x1a8/0x272
       [&lt;ffffffff8139a529&gt;] ioctl_standard_call+0x91/0xa7
       [&lt;ffffffff8139a687&gt;] T.723+0xbd/0x12c
       [&lt;ffffffff8139a727&gt;] wext_handle_ioctl+0x31/0x6d
       [&lt;ffffffff8133014e&gt;] dev_ioctl+0x63d/0x67a
       [&lt;ffffffff8131afd9&gt;] sock_ioctl+0x48/0x21d
       [&lt;ffffffff81102abd&gt;] do_vfs_ioctl+0x4ba/0x509
       [&lt;ffffffff81102b5d&gt;] sys_ioctl+0x51/0x74
       [&lt;ffffffff81009e02&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (rtnl_mutex){+.+.+.}:
       [&lt;ffffffff810796b0&gt;] __lock_acquire+0xa93/0xd9a
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14
       [&lt;ffffffffa0185cb5&gt;] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
       [&lt;ffffffffa014aed0&gt;] rfkill_set_block+0x80/0xd5 [rfkill]
       [&lt;ffffffffa014b07e&gt;] __rfkill_switch_all+0x3f/0x6f [rfkill]
       [&lt;ffffffffa014b13d&gt;] rfkill_switch_all+0x38/0x49 [rfkill]
       [&lt;ffffffffa014b821&gt;] rfkill_op_handler+0x105/0x136 [rfkill]
       [&lt;ffffffff81060708&gt;] process_one_work+0x248/0x403
       [&lt;ffffffff81062620&gt;] worker_thread+0x139/0x214
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise lockdep complains...

https://bugzilla.kernel.org/show_bug.cgi?id=17311

[ INFO: possible circular locking dependency detected ]
2.6.36-rc2-git4 #12
-------------------------------------------------------
kworker/0:3/3630 is trying to acquire lock:
 (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14

but task is already holding lock:
 (rfkill_global_mutex){+.+.+.}, at: [&lt;ffffffffa014b129&gt;]
rfkill_switch_all+0x24/0x49 [rfkill]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (rfkill_global_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa014b4ab&gt;] rfkill_register+0x2b/0x29c [rfkill]
       [&lt;ffffffffa0185ba0&gt;] wiphy_register+0x1ae/0x270 [cfg80211]
       [&lt;ffffffffa0206f01&gt;] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
       [&lt;ffffffffa0292e98&gt;] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
       [&lt;ffffffff812d3e9d&gt;] request_firmware_work_func+0x54/0x6f
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

-&gt; #1 (cfg80211_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa018605e&gt;] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
       [&lt;ffffffffa0189f36&gt;] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
       [&lt;ffffffff8139a3ce&gt;] ioctl_standard_iw_point+0x1a8/0x272
       [&lt;ffffffff8139a529&gt;] ioctl_standard_call+0x91/0xa7
       [&lt;ffffffff8139a687&gt;] T.723+0xbd/0x12c
       [&lt;ffffffff8139a727&gt;] wext_handle_ioctl+0x31/0x6d
       [&lt;ffffffff8133014e&gt;] dev_ioctl+0x63d/0x67a
       [&lt;ffffffff8131afd9&gt;] sock_ioctl+0x48/0x21d
       [&lt;ffffffff81102abd&gt;] do_vfs_ioctl+0x4ba/0x509
       [&lt;ffffffff81102b5d&gt;] sys_ioctl+0x51/0x74
       [&lt;ffffffff81009e02&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (rtnl_mutex){+.+.+.}:
       [&lt;ffffffff810796b0&gt;] __lock_acquire+0xa93/0xd9a
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14
       [&lt;ffffffffa0185cb5&gt;] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
       [&lt;ffffffffa014aed0&gt;] rfkill_set_block+0x80/0xd5 [rfkill]
       [&lt;ffffffffa014b07e&gt;] __rfkill_switch_all+0x3f/0x6f [rfkill]
       [&lt;ffffffffa014b13d&gt;] rfkill_switch_all+0x38/0x49 [rfkill]
       [&lt;ffffffffa014b821&gt;] rfkill_op_handler+0x105/0x136 [rfkill]
       [&lt;ffffffff81060708&gt;] process_one_work+0x248/0x403
       [&lt;ffffffff81062620&gt;] worker_thread+0x139/0x214
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless extensions: fix kernel heap content leak</title>
<updated>2010-08-30T20:35:17+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-08-30T10:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=42da2f948d949efd0111309f5827bf0298bcc9a4'/>
<id>42da2f948d949efd0111309f5827bf0298bcc9a4</id>
<content type='text'>
Wireless extensions have an unfortunate, undocumented
requirement which requires drivers to always fill
iwp-&gt;length when returning a successful status. When
a driver doesn't do this, it leads to a kernel heap
content leak when userspace offers a larger buffer
than would have been necessary.

Arguably, this is a driver bug, as it should, if it
returns 0, fill iwp-&gt;length, even if it separately
indicated that the buffer contents was not valid.

However, we can also at least avoid the memory content
leak if the driver doesn't do this by setting the iwp
length to max_tokens, which then reflects how big the
buffer is that the driver may fill, regardless of how
big the userspace buffer is.

To illustrate the point, this patch also fixes a
corresponding cfg80211 bug (since this requirement
isn't documented nor was ever pointed out by anyone
during code review, I don't trust all drivers nor
all cfg80211 handlers to implement it correctly).

Cc: stable@kernel.org [all the way back]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Wireless extensions have an unfortunate, undocumented
requirement which requires drivers to always fill
iwp-&gt;length when returning a successful status. When
a driver doesn't do this, it leads to a kernel heap
content leak when userspace offers a larger buffer
than would have been necessary.

Arguably, this is a driver bug, as it should, if it
returns 0, fill iwp-&gt;length, even if it separately
indicated that the buffer contents was not valid.

However, we can also at least avoid the memory content
leak if the driver doesn't do this by setting the iwp
length to max_tokens, which then reflects how big the
buffer is that the driver may fill, regardless of how
big the userspace buffer is.

To illustrate the point, this patch also fixes a
corresponding cfg80211 bug (since this requirement
isn't documented nor was ever pointed out by anyone
during code review, I don't trust all drivers nor
all cfg80211 handlers to implement it correctly).

Cc: stable@kernel.org [all the way back]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix locking in action frame TX</title>
<updated>2010-08-09T19:18:57+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-08-09T13:52:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=fe100acddf438591ecf3582cb57241e560da70b7'/>
<id>fe100acddf438591ecf3582cb57241e560da70b7</id>
<content type='text'>
Accesses to "wdev-&gt;current_bss" must be
locked with the wdev lock, which action
frame transmission is missing.

Cc: stable@kernel.org [2.6.33+]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Accesses to "wdev-&gt;current_bss" must be
locked with the wdev lock, which action
frame transmission is missing.

Cc: stable@kernel.org [2.6.33+]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: Update of regulatory request initiator handling</title>
<updated>2010-07-28T20:24:01+00:00</updated>
<author>
<name>Yuri Ershov</name>
<email>ext-yuri.ershov@nokia.com</email>
</author>
<published>2010-06-29T11:08:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c4c322941ce0d7e2b7b8794ad70683123d9cb26a'/>
<id>c4c322941ce0d7e2b7b8794ad70683123d9cb26a</id>
<content type='text'>
In some cases there could be possible dereferencing freed pointer. The
update is intended to avoid this issue.

Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some cases there could be possible dereferencing freed pointer. The
update is intended to avoid this issue.

Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nl80211: Fix memory leaks</title>
<updated>2010-07-28T20:24:01+00:00</updated>
<author>
<name>Yuri Ershov</name>
<email>ext-yuri.ershov@nokia.com</email>
</author>
<published>2010-06-29T11:08:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d080e2755d840ede60128cc914a070868ebabc1e'/>
<id>d080e2755d840ede60128cc914a070868ebabc1e</id>
<content type='text'>
In case of errors during message composing msg should be freed after canceling.

Signed-off-by: Yuri Kululin &lt;ext-yuri.kululin@nokia.com&gt;
Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In case of errors during message composing msg should be freed after canceling.

Signed-off-by: Yuri Kululin &lt;ext-yuri.kululin@nokia.com&gt;
Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: Convert wiphy_debug macro to function</title>
<updated>2010-07-27T19:14:13+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2010-07-26T21:40:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=073730d771d97bb5bbef080bd5d6d0a5af7cba7d'/>
<id>073730d771d97bb5bbef080bd5d6d0a5af7cba7d</id>
<content type='text'>
Save a few bytes of text

(allyesconfig)
$ size drivers/net/wireless/built-in.o*
   text	   data	    bss	    dec	    hex	filename
3924568	 100548	 871056	4896172	 4ab5ac	drivers/net/wireless/built-in.o.new
3926520	 100548	 871464	4898532	 4abee4	drivers/net/wireless/built-in.o.old

$ size net/wireless/core.o*
   text	   data	    bss	    dec	    hex	filename
  12843	    216	   3768	  16827	   41bb	net/wireless/core.o.new
  12328	    216	   3656	  16200	   3f48	net/wireless/core.o

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Save a few bytes of text

(allyesconfig)
$ size drivers/net/wireless/built-in.o*
   text	   data	    bss	    dec	    hex	filename
3924568	 100548	 871056	4896172	 4ab5ac	drivers/net/wireless/built-in.o.new
3926520	 100548	 871464	4898532	 4abee4	drivers/net/wireless/built-in.o.old

$ size net/wireless/core.o*
   text	   data	    bss	    dec	    hex	filename
  12843	    216	   3768	  16827	   41bb	net/wireless/core.o.new
  12328	    216	   3656	  16200	   3f48	net/wireless/core.o

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6</title>
<updated>2010-07-27T15:59:19+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2010-07-27T15:59:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=800f65bba8d2030b3fef62850e203f9f176625a8'/>
<id>800f65bba8d2030b3fef62850e203f9f176625a8</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-commands.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-commands.h
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix IBSS default management key</title>
<updated>2010-07-26T19:32:41+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-07-22T11:59:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3be61a3851c458fb4ce394645e26e8e9670c796a'/>
<id>3be61a3851c458fb4ce394645e26e8e9670c796a</id>
<content type='text'>
When wireless extensions are used to control
an encrypted IBSS, we erroneously can try to
set the default management key. Fix this.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When wireless extensions are used to control
an encrypted IBSS, we erroneously can try to
set the default management key. Fix this.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: remove unneeded variable from regulatory_hint_11d()</title>
<updated>2010-07-26T19:32:41+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>error27@gmail.com</email>
</author>
<published>2010-07-22T11:26:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f9f9b6e3e3128e2b4d01a6e5ed0bb73cbb9a0a37'/>
<id>f9f9b6e3e3128e2b4d01a6e5ed0bb73cbb9a0a37</id>
<content type='text'>
The "rd" variable isn't needed any more since 4f366c5dabcb
"wireless: only use alpha2 regulatory information from country IE"

Signed-off-by: Dan Carpenter &lt;error27@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The "rd" variable isn't needed any more since 4f366c5dabcb
"wireless: only use alpha2 regulatory information from country IE"

Signed-off-by: Dan Carpenter &lt;error27@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
