<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/drivers/clk/sunxi/clk-usb.c, branch master</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=master</id>
<link rel='self' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2026-02-22T01:09:51+00:00</updated>
<entry>
<title>Convert 'alloc_obj' family to use the new default GFP_KERNEL argument</title>
<updated>2026-02-22T01:09:51+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2026-02-22T00:37:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bf4afc53b77aeaa48b5409da5c8da6bb4eff7f43'/>
<id>urn:sha1:bf4afc53b77aeaa48b5409da5c8da6bb4eff7f43</id>
<content type='text'>
This was done entirely with mindless brute force, using

    git grep -l '\&lt;k[vmz]*alloc_objs*(.*, GFP_KERNEL)' |
        xargs sed -i 's/\(alloc_objs*(.*\), GFP_KERNEL)/\1)/'

to convert the new alloc_obj() users that had a simple GFP_KERNEL
argument to just drop that argument.

Note that due to the extreme simplicity of the scripting, any slightly
more complex cases spread over multiple lines would not be triggered:
they definitely exist, but this covers the vast bulk of the cases, and
the resulting diff is also then easier to check automatically.

For the same reason the 'flex' versions will be done as a separate
conversion.

Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>treewide: Replace kmalloc with kmalloc_obj for non-scalar types</title>
<updated>2026-02-21T09:02:28+00:00</updated>
<author>
<name>Kees Cook</name>
<email>kees@kernel.org</email>
</author>
<published>2026-02-21T07:49:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=69050f8d6d075dc01af7a5f2f550a8067510366f'/>
<id>urn:sha1:69050f8d6d075dc01af7a5f2f550a8067510366f</id>
<content type='text'>
This is the result of running the Coccinelle script from
scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to
avoid scalar types (which need careful case-by-case checking), and
instead replace kmalloc-family calls that allocate struct or union
object instances:

Single allocations:	kmalloc(sizeof(TYPE), ...)
are replaced with:	kmalloc_obj(TYPE, ...)

Array allocations:	kmalloc_array(COUNT, sizeof(TYPE), ...)
are replaced with:	kmalloc_objs(TYPE, COUNT, ...)

Flex array allocations:	kmalloc(struct_size(PTR, FAM, COUNT), ...)
are replaced with:	kmalloc_flex(*PTR, FAM, COUNT, ...)

(where TYPE may also be *VAR)

The resulting allocations no longer return "void *", instead returning
"TYPE *".

Signed-off-by: Kees Cook &lt;kees@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: sunxi: usb: fix kernel-doc warnings</title>
<updated>2024-01-23T20:47:54+00:00</updated>
<author>
<name>Randy Dunlap</name>
<email>rdunlap@infradead.org</email>
</author>
<published>2024-01-21T05:18:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=aed6d713187b8c47af40c0b39462e21e2737e307'/>
<id>urn:sha1:aed6d713187b8c47af40c0b39462e21e2737e307</id>
<content type='text'>
Move the function description comment to immediately above the
function implementation, the add function parameter descriptions to
prevent kernel-doc warnings:

clk-usb.c:80: warning: expecting prototype for sunxi_usb_clk_setup(). Prototype was for SUNXI_USB_MAX_SIZE() instead
clk-usb.c:91: warning: Function parameter or struct member 'node' not described in 'sunxi_usb_clk_setup'
clk-usb.c:91: warning: Function parameter or struct member 'data' not described in 'sunxi_usb_clk_setup'
clk-usb.c:91: warning: Function parameter or struct member 'lock' not described in 'sunxi_usb_clk_setup'

