<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git/drivers/char/agp/generic.c, branch v4.1.21</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v4.1.21</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v4.1.21'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2015-01-29T02:37:41+00:00</updated>
<entry>
<title>agp: change agp_free_page_array to use kvfree</title>
<updated>2015-01-29T02:37:41+00:00</updated>
<author>
<name>Wang, Yalin</name>
<email>Yalin.Wang@sonymobile.com</email>
</author>
<published>2015-01-28T05:57:34+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e410055331c2f474872b364dce3d4042418e892b'/>
<id>urn:sha1:e410055331c2f474872b364dce3d4042418e892b</id>
<content type='text'>
Change agp_free_page_array to use kvfree function,
remove the duplicated code.

Signed-off-by: Yalin Wang &lt;yalin.wang@sonymobile.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>drivers/char: delete non-required instances of include &lt;linux/init.h&gt;</title>
<updated>2014-02-07T23:10:19+00:00</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2014-01-21T21:22:59+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=4c020b032b8a15966e1207b71144ffbb75697e29'/>
<id>urn:sha1:4c020b032b8a15966e1207b71144ffbb75697e29</id>
<content type='text'>
None of these files are actually using any __init type directives
and hence don't need to include &lt;linux/init.h&gt;.  Most are just a
left over from __devinit and __cpuinit removal, or simply due to
code getting copied from one driver to the next.

Cc: David Airlie &lt;airlied@linux.ie&gt;
Cc: Matt Mackall &lt;mpm@selenic.com&gt;
Cc: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Cc: Kukjin Kim &lt;kgene.kim@samsung.com&gt;
Cc: Corey Minyard &lt;minyard@acm.org&gt;
Cc: Chris Metcalf &lt;cmetcalf@tilera.com&gt;
Cc: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: Peter Huewe &lt;peterhuewe@gmx.de&gt;
Cc: Ashley Lai &lt;ashley@ashleylai.com&gt;
Cc: Marcel Selhorst &lt;tpmdd@selhorst.net&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>agp: Support 64-bit APBASE</title>
<updated>2014-01-07T00:49:22+00:00</updated>
<author>
<name>Bjorn Helgaas</name>
<email>bhelgaas@google.com</email>
</author>
<published>2014-01-04T01:26:58+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e501b3d87f003dfad8fcbd0f55ae17ea52495a56'/>
<id>urn:sha1:e501b3d87f003dfad8fcbd0f55ae17ea52495a56</id>
<content type='text'>
Per the AGP 3.0 spec, APBASE is a standard PCI BAR and may be either 32
bits or 64 bits wide.  Many drivers read APBASE directly, but they only
handled 32-bit BARs.

The PCI core reads APBASE at enumeration-time.  Use pci_bus_address()
instead of reading it again in the driver.  This works correctly for both
32-bit and 64-bit BARs.

Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Reviewed-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;</content>
</entry>
<entry>
<title>agp: Use u32 __iomem annotation to silence sparse warning.</title>
<updated>2012-04-12T16:56:21+00:00</updated>
<author>
<name>Santosh Nayak</name>
<email>santoshprasadnayak@gmail.com</email>
</author>
<published>2012-04-05T06:01:44+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=ae85226ebe474c9ecfc257191edca184b70ffbc2'/>
<id>urn:sha1:ae85226ebe474c9ecfc257191edca184b70ffbc2</id>
<content type='text'>
Replace "void *" by "u32 __iomem *" to silence sparse warning.

Signed-off-by: Santosh Nayak &lt;santoshprasadnayak@gmail.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>agp: Remove 'break' after 'return' statement.</title>
<updated>2012-04-12T16:56:17+00:00</updated>
<author>
<name>Santosh Nayak</name>
<email>santoshprasadnayak@gmail.com</email>
</author>
<published>2012-04-05T06:01:08+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=971ca4717830c03a50e1ad9993c85601a0496de7'/>
<id>urn:sha1:971ca4717830c03a50e1ad9993c85601a0496de7</id>
<content type='text'>
'break' is unnecessary after 'return' statement.
Remove all such 'break' as clean up.

