<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git, branch v3.12.38</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.12.38</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.12.38'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2015-02-16T15:15:42+00:00</updated>
<entry>
<title>Linux 3.12.38</title>
<updated>2015-02-16T15:15:42+00:00</updated>
<author>
<name>Jiri Slaby</name>
<email>jslaby@suse.cz</email>
</author>
<published>2015-02-16T15:15:42+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=22ccf8f1a5450ac5a6bc2bb519699838017ce1ea'/>
<id>urn:sha1:22ccf8f1a5450ac5a6bc2bb519699838017ce1ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>iscsi_ibft: Fix finding Broadcom specific ibft sign</title>
<updated>2015-02-16T15:11:00+00:00</updated>
<author>
<name>Vikas Chaudhary</name>
<email>vikas.chaudhary@qlogic.com</email>
</author>
<published>2014-05-13T11:41:32+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=d2d5ce5c2a6d667203a1fc8726925e67d871c92f'/>
<id>urn:sha1:d2d5ce5c2a6d667203a1fc8726925e67d871c92f</id>
<content type='text'>
commit 629c27aa0c930b9c67188cfc625bf6cdd2af6764 upstream.

Search for Broadcom specific ibft sign "BIFT"
along with other possible values on UEFI

This patch is fix for regression introduced in
“935a9fee51c945b8942be2d7b4bae069167b4886”.
https://lkml.org/lkml/2011/12/16/353

This impacts Broadcom CNA for iSCSI Boot on UEFI platform.

Signed-off-by: Vikas Chaudhary &lt;vikas.chaudhary@qlogic.com&gt;
Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Acked-by: Mike Christie &lt;michaelc@cs.wisc.edu&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>ACPI: Fix bug when ACPI reset register is implemented in system memory</title>
<updated>2015-02-16T15:11:00+00:00</updated>
<author>
<name>Randy Wright</name>
<email>rwright@hp.com</email>
</author>
<published>2014-06-04T15:55:59+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=526d09dfa647cacd71d7271bb30bf058f6cf72a2'/>
<id>urn:sha1:526d09dfa647cacd71d7271bb30bf058f6cf72a2</id>
<content type='text'>
commit a4714a898e85205e1118ec923cde43d88eb105f6 upstream.

Use acpi_os_map_generic_address to pre-map the reset register if it is
memory mapped, thereby preventing the BUG_ON() in line 1319 of
mm/vmalloc.c from triggering during panic-triggered reboots.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=77131
Signed-off-by: Randy Wright &lt;rwright@hp.com&gt;
Signed-off-by: David E. Box &lt;david.e.box@linux.intel.com&gt;
[rjw: Changelog, simplified code]
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;

Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>x86: UV BAU: Avoid NULL pointer reference in ptc_seq_show</title>
<updated>2015-02-16T15:10:59+00:00</updated>
<author>
<name>James Custer</name>
<email>jcuster@sgi.com</email>
</author>
<published>2014-11-02T18:16:39+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=18f12cbe86a5d6d4afc710cd3e3e064898808738'/>
<id>urn:sha1:18f12cbe86a5d6d4afc710cd3e3e064898808738</id>
<content type='text'>
commit fa2a79ce6aef5de35a4d50487da35deb6b634944 upstream.

In init_per_cpu(), when get_cpu_topology() fails, init_per_cpu_tunables()
is not called afterwards. This means that bau_control-&gt;statp is NULL.
If a user then reads /proc/sgi_uv/ptc_statistics ptc_seq_show() references
a NULL pointer. Therefore, since uv_bau_init calls set_bau_off when
init_per_cpu() fails, we add code that detects when the bau is off in
ptc_seq_show() to avoid referencing a NULL pointer.

Signed-off-by: James Custer &lt;jcuster@sgi.com&gt;
Cc: Russ Anderson &lt;rja@sgi.com&gt;
Link: http://lkml.kernel.org/r/1414952199-185319-2-git-send-email-jcuster@sgi.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>SELinux: fix selinuxfs policy file on big endian systems</title>
<updated>2015-02-16T15:10:58+00:00</updated>
<author>
<name>Eric Paris</name>
<email>eparis@redhat.com</email>
</author>
<published>2013-07-23T21:38:42+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=ebf1059f4bc4e12a6878c44137f95fafc1fe55b3'/>
<id>urn:sha1:ebf1059f4bc4e12a6878c44137f95fafc1fe55b3</id>
<content type='text'>
commit b138004ea0382bdc6d02599c39392651b4f63889 upstream.