Signed-off-by: Randy Dunlap &lt;rdunlap@infradead.org&gt;
Cc: Emilio López &lt;emilio@elopez.com.ar&gt;
Cc: Michael Turquette &lt;mturquette@baylibre.com&gt;
Cc: Stephen Boyd &lt;sboyd@kernel.org&gt;
Cc:  &lt;linux-clk@vger.kernel.org&gt;
Cc: Chen-Yu Tsai &lt;wens@csie.org&gt;
Cc: Jernej Skrabec &lt;jernej.skrabec@gmail.com&gt;
Cc: Samuel Holland &lt;samuel@sholland.org&gt;
Cc:  &lt;linux-arm-kernel@lists.infradead.org&gt;
Cc:  &lt;linux-sunxi@lists.linux.dev&gt;
Reviewed-by: Andre Przywara &lt;andre.przywara@arm.com&gt;
Acked-by: Jernej Skrabec &lt;jernej.skrabec@gmail.com&gt;
Link: https://lore.kernel.org/r/20240121051858.17647-1-rdunlap@infradead.org
Signed-off-by: Jernej Skrabec &lt;jernej.skrabec@gmail.com&gt;
</content>
</entry>
<entry>
<title>clk: sunxi: Demote non-conformant kernel-doc headers</title>
<updated>2021-03-08T15:47:55+00:00</updated>
<author>
<name>Lee Jones</name>
<email>lee.jones@linaro.org</email>
</author>
<published>2021-03-03T14:24:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=dcc354572d094b9dcf7c532c7263ab55dd376587'/>
<id>urn:sha1:dcc354572d094b9dcf7c532c7263ab55dd376587</id>
<content type='text'>
Headers must describe their parameters.

Fixes the following W=1 kernel build warning(s):

 drivers/clk/sunxi/clk-sun9i-core.c:27: warning: Function parameter or member 'req' not described in 'sun9i_a80_get_pll4_factors'
 drivers/clk/sunxi/clk-sun9i-core.c:100: warning: Function parameter or member 'req' not described in 'sun9i_a80_get_gt_factors'
 drivers/clk/sunxi/clk-sun9i-core.c:155: warning: Function parameter or member 'req' not described in 'sun9i_a80_get_ahb_factors'
 drivers/clk/sunxi/clk-sun9i-core.c:235: warning: Function parameter or member 'req' not described in 'sun9i_a80_get_apb1_factors'
 drivers/clk/sunxi/clk-usb.c:22: warning: cannot understand function prototype: 'struct usb_reset_data '
 drivers/clk/sunxi/clk-sun6i-ar100.c:26: warning: Function parameter or member 'req' not described in 'sun6i_get_ar100_factors'

Cc: "Emilio López" &lt;emilio@elopez.com.ar&gt;
Cc: Michael Turquette &lt;mturquette@baylibre.com&gt;
Cc: Stephen Boyd &lt;sboyd@kernel.org&gt;
Cc: Maxime Ripard &lt;mripard@kernel.org&gt;
Cc: Chen-Yu Tsai &lt;wens@csie.org&gt;
Cc: Jernej Skrabec &lt;jernej.skrabec@siol.net&gt;
Cc: Boris BREZILLON &lt;boris.brezillon@free-electrons.com&gt;
Cc: linux-clk@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Acked-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/r/20210303142430.3168703-1-lee.jones@linaro.org
</content>
</entry>
<entry>
<title>treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157</title>
<updated>2019-05-30T18:26:37+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2019-05-27T06:55:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c942fddf8793b2013be8c901b47d0a8dc02bf99f'/>
<id>urn:sha1:c942fddf8793b2013be8c901b47d0a8dc02bf99f</id>
<content type='text'>
Based on 3 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option any later version this program is distributed in the
  hope that it will be useful but without any warranty without even
  the implied warranty of merchantability or fitness for a particular
  purpose see the gnu general public license for more details

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option any later version [author] [kishon] [vijay] [abraham]
  [i] [kishon]@[ti] [com] this program is distributed in the hope that
  it will be useful but without any warranty without even the implied
  warranty of merchantability or fitness for a particular purpose see
  the gnu general public license for more details

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license as published by
  the free software foundation either version 2 of the license or at
  your option any later version [author] [graeme] [gregory]
  [gg]@[slimlogic] [co] [uk] [author] [kishon] [vijay] [abraham] [i]
  [kishon]@[ti] [com] [based] [on] [twl6030]_[usb] [c] [author] [hema]
  [hk] [hemahk]@[ti] [com] this program is distributed in the hope
  that it will be useful but without any warranty without even the
  implied warranty of merchantability or fitness for a particular
  purpose see the gnu general public license for more details

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-or-later