Signed-off-by: Santosh Nayak &lt;santoshprasadnayak@gmail.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>agp: Fix multi-line warning message whitespace</title>
<updated>2012-01-06T09:32:02+00:00</updated>
<author>
<name>Tormod Volden</name>
<email>debian.tormod@gmail.com</email>
</author>
<published>2012-01-05T23:16:26+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e11d0b87cde80745afe4712a19cd37bca9924a5b'/>
<id>urn:sha1:e11d0b87cde80745afe4712a19cd37bca9924a5b</id>
<content type='text'>
Signed-off-by: Tormod Volden &lt;debian.tormod@gmail.com&gt;
Reviewed-by: Corbin Simpson &lt;MostAwesomeDude@gmail.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>agp: fix arbitrary kernel memory writes</title>
<updated>2011-04-21T02:16:55+00:00</updated>
<author>
<name>Vasiliy Kulikov</name>
<email>segoon@openwall.com</email>
</author>
<published>2011-04-14T16:55:16+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=194b3da873fd334ef183806db751473512af29ce'/>
<id>urn:sha1:194b3da873fd334ef183806db751473512af29ce</id>
<content type='text'>
pg_start is copied from userspace on AGPIOC_BIND and AGPIOC_UNBIND ioctl
cmds of agp_ioctl() and passed to agpioc_bind_wrap().  As said in the
comment, (pg_start + mem-&gt;page_count) may wrap in case of AGPIOC_BIND,
and it is not checked at all in case of AGPIOC_UNBIND.  As a result, user
with sufficient privileges (usually "video" group) may generate either
local DoS or privilege escalation.

Signed-off-by: Vasiliy Kulikov &lt;segoon@openwall.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>agp: fix OOM and buffer overflow</title>
<updated>2011-04-21T01:51:04+00:00</updated>
<author>
<name>Vasiliy Kulikov</name>
<email>segoon@openwall.com</email>
</author>
<published>2011-04-14T16:55:19+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=b522f02184b413955f3bc952e3776ce41edc6355'/>
<id>urn:sha1:b522f02184b413955f3bc952e3776ce41edc6355</id>
<content type='text'>
page_count is copied from userspace.  agp_allocate_memory() tries to
check whether this number is too big, but doesn't take into account the
wrap case.  Also agp_create_user_memory() doesn't check whether
alloc_size is calculated from num_agp_pages variable without overflow.
This may lead to allocation of too small buffer with following buffer
overflow.

Another problem in agp code is not addressed in the patch - kernel memory
exhaustion (AGPIOC_RESERVE and AGPIOC_ALLOCATE ioctls).  It is not checked
whether requested pid is a pid of the caller (no check in agpioc_reserve_wrap()).
Each allocation is limited to 16KB, though, there is no per-process limit.
This might lead to OOM situation, which is not even solved in case of the
caller death by OOM killer - the memory is allocated for another (faked) process.

Signed-off-by: Vasiliy Kulikov &lt;segoon@openwall.com&gt;
Signed-off-by: Dave Airlie &lt;airlied@redhat.com&gt;
</content>
</entry>
<entry>
<title>agp: kill agp_rebind_memory</title>
<updated>2010-11-23T20:14:46+00:00</updated>
<author>
<name>Daniel Vetter</name>
<email>daniel.vetter@ffwll.ch</email>
</author>
<published>2010-11-05T21:27:10+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=cb16b67b5cb33b7d6732e0c416d29d933eea13ce'/>
<id>urn:sha1:cb16b67b5cb33b7d6732e0c416d29d933eea13ce</id>
<content type='text'>
Its only user, intel-gtt.c is now gone.

Cc: Dave Airlie &lt;airlied@gmail.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
</content>
</entry>
<entry>
<title>agp: kill agp_flush_chipset and corresponding ioctl</title>
<updated>2010-11-23T20:14:45+00:00</updated>
<author>
<name>Daniel Vetter</name>
<email>daniel.vetter@ffwll.ch</email>
</author>
<published>2010-11-05T17:40:56+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f050a8abbda0efcd597c6b1825e3b9ce4d613383'/>
<id>urn:sha1:f050a8abbda0efcd597c6b1825e3b9ce4d613383</id>
<content type='text'>
The intel drm calls the chipset functions now directly. Userspace
never called the corresponding ioctl, hence it can be killed, too.

Cc: Dave Airlie &lt;airlied@gmail.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
</content>
</entry>
</feed>