The /sys/fs/selinux/policy file is not valid on big endian systems like
ppc64 or s390.  Let's see why:

static int hashtab_cnt(void *key, void *data, void *ptr)
{
	int *cnt = ptr;
	*cnt = *cnt + 1;

	return 0;
}

static int range_write(struct policydb *p, void *fp)
{
	size_t nel;
[...]
	/* count the number of entries in the hashtab */
	nel = 0;
	rc = hashtab_map(p-&gt;range_tr, hashtab_cnt, &amp;nel);
	if (rc)
		return rc;
	buf[0] = cpu_to_le32(nel);
	rc = put_entry(buf, sizeof(u32), 1, fp);

So size_t is 64 bits.  But then we pass a pointer to it as we do to
hashtab_cnt.  hashtab_cnt thinks it is a 32 bit int and only deals with
the first 4 bytes.  On x86_64 which is little endian, those first 4
bytes and the least significant, so this works out fine.  On ppc64/s390
those first 4 bytes of memory are the high order bits.  So at the end of
the call to hashtab_map nel has a HUGE number.  But the least
significant 32 bits are all 0's.

We then pass that 64 bit number to cpu_to_le32() which happily truncates
it to a 32 bit number and does endian swapping.  But the low 32 bits are
all 0's.  So no matter how many entries are in the hashtab, big endian
systems always say there are 0 entries because I screwed up the
counting.

The fix is easy.  Use a 32 bit int, as the hashtab_cnt expects, for nel.

Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
Signed-off-by: Paul Moore &lt;pmoore@redhat.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>dm: do not call dm_sync_table() when creating new devices</title>
<updated>2015-02-16T15:10:58+00:00</updated>
<author>
<name>Hannes Reinecke</name>
<email>hare@suse.de</email>
</author>
<published>2014-11-05T13:35:50+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=dac05cc7cc144635946cdc6ed38a6734424c2683'/>
<id>urn:sha1:dac05cc7cc144635946cdc6ed38a6734424c2683</id>
<content type='text'>
commit 41abc4e1af369bb5438eaee398e3beee690cc8ca upstream.

When creating new devices dm_sync_table() calls
synchronize_rcu_expedited(), causing _all_ pending RCU pointers to be
flushed. This causes a latency overhead that is especially noticeable
when creating lots of devices.

And all of this is pointless as there are no old maps to be
disconnected, and hence no stale pointers which would need to be
cleared up.

Signed-off-by: Hannes Reinecke &lt;hare@suse.de&gt;
Reviewed-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;
Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>parport: parport_pc, do not remove parent devices early</title>
<updated>2015-02-16T15:10:57+00:00</updated>
<author>
<name>Jiri Slaby</name>
<email>jslaby@suse.cz</email>
</author>
<published>2014-11-21T09:05:09+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=677984600a8de443ca9596998e96d70dfc8f5525'/>
<id>urn:sha1:677984600a8de443ca9596998e96d70dfc8f5525</id>
<content type='text'>
commit 91905b6f4afe51e23a3f58df93e4cdc5e49cf40c upstream.

When the parport_pc module is removed from the system, all parport
devices are iterated in parport_pc_exit and removed by a call to
parport_pc_unregister_port. Note that some parport devices have its
'struct device' parent, known as port-&gt;dev.  And when port-&gt;dev is a
platform device, it is destroyed in parport_pc_exit too.

Now, when parport_pc_unregister_port is called for a going port,
drv-&gt;detach(port) is called for every parport driver in the system.
ppdev can be one of them. ppdev's detach() tears down its per-port
sysfs directory, which established port-&gt;dev as a parent earlier.

But since parport_pc_exit kills port-&gt;dev parents before unregisters
ports proper, ppdev's sysfs directory has no living parent anymore.
This results in the following warning:

WARNING: CPU: 1 PID: 785 at fs/sysfs/group.c:219 sysfs_remove_group+0x9b/0xa0
sysfs group ffffffff81c69e20 not found for kobject 'parport1'
Modules linked in: parport_pc(E-) ppdev(E) [last unloaded: ppdev]
CPU: 1 PID: 785 Comm: rmmod Tainted: G        W   E  3.18.0-rc5-next-20141120+ #824
...
Call Trace:
...
 [&lt;ffffffff810aff76&gt;] warn_slowpath_fmt+0x46/0x50
 [&lt;ffffffff8123d81b&gt;] sysfs_remove_group+0x9b/0xa0
 [&lt;ffffffff814c27e7&gt;] dpm_sysfs_remove+0x57/0x60
 [&lt;ffffffff814b6ac9&gt;] device_del+0x49/0x240
 [&lt;ffffffff814b6ce2&gt;] device_unregister+0x22/0x70
 [&lt;ffffffff814b6dac&gt;] device_destroy+0x3c/0x50
 [&lt;ffffffffc012209a&gt;] pp_detach+0x4a/0x60 [ppdev]
 [&lt;ffffffff814b32dd&gt;] parport_remove_port+0x11d/0x150
 [&lt;ffffffffc0137328&gt;] parport_pc_unregister_port+0x28/0xf0 [parport_pc]
 [&lt;ffffffffc0138c0e&gt;] parport_pc_exit+0x76/0x468 [parport_pc]
 [&lt;ffffffff81128dbc&gt;] SyS_delete_module+0x18c/0x230

It is also easily reproducible on qemu with two dummy ports '-parallel
/dev/null -parallel /dev/null'.

So switch the order of killing the two structures. But since port is
freed by parport_pc_unregister_port, we have to remember port-&gt;dev
in a local variable.

Perhaps nothing worse than the warning happens thanks to the device
refcounting. We *should* be on the safe side.

Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Reviewed-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Tested-by: Martin Pluskal &lt;mpluskal@suse.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>x86/early quirk: use gen6 stolen detection for VLV</title>
<updated>2015-02-16T15:10:57+00:00</updated>
<author>
<name>Jesse Barnes</name>
<email>jbarnes@virtuousgeek.org</email>
</author>
<published>2013-11-12T18:17:39+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=6b5b362832201d2629202506896d45bced67657a'/>
<id>urn:sha1:6b5b362832201d2629202506896d45bced67657a</id>
<content type='text'>
commit 7bd40c16ccb2cb6877dd00b0e66249c171e6fa43 upstream.

We've always been able to use either method on VLV, but it appears more
recent BIOSes only support the gen6 method, so switch over to that.

References: https://bugs.freedesktop.org/show_bug.cgi?id=71370
Signed-off-by: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
Reviewed-by: Ville Syrjälä &lt;ville.syrjala@linux.intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>udf: Check component length before reading it</title>
<updated>2015-02-16T15:10:56+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2014-12-19T13:27:55+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=c94011ac6ae0bbfc8966ec256ad7b1bf30feaeec'/>
<id>urn:sha1:c94011ac6ae0bbfc8966ec256ad7b1bf30feaeec</id>
<content type='text'>
commit e237ec37ec154564f8690c5bd1795339955eeef9 upstream.

Check that length specified in a component of a symlink fits in the
input buffer we are reading. Also properly ignore component length for
component types that do not use it. Otherwise we read memory after end
of buffer for corrupted udf image.

Reported-by: Carl Henrik Lunde &lt;chlunde@ping.uio.no&gt;
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>udf: Check path length when reading symlink</title>
<updated>2015-02-16T15:10:55+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2014-12-18T21:37:50+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=ebfce5ccba81292a5e34710a602117769118fa9a'/>
<id>urn:sha1:ebfce5ccba81292a5e34710a602117769118fa9a</id>
<content type='text'>
commit 0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14 upstream.

Symlink reading code does not check whether the resulting path fits into
the page provided by the generic code. This isn't as easy as just
checking the symlink size because of various encoding conversions we
perform on path. So we have to check whether there is still enough space
in the buffer on the fly.

CC: stable@vger.kernel.org
Reported-by: Carl Henrik Lunde &lt;chlunde@ping.uio.no&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
</feed>