has been chosen to replace the boilerplate/reference in 1105 file(s).

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reviewed-by: Allison Randal &lt;allison@lohutok.net&gt;
Reviewed-by: Richard Fontana &lt;rfontana@redhat.com&gt;
Reviewed-by: Kate Stewart &lt;kstewart@linuxfoundation.org&gt;
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190527070033.202006027@linutronix.de
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>clk: Remove io.h from clk-provider.h</title>
<updated>2019-05-15T20:21:37+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@kernel.org</email>
</author>
<published>2019-04-18T22:20:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=62e59c4e69b3cdbad67e3c2d49e4df4cfe1679e3'/>
<id>urn:sha1:62e59c4e69b3cdbad67e3c2d49e4df4cfe1679e3</id>
<content type='text'>
Now that we've gotten rid of clk_readl() we can remove io.h from the
clk-provider header and push out the io.h include to any code that isn't
already including the io.h header but using things like readl/writel,
etc.

Found with this grep:

  git grep -l clk-provider.h | grep '.c$' | xargs git grep -L 'linux/io.h' | \
  	xargs git grep -l \
	-e '\&lt;__iowrite32_copy\&gt;' --or \
	-e '\&lt;__ioread32_copy\&gt;' --or \
	-e '\&lt;__iowrite64_copy\&gt;' --or \
	-e '\&lt;ioremap_page_range\&gt;' --or \
	-e '\&lt;ioremap_huge_init\&gt;' --or \
	-e '\&lt;arch_ioremap_pud_supported\&gt;' --or \
	-e '\&lt;arch_ioremap_pmd_supported\&gt;' --or \
	-e '\&lt;devm_ioport_map\&gt;' --or \
	-e '\&lt;devm_ioport_unmap\&gt;' --or \
	-e '\&lt;IOMEM_ERR_PTR\&gt;' --or \
	-e '\&lt;devm_ioremap\&gt;' --or \
	-e '\&lt;devm_ioremap_nocache\&gt;' --or \
	-e '\&lt;devm_ioremap_wc\&gt;' --or \
	-e '\&lt;devm_iounmap\&gt;' --or \
	-e '\&lt;devm_ioremap_release\&gt;' --or \
	-e '\&lt;devm_memremap\&gt;' --or \
	-e '\&lt;devm_memunmap\&gt;' --or \
	-e '\&lt;__devm_memremap_pages\&gt;' --or \
	-e '\&lt;pci_remap_cfgspace\&gt;' --or \
	-e '\&lt;arch_has_dev_port\&gt;' --or \
	-e '\&lt;arch_phys_wc_add\&gt;' --or \
	-e '\&lt;arch_phys_wc_del\&gt;' --or \
	-e '\&lt;memremap\&gt;' --or \
	-e '\&lt;memunmap\&gt;' --or \
	-e '\&lt;arch_io_reserve_memtype_wc\&gt;' --or \
	-e '\&lt;arch_io_free_memtype_wc\&gt;' --or \
	-e '\&lt;__io_aw\&gt;' --or \
	-e '\&lt;__io_pbw\&gt;' --or \
	-e '\&lt;__io_paw\&gt;' --or \
	-e '\&lt;__io_pbr\&gt;' --or \
	-e '\&lt;__io_par\&gt;' --or \
	-e '\&lt;__raw_readb\&gt;' --or \
	-e '\&lt;__raw_readw\&gt;' --or \
	-e '\&lt;__raw_readl\&gt;' --or \
	-e '\&lt;__raw_readq\&gt;' --or \
	-e '\&lt;__raw_writeb\&gt;' --or \
	-e '\&lt;__raw_writew\&gt;' --or \
	-e '\&lt;__raw_writel\&gt;' --or \
	-e '\&lt;__raw_writeq\&gt;' --or \
	-e '\&lt;readb\&gt;' --or \
	-e '\&lt;readw\&gt;' --or \
	-e '\&lt;readl\&gt;' --or \
	-e '\&lt;readq\&gt;' --or \
	-e '\&lt;writeb\&gt;' --or \
	-e '\&lt;writew\&gt;' --or \
	-e '\&lt;writel\&gt;' --or \
	-e '\&lt;writeq\&gt;' --or \
	-e '\&lt;readb_relaxed\&gt;' --or \
	-e '\&lt;readw_relaxed\&gt;' --or \
	-e '\&lt;readl_relaxed\&gt;' --or \
	-e '\&lt;readq_relaxed\&gt;' --or \
	-e '\&lt;writeb_relaxed\&gt;' --or \
	-e '\&lt;writew_relaxed\&gt;' --or \
	-e '\&lt;writel_relaxed\&gt;' --or \
	-e '\&lt;writeq_relaxed\&gt;' --or \
	-e '\&lt;readsb\&gt;' --or \
	-e '\&lt;readsw\&gt;' --or \
	-e '\&lt;readsl\&gt;' --or \
	-e '\&lt;readsq\&gt;' --or \
	-e '\&lt;writesb\&gt;' --or \
	-e '\&lt;writesw\&gt;' --or \
	-e '\&lt;writesl\&gt;' --or \
	-e '\&lt;writesq\&gt;' --or \
	-e '\&lt;inb\&gt;' --or \
	-e '\&lt;inw\&gt;' --or \
	-e '\&lt;inl\&gt;' --or \
	-e '\&lt;outb\&gt;' --or \
	-e '\&lt;outw\&gt;' --or \
	-e '\&lt;outl\&gt;' --or \
	-e '\&lt;inb_p\&gt;' --or \
	-e '\&lt;inw_p\&gt;' --or \
	-e '\&lt;inl_p\&gt;' --or \
	-e '\&lt;outb_p\&gt;' --or \
	-e '\&lt;outw_p\&gt;' --or \
	-e '\&lt;outl_p\&gt;' --or \
	-e '\&lt;insb\&gt;' --or \
	-e '\&lt;insw\&gt;' --or \
	-e '\&lt;insl\&gt;' --or \
	-e '\&lt;outsb\&gt;' --or \
	-e '\&lt;outsw\&gt;' --or \
	-e '\&lt;outsl\&gt;' --or \
	-e '\&lt;insb_p\&gt;' --or \
	-e '\&lt;insw_p\&gt;' --or \
	-e '\&lt;insl_p\&gt;' --or \
	-e '\&lt;outsb_p\&gt;' --or \
	-e '\&lt;outsw_p\&gt;' --or \
	-e '\&lt;outsl_p\&gt;' --or \
	-e '\&lt;ioread8\&gt;' --or \
	-e '\&lt;ioread16\&gt;' --or \
	-e '\&lt;ioread32\&gt;' --or \
	-e '\&lt;ioread64\&gt;' --or \
	-e '\&lt;iowrite8\&gt;' --or \
	-e '\&lt;iowrite16\&gt;' --or \
	-e '\&lt;iowrite32\&gt;' --or \
	-e '\&lt;iowrite64\&gt;' --or \
	-e '\&lt;ioread16be\&gt;' --or \
	-e '\&lt;ioread32be\&gt;' --or \
	-e '\&lt;ioread64be\&gt;' --or \
	-e '\&lt;iowrite16be\&gt;' --or \
	-e '\&lt;iowrite32be\&gt;' --or \
	-e '\&lt;iowrite64be\&gt;' --or \
	-e '\&lt;ioread8_rep\&gt;' --or \
	-e '\&lt;ioread16_rep\&gt;' --or \
	-e '\&lt;ioread32_rep\&gt;' --or \
	-e '\&lt;ioread64_rep\&gt;' --or \
	-e '\&lt;iowrite8_rep\&gt;' --or \
	-e '\&lt;iowrite16_rep\&gt;' --or \
	-e '\&lt;iowrite32_rep\&gt;' --or \
	-e '\&lt;iowrite64_rep\&gt;' --or \
	-e '\&lt;__io_virt\&gt;' --or \
	-e '\&lt;pci_iounmap\&gt;' --or \
	-e '\&lt;virt_to_phys\&gt;' --or \
	-e '\&lt;phys_to_virt\&gt;' --or \
	-e '\&lt;ioremap_uc\&gt;' --or \
	-e '\&lt;ioremap\&gt;' --or \
	-e '\&lt;__ioremap\&gt;' --or \
	-e '\&lt;iounmap\&gt;' --or \
	-e '\&lt;ioremap\&gt;' --or \
	-e '\&lt;ioremap_nocache\&gt;' --or \
	-e '\&lt;ioremap_uc\&gt;' --or \
	-e '\&lt;ioremap_wc\&gt;' --or \
	-e '\&lt;ioremap_wc\&gt;' --or \
	-e '\&lt;ioremap_wt\&gt;' --or \
	-e '\&lt;ioport_map\&gt;' --or \
	-e '\&lt;ioport_unmap\&gt;' --or \
	-e '\&lt;ioport_map\&gt;' --or \
	-e '\&lt;ioport_unmap\&gt;' --or \
	-e '\&lt;xlate_dev_kmem_ptr\&gt;' --or \
	-e '\&lt;xlate_dev_mem_ptr\&gt;' --or \
	-e '\&lt;unxlate_dev_mem_ptr\&gt;' --or \
	-e '\&lt;virt_to_bus\&gt;' --or \
	-e '\&lt;bus_to_virt\&gt;' --or \
	-e '\&lt;memset_io\&gt;' --or \
	-e '\&lt;memcpy_fromio\&gt;' --or \
	-e '\&lt;memcpy_toio\&gt;'

I also reordered a couple includes when they weren't alphabetical and
removed clk.h from kona, replacing it with clk-provider.h because
that driver doesn't use clk consumer APIs.

Acked-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Cc: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Acked-by: Tero Kristo &lt;t-kristo@ti.com&gt;
Acked-by: Sekhar Nori &lt;nsekhar@ti.com&gt;
Cc: Krzysztof Kozlowski &lt;krzk@kernel.org&gt;
Acked-by: Mark Brown &lt;broonie@kernel.org&gt;
Cc: Chris Zankel &lt;chris@zankel.net&gt;
Acked-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
Acked-by: John Crispin &lt;john@phrozen.org&gt;
Acked-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
</content>
</entry>
<entry>
<title>treewide: kzalloc() -&gt; kcalloc()</title>
<updated>2018-06-12T23:19:22+00:00</updated>
<author>
<name>Kees Cook</name>
<email>keescook@chromium.org</email>
</author>
<published>2018-06-12T21:03:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=6396bb221514d2876fd6dc0aa2a1f240d99b37bb'/>
<id>urn:sha1:6396bb221514d2876fd6dc0aa2a1f240d99b37bb</id>
<content type='text'>
The kzalloc() function has a 2-factor argument form, kcalloc(). This
patch replaces cases of:

        kzalloc(a * b, gfp)

with:
        kcalloc(a * b, gfp)

as well as handling cases of:

        kzalloc(a * b * c, gfp)

with:

        kzalloc(array3_size(a, b, c), gfp)

as it's slightly less ugly than:

        kzalloc_array(array_size(a, b), c, gfp)

This does, however, attempt to ignore constant size factors like:

        kzalloc(4 * 1024, gfp)

though any constants defined via macros get caught up in the conversion.

Any factors with a sizeof() of "unsigned char", "char", and "u8" were
dropped, since they're redundant.

The Coccinelle script used for this was:

// Fix redundant parens around sizeof().
@@
type TYPE;
expression THING, E;
@@

(
  kzalloc(
-	(sizeof(TYPE)) * E
+	sizeof(TYPE) * E
  , ...)
|
  kzalloc(
-	(sizeof(THING)) * E
+	sizeof(THING) * E
  , ...)
)

// Drop single-byte sizes and redundant parens.
@@
expression COUNT;
typedef u8;
typedef __u8;
@@

(
  kzalloc(
-	sizeof(u8) * (COUNT)
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(__u8) * (COUNT)
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(char) * (COUNT)
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(unsigned char) * (COUNT)
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(u8) * COUNT
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(__u8) * COUNT
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(char) * COUNT
+	COUNT
  , ...)
|
  kzalloc(
-	sizeof(unsigned char) * COUNT
+	COUNT
  , ...)
)

// 2-factor product with sizeof(type/expression) and identifier or constant.
@@
type TYPE;
expression THING;
identifier COUNT_ID;
constant COUNT_CONST;
@@

(
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * (COUNT_ID)
+	COUNT_ID, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * COUNT_ID
+	COUNT_ID, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * (COUNT_CONST)
+	COUNT_CONST, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * COUNT_CONST
+	COUNT_CONST, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * (COUNT_ID)
+	COUNT_ID, sizeof(THING)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * COUNT_ID
+	COUNT_ID, sizeof(THING)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * (COUNT_CONST)
+	COUNT_CONST, sizeof(THING)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * COUNT_CONST
+	COUNT_CONST, sizeof(THING)
  , ...)
)

// 2-factor product, only identifiers.
@@
identifier SIZE, COUNT;
@@

- kzalloc
+ kcalloc
  (
-	SIZE * COUNT
+	COUNT, SIZE
  , ...)

// 3-factor product with 1 sizeof(type) or sizeof(expression), with
// redundant parens removed.
@@
expression THING;
identifier STRIDE, COUNT;
type TYPE;
@@

(
  kzalloc(
-	sizeof(TYPE) * (COUNT) * (STRIDE)
+	array3_size(COUNT, STRIDE, sizeof(TYPE))
  , ...)
|
  kzalloc(
-	sizeof(TYPE) * (COUNT) * STRIDE
+	array3_size(COUNT, STRIDE, sizeof(TYPE))
  , ...)
|
  kzalloc(
-	sizeof(TYPE) * COUNT * (STRIDE)
+	array3_size(COUNT, STRIDE, sizeof(TYPE))
  , ...)
|
  kzalloc(
-	sizeof(TYPE) * COUNT * STRIDE
+	array3_size(COUNT, STRIDE, sizeof(TYPE))
  , ...)
|
  kzalloc(
-	sizeof(THING) * (COUNT) * (STRIDE)
+	array3_size(COUNT, STRIDE, sizeof(THING))
  , ...)
|
  kzalloc(
-	sizeof(THING) * (COUNT) * STRIDE
+	array3_size(COUNT, STRIDE, sizeof(THING))
  , ...)
|
  kzalloc(
-	sizeof(THING) * COUNT * (STRIDE)
+	array3_size(COUNT, STRIDE, sizeof(THING))
  , ...)
|
  kzalloc(
-	sizeof(THING) * COUNT * STRIDE
+	array3_size(COUNT, STRIDE, sizeof(THING))
  , ...)
)

// 3-factor product with 2 sizeof(variable), with redundant parens removed.
@@
expression THING1, THING2;
identifier COUNT;
type TYPE1, TYPE2;
@@

(
  kzalloc(
-	sizeof(TYPE1) * sizeof(TYPE2) * COUNT
+	array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
  , ...)
|
  kzalloc(
-	sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+	array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
  , ...)
|
  kzalloc(
-	sizeof(THING1) * sizeof(THING2) * COUNT
+	array3_size(COUNT, sizeof(THING1), sizeof(THING2))
  , ...)
|
  kzalloc(
-	sizeof(THING1) * sizeof(THING2) * (COUNT)
+	array3_size(COUNT, sizeof(THING1), sizeof(THING2))
  , ...)
|
  kzalloc(
-	sizeof(TYPE1) * sizeof(THING2) * COUNT
+	array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
  , ...)
|
  kzalloc(
-	sizeof(TYPE1) * sizeof(THING2) * (COUNT)
+	array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
  , ...)
)

// 3-factor product, only identifiers, with redundant parens removed.
@@
identifier STRIDE, SIZE, COUNT;
@@

