Skip to content

Commit 28a4f91

Browse files
committed
Merge tag 'driver-core-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH: "Here is a small set of driver core updates and additions for 6.6-rc1. Included in here are: - stable kernel documentation updates - class structure const work from Ivan on various subsystems - kernfs tweaks - driver core tests! - kobject sanity cleanups - kobject structure reordering to save space - driver core error code handling fixups - other minor driver core cleanups All of these have been in linux-next for a while with no reported problems" * tag 'driver-core-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (32 commits) driver core: Call in reversed order in device_platform_notify_remove() driver core: Return proper error code when dev_set_name() fails kobject: Remove redundant checks for whether ktype is NULL kobject: Add sanity check for kset->kobj.ktype in kset_register() drivers: base: test: Add missing MODULE_* macros to root device tests drivers: base: test: Add missing MODULE_* macros for platform devices tests drivers: base: Free devm resources when unregistering a device drivers: base: Add basic devm tests for platform devices drivers: base: Add basic devm tests for root devices kernfs: fix missing kernfs_iattr_rwsem locking docs: stable-kernel-rules: mention that regressions must be prevented docs: stable-kernel-rules: fine-tune various details docs: stable-kernel-rules: make the examples for option 1 a proper list docs: stable-kernel-rules: move text around to improve flow docs: stable-kernel-rules: improve structure by changing headlines base/node: Remove duplicated include kernfs: attach uuid for every kernfs and report it in fsid kernfs: add stub helper for kernfs_generic_poll() x86/resctrl: make pseudo_lock_class a static const structure x86/MSR: make msr_class a static const structure ...
2 parents 8e1e495 + 29c8ab7 commit 28a4f91

37 files changed

+748
-297
lines changed

Documentation/process/stable-kernel-rules.rst

Lines changed: 113 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,29 @@ Everything you ever wanted to know about Linux -stable releases
66
Rules on what kind of patches are accepted, and which ones are not, into the
77
"-stable" tree:
88