(
  kzalloc(
-	(COUNT) * STRIDE * SIZE
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	COUNT * (STRIDE) * SIZE
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	COUNT * STRIDE * (SIZE)
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	(COUNT) * (STRIDE) * SIZE
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	COUNT * (STRIDE) * (SIZE)
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	(COUNT) * STRIDE * (SIZE)
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	(COUNT) * (STRIDE) * (SIZE)
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
|
  kzalloc(
-	COUNT * STRIDE * SIZE
+	array3_size(COUNT, STRIDE, SIZE)
  , ...)
)

// Any remaining multi-factor products, first at least 3-factor products,
// when they're not all constants...
@@
expression E1, E2, E3;
constant C1, C2, C3;
@@

(
  kzalloc(C1 * C2 * C3, ...)
|
  kzalloc(
-	(E1) * E2 * E3
+	array3_size(E1, E2, E3)
  , ...)
|
  kzalloc(
-	(E1) * (E2) * E3
+	array3_size(E1, E2, E3)
  , ...)
|
  kzalloc(
-	(E1) * (E2) * (E3)
+	array3_size(E1, E2, E3)
  , ...)
|
  kzalloc(
-	E1 * E2 * E3
+	array3_size(E1, E2, E3)
  , ...)
)

// And then all remaining 2 factors products when they're not all constants,
// keeping sizeof() as the second factor argument.
@@
expression THING, E1, E2;
type TYPE;
constant C1, C2, C3;
@@

(
  kzalloc(sizeof(THING) * C2, ...)
|
  kzalloc(sizeof(TYPE) * C2, ...)
|
  kzalloc(C1 * C2 * C3, ...)
|
  kzalloc(C1 * C2, ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * (E2)
+	E2, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(TYPE) * E2
+	E2, sizeof(TYPE)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * (E2)
+	E2, sizeof(THING)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	sizeof(THING) * E2
+	E2, sizeof(THING)
  , ...)
|
- kzalloc
+ kcalloc
  (
-	(E1) * E2
+	E1, E2
  , ...)
|
- kzalloc
+ kcalloc
  (
-	(E1) * (E2)
+	E1, E2
  , ...)
|
- kzalloc
+ kcalloc
  (
-	E1 * E2
+	E1, E2
  , ...)
)

Signed-off-by: Kees Cook &lt;keescook@chromium.org&gt;
</content>
</entry>
<entry>
<title>clk: sunxi: Make reset_control_ops const</title>
<updated>2016-03-29T23:30:07+00:00</updated>
<author>
<name>Philipp Zabel</name>
<email>p.zabel@pengutronix.de</email>
</author>
<published>2016-02-25T09:45:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5e7bc9c6cee68fdd3583eb689583214a3d56341e'/>
<id>urn:sha1:5e7bc9c6cee68fdd3583eb689583214a3d56341e</id>
<content type='text'>
The sunxi_ve_reset_ops, sun9i_mmc_reset_ops, and sunxi_usb_reset_ops
structures are never modified. Make them const.

Signed-off-by: Philipp Zabel &lt;p.zabel@pengutronix.de&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
</content>
</entry>
<entry>
<title>clk: sunxi: usb: Sort clk providers by chip family and name</title>
<updated>2016-01-25T09:26:03+00:00</updated>
<author>
<name>Chen-Yu Tsai</name>
<email>wens@csie.org</email>
</author>
<published>2016-01-25T05:55:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=63d8c7b9c32004506516f498fa05881c8d258442'/>
<id>urn:sha1:63d8c7b9c32004506516f498fa05881c8d258442</id>
<content type='text'>
The latest addition of H3 USB clocks placed them at the bottom. Move it
before A80 (sun9i), so they are sorted by SoC family then name.

Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
</content>
</entry>
<entry>
<title>clk: sunxi: Add support for the H3 usb phy clocks</title>
<updated>2015-11-20T12:50:19+00:00</updated>
<author>
<name>Reinder de Haan</name>
<email>patchesrdh@mveas.com</email>
</author>
<published>2015-11-15T19:46:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rulkc.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7bec0200ac214b5cba44e2c2c4385815be4b9f00'/>
<id>urn:sha1:7bec0200ac214b5cba44e2c2c4385815be4b9f00</id>
<content type='text'>
The H3 has a usb-phy clk register which is similar to that of earlier
SoCs, but with support for a larger number of phys. So we can simply add
a new set of clk-data and a new compatible and be done with it.

Acked-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Signed-off-by: Reinder de Haan &lt;patchesrdh@mveas.com&gt;
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
</content>
</entry>
</feed>