9+
- It or an equivalent fix must already exist in Linus' tree (upstream).
910
- It must be obviously correct and tested.
1011
- It cannot be bigger than 100 lines, with context.
11-
- It must fix only one thing.
12-
- It must fix a real bug that bothers people (not a, "This could be a
13-
problem..." type thing).
14-
- It must fix a problem that causes a build error (but not for things
15-
marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
16-
security issue, or some "oh, that's not good" issue. In short, something
17-
critical.
18-
- Serious issues as reported by a user of a distribution kernel may also
19-
be considered if they fix a notable performance or interactivity issue.
20-
As these fixes are not as obvious and have a higher risk of a subtle
21-
regression they should only be submitted by a distribution kernel
22-
maintainer and include an addendum linking to a bugzilla entry if it
23-
exists and additional information on the user-visible impact.
24-
- New device IDs and quirks are also accepted.
25-
- No "theoretical race condition" issues, unless an explanation of how the
26-
race can be exploited is also provided.
27-
- It cannot contain any "trivial" fixes in it (spelling changes,
28-
whitespace cleanups, etc).
2912
- It must follow the
3013
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
3114
rules.
32-
- It or an equivalent fix must already exist in Linus' tree (upstream).
15+
- It must either fix a real bug that bothers people or just add a device ID.
16+
To elaborate on the former:
17+
18+
- It fixes a problem like an oops, a hang, data corruption, a real security
19+
issue, a hardware quirk, a build error (but not for things marked
20+
CONFIG_BROKEN), or some "oh, that's not good" issue.
21+
- Serious issues as reported by a user of a distribution kernel may also
22+
be considered if they fix a notable performance or interactivity issue.
23+
As these fixes are not as obvious and have a higher risk of a subtle
24+
regression they should only be submitted by a distribution kernel
25+
maintainer and include an addendum linking to a bugzilla entry if it
26+
exists and additional information on the user-visible impact.
27+
- No "This could be a problem..." type of things like a "theoretical race
28+
condition", unless an explanation of how the bug can be exploited is also
29+
provided.
30+
- No "trivial" fixes without benefit for users (spelling changes, whitespace
31+
cleanups, etc).
3332

3433

3534
Procedure for submitting patches to the -stable tree
@@ -41,111 +40,142 @@ Procedure for submitting patches to the -stable tree
4140
process but should follow the procedures in
4241
:ref:`Documentation/process/security-bugs.rst <securitybugs>`.
4342

44-
For all other submissions, choose one of the following procedures
45-
-----------------------------------------------------------------
43+
There are three options to submit a change to -stable trees:
44+
45+
1. Add a 'stable tag' to the description of a patch you then submit for
46+
mainline inclusion.
47+
2. Ask the stable team to pick up a patch already mainlined.
48+
3. Submit a patch to the stable team that is equivalent to a change already
49+
mainlined.
50+
51+
The sections below describe each of the options in more detail.
52+
53+
:ref:`option_1` is **strongly** preferred, it is the easiest and most common.
54+
:ref:`option_2` is mainly meant for changes where backporting was not considered
55+
at the time of submission. :ref:`option_3` is an alternative to the two earlier
56+
options for cases where a mainlined patch needs adjustments to apply in older
57+
series (for example due to API changes).
58+
59+
When using option 2 or 3 you can ask for your change to be included in specific
60+
stable series. When doing so, ensure the fix or an equivalent is applicable,
61+
submitted, or already present in all newer stable trees still supported. This is
62+
meant to prevent regressions that users might later encounter on updating, if
63+
e.g. a fix merged for 5.19-rc1 would be backported to 5.10.y, but not to 5.15.y.
4664

4765
.. _option_1:
4866

4967
Option 1
5068
********
5169

52-
To have the patch automatically included in the stable tree, add the tag
70+
To have a patch you submit for mainline inclusion later automatically picked up
71+
for stable trees, add the tag
5372

5473
.. code-block:: none
5574
5675
5776
58-
in the sign-off area. Once the patch is merged it will be applied to
59-
the stable tree without anything else needing to be done by the author
60-
or subsystem maintainer.
77+
in the sign-off area. Once the patch is mainlined it will be applied to the
78+
stable tree without anything else needing to be done by the author or
79+
subsystem maintainer.
6180

62-
.. _option_2:
81+
To sent additional instructions to the stable team, use a shell-style inline
82+
comment:
6383

64-
Option 2
65-
********
84+
* To specify any additional patch prerequisites for cherry picking use the
85+
following format in the sign-off area:
6686

67-
After the patch has been merged to Linus' tree, send an email to
68-
[email protected] containing the subject of the patch, the commit ID,
69-
why you think it should be applied, and what kernel version you wish it to
70-
be applied to.
87+
.. code-block:: none
7188
72-
.. _option_3:
89+
Cc: <[email protected]> # 3.3.x: a1f84a3: sched: Check for idle
90+
Cc: <[email protected]> # 3.3.x: 1b9508f: sched: Rate-limit newidle
91+
Cc: <[email protected]> # 3.3.x: fd21073: sched: Fix affinity logic
92+
Cc: <[email protected]> # 3.3.x
93+
Signed-off-by: Ingo Molnar <[email protected]>
7394
74-
Option 3
75-
********
95+
The tag sequence has the meaning of:
7696

77-
Send the patch, after verifying that it follows the above rules, to
78-
[email protected]. You must note the upstream commit ID in the
79-
changelog of your submission, as well as the kernel version you wish
80-
it to be applied to.
97+
.. code-block:: none
8198
82-
:ref:`option_1` is **strongly** preferred, is the easiest and most common.
83-
:ref:`option_2` and :ref:`option_3` are more useful if the patch isn't deemed
84-
worthy at the time it is applied to a public git tree (for instance, because
85-
it deserves more regression testing first). :ref:`option_3` is especially
86-
useful if the original upstream patch needs to be backported (for example
87-
the backport needs some special handling due to e.g. API changes).
99+
git cherry-pick a1f84a3
100+
git cherry-pick 1b9508f
101+
git cherry-pick fd21073
102+
git cherry-pick <this commit>
88103
89-
Note that for :ref:`option_3`, if the patch deviates from the original
90-
upstream patch (for example because it had to be backported) this must be very
91-
clearly documented and justified in the patch description.
104+
* For patches that may have kernel version prerequisites specify them using
105+
the following format in the sign-off area:
92106

93-
The upstream commit ID must be specified with a separate line above the commit
94-
text, like this:
107+
.. code-block:: none
95108
96-
.. code-block:: none
109+
Cc: <[email protected]> # 3.3.x
97110
98-
commit <sha1> upstream.
111+
The tag has the meaning of:
99112

100-
or alternatively:
113+
.. code-block:: none
101114
102-
.. code-block:: none
115+
git cherry-pick <this commit>
103116
104-
[ Upstream commit <sha1> ]
117+
For each "-stable" tree starting with the specified version.
105118

106-
Additionally, some patches submitted via :ref:`option_1` may have additional
107-
patch prerequisites which can be cherry-picked. This can be specified in the
108-
following format in the sign-off area:
119+
Note, such tagging is unnecessary if the stable team can derive the
120+
appropriate versions from Fixes: tags.
109121

110-
.. code-block:: none
122+
* To delay pick up of patches, use the following format:
111123

112-
Cc: <[email protected]> # 3.3.x: a1f84a3: sched: Check for idle
113-
Cc: <[email protected]> # 3.3.x: 1b9508f: sched: Rate-limit newidle
114-
Cc: <[email protected]> # 3.3.x: fd21073: sched: Fix affinity logic
115-
Cc: <[email protected]> # 3.3.x
116-
Signed-off-by: Ingo Molnar <[email protected]>
124+
.. code-block:: none
117125
118-
The tag sequence has the meaning of:
126+
Cc: <[email protected]> # after 4 weeks in mainline
119127
120-
.. code-block:: none
128+
* For any other requests, just add a note to the stable tag. This for example
129+
can be used to point out known problems:
121130

122-
git cherry-pick a1f84a3
123-
git cherry-pick 1b9508f
124-
git cherry-pick fd21073
125-
git cherry-pick <this commit>
131+
.. code-block:: none
132+
133+
Cc: <[email protected]> # see patch description, needs adjustments for <= 6.3
134+
135+
.. _option_2:
136+
137+
Option 2
138+
********
139+
140+
If the patch already has been merged to mainline, send an email to
141+
[email protected] containing the subject of the patch, the commit ID,
142+
why you think it should be applied, and what kernel versions you wish it to
143+
be applied to.
144+
145+
.. _option_3:
126146

127-
Also, some patches may have kernel version prerequisites. This can be
128-
specified in the following format in the sign-off area:
147+
Option 3
148+
********
149+
150+
Send the patch, after verifying that it follows the above rules, to
151+
[email protected] and mention the kernel versions you wish it to be applied
152+
to. When doing so, you must note the upstream commit ID in the changelog of your
153+
submission with a separate line above the commit text, like this:
129154

130155
.. code-block:: none
131156
132-
Cc: <[email protected]> # 3.3.x
157+
commit <sha1> upstream.
133158
134-
The tag has the meaning of:
159+
or alternatively:
135160

136161
.. code-block:: none
137162
138-
git cherry-pick <this commit>
163+
[ Upstream commit <sha1> ]
164+
165+
If the submitted patch deviates from the original upstream patch (for example
166+
because it had to be adjusted for the older API), this must be very clearly
167+
documented and justified in the patch description.
139168

140-
For each "-stable" tree starting with the specified version.
141169

142-
Following the submission:
170+
Following the submission
171+
------------------------
143172

144-
- The sender will receive an ACK when the patch has been accepted into the
145-
queue, or a NAK if the patch is rejected. This response might take a few
146-
days, according to the developer's schedules.
147-
- If accepted, the patch will be added to the -stable queue, for review by
148-
other developers and by the relevant subsystem maintainer.
173+
The sender will receive an ACK when the patch has been accepted into the
174+
queue, or a NAK if the patch is rejected. This response might take a few
175+
days, according to the schedules of the stable team members.
176+
177+
If accepted, the patch will be added to the -stable queue, for review by other
178+
developers and by the relevant subsystem maintainer.
149179

150180

151181
Review cycle
@@ -174,6 +204,7 @@ Review cycle
174204
security kernel team, and not go through the normal review cycle.
175205
Contact the kernel security team for more details on this procedure.
176206

207+
177208
Trees
178209
-----
179210

arch/x86/kernel/cpu/resctrl/pseudo_lock.c

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,21 @@ static u64 prefetch_disable_bits;
4545
*/
4646
static unsigned int pseudo_lock_major;
4747
static unsigned long pseudo_lock_minor_avail = GENMASK(MINORBITS, 0);
48-
static struct class *pseudo_lock_class;
48+
49+
static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
50+
{
51+
const struct rdtgroup *rdtgrp;
52+
53+
rdtgrp = dev_get_drvdata(dev);
54+
if (mode)
55+
*mode = 0600;
56+
return kasprintf(GFP_KERNEL, "pseudo_lock/%s", rdtgrp->kn->name);
57+
}
58+
59+
static const struct class pseudo_lock_class = {
60+
.name = "pseudo_lock",
61+
.devnode = pseudo_lock_devnode,
62+
};
4963

5064
/**
5165
* get_prefetch_disable_bits - prefetch disable bits of supported platforms
@@ -1353,7 +1367,7 @@ int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp)
13531367
&pseudo_measure_fops);
13541368
}
13551369

1356-
dev = device_create(pseudo_lock_class, NULL,
1370+
dev = device_create(&pseudo_lock_class, NULL,
13571371
MKDEV(pseudo_lock_major, new_minor),
13581372
rdtgrp, "%s", rdtgrp->kn->name);
13591373

@@ -1383,7 +1397,7 @@ int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp)
13831397
goto out;
13841398

13851399
out_device:
1386-
device_destroy(pseudo_lock_class, MKDEV(pseudo_lock_major, new_minor));
1400+
device_destroy(&pseudo_lock_class, MKDEV(pseudo_lock_major, new_minor));
13871401
out_debugfs:
13881402
debugfs_remove_recursive(plr->debugfs_dir);
13891403
pseudo_lock_minor_release(new_minor);
@@ -1424,7 +1438,7 @@ void rdtgroup_pseudo_lock_remove(struct rdtgroup *rdtgrp)
14241438

14251439
pseudo_lock_cstates_relax(plr);
14261440
debugfs_remove_recursive(rdtgrp->plr->debugfs_dir);
1427-
device_destroy(pseudo_lock_class, MKDEV(pseudo_lock_major, plr->minor));
1441+
device_destroy(&pseudo_lock_class, MKDEV(pseudo_lock_major, plr->minor));
14281442
pseudo_lock_minor_release(plr->minor);
14291443

14301444
free:
@@ -1560,16 +1574,6 @@ static const struct file_operations pseudo_lock_dev_fops = {
15601574
.mmap = pseudo_lock_dev_mmap,
15611575
};
15621576

1563-
static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
1564-
{
1565-
const struct rdtgroup *rdtgrp;
1566-
1567-
rdtgrp = dev_get_drvdata(dev);
1568-
if (mode)
1569-
*mode = 0600;
1570-
return kasprintf(GFP_KERNEL, "pseudo_lock/%s", rdtgrp->kn->name);
1571-
}
1572-
15731577
int rdt_pseudo_lock_init(void)
15741578
{
15751579
int ret;
@@ -1580,21 +1584,18 @@ int rdt_pseudo_lock_init(void)
15801584

15811585
pseudo_lock_major = ret;
15821586

1583-
pseudo_lock_class = class_create("pseudo_lock");
1584-
if (IS_ERR(pseudo_lock_class)) {
1585-
ret = PTR_ERR(pseudo_lock_class);
1587+
ret = class_register(&pseudo_lock_class);
1588+
if (ret) {
15861589
unregister_chrdev(pseudo_lock_major, "pseudo_lock");
15871590
return ret;
15881591
}
15891592

1590-
pseudo_lock_class->devnode = pseudo_lock_devnode;
15911593
return 0;
15921594
}
15931595

15941596
void rdt_pseudo_lock_release(void)
15951597
{
1596-
class_destroy(pseudo_lock_class);
1597-
pseudo_lock_class = NULL;
1598+
class_unregister(&pseudo_lock_class);
15981599
unregister_chrdev(pseudo_lock_major, "pseudo_lock");
15991600
pseudo_lock_major = 0;
16001601
}

0 commit comments

Comments
 (0)