mirror of
https://git.yoctoproject.org/poky
synced 2026-03-16 12:19:40 +01:00
Compare commits
82 Commits
honister-3
...
honister
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd00d74f47 | ||
|
|
25c5b987e4 | ||
|
|
c701ce82d1 | ||
|
|
a71d6fe171 | ||
|
|
06232bc56b | ||
|
|
be0eb43a36 | ||
|
|
44849be60d | ||
|
|
0f2839bb8c | ||
|
|
0eac465899 | ||
|
|
a37aa8a3b1 | ||
|
|
e87c8d0eda | ||
|
|
e28a432c27 | ||
|
|
5350a0162c | ||
|
|
51cb23e695 | ||
|
|
17ea8b493d | ||
|
|
8a0766f6f5 | ||
|
|
ffb6c5c902 | ||
|
|
c24a700b1a | ||
|
|
fd032a2db3 | ||
|
|
188059a9c5 | ||
|
|
3e48263df5 | ||
|
|
0a4e32274f | ||
|
|
5f685dc2d1 | ||
|
|
663939ef27 | ||
|
|
87bd34033a | ||
|
|
609d6de745 | ||
|
|
1b0306978c | ||
|
|
8402f346fc | ||
|
|
431002a136 | ||
|
|
2b2002a294 | ||
|
|
d6d549a0e4 | ||
|
|
780eeec885 | ||
|
|
3f17ee4ebe | ||
|
|
ce323dd1a9 | ||
|
|
638c8860eb | ||
|
|
99e1aff4ba | ||
|
|
7d210474da | ||
|
|
ef827a4a5d | ||
|
|
8d6afadf48 | ||
|
|
4724978774 | ||
|
|
53c727195d | ||
|
|
2b0bb2d78a | ||
|
|
9766e3609d | ||
|
|
638784c71f | ||
|
|
fd34439250 | ||
|
|
0abe6ebd00 | ||
|
|
1deb7e3145 | ||
|
|
b5a4c322a1 | ||
|
|
e262633f64 | ||
|
|
b19991bf95 | ||
|
|
401c83d4f8 | ||
|
|
00534dd136 | ||
|
|
a18c4104c8 | ||
|
|
0f139080f6 | ||
|
|
4337b18725 | ||
|
|
eff78b3802 | ||
|
|
42735fc06d | ||
|
|
580532cfd0 | ||
|
|
f39012fed6 | ||
|
|
03a4cea318 | ||
|
|
5033d9640d | ||
|
|
cc07ce36fa | ||
|
|
bdeb3dcf94 | ||
|
|
225f513991 | ||
|
|
49c0883c91 | ||
|
|
0608a3fb0b | ||
|
|
21400a18cb | ||
|
|
6b3119b258 | ||
|
|
2eda0c95c6 | ||
|
|
6631e78418 | ||
|
|
3f7e22d1b6 | ||
|
|
286f2c5487 | ||
|
|
2b45d7d0ce | ||
|
|
aea25b4876 | ||
|
|
bbbd9966e8 | ||
|
|
e38b37a03f | ||
|
|
e37119c358 | ||
|
|
33cf6f26b2 | ||
|
|
a5dea17662 | ||
|
|
3e99ea91bf | ||
|
|
3467e4129c | ||
|
|
d349e4b75e |
@@ -27,6 +27,7 @@ import re
|
||||
import datetime
|
||||
import pickle
|
||||
import traceback
|
||||
import gc
|
||||
import bb.server.xmlrpcserver
|
||||
from bb import daemonize
|
||||
from multiprocessing import queues
|
||||
@@ -739,8 +740,10 @@ class ConnectionWriter(object):
|
||||
|
||||
def send(self, obj):
|
||||
obj = multiprocessing.reduction.ForkingPickler.dumps(obj)
|
||||
gc.disable()
|
||||
with self.wlock:
|
||||
self.writer.send_bytes(obj)
|
||||
gc.enable()
|
||||
|
||||
def fileno(self):
|
||||
return self.writer.fileno()
|
||||
|
||||
@@ -11,6 +11,7 @@ import hashlib
|
||||
import time
|
||||
import inspect
|
||||
from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
|
||||
import bb.server.xmlrpcclient
|
||||
|
||||
import bb
|
||||
|
||||
|
||||
@@ -228,7 +228,9 @@ class TerminalFilter(object):
|
||||
|
||||
def keepAlive(self, t):
|
||||
if not self.cuu:
|
||||
print("Bitbake still alive (%ds)" % t)
|
||||
print("Bitbake still alive (no events for %ds). Active tasks:" % t)
|
||||
for t in self.helper.running_tasks:
|
||||
print(t)
|
||||
sys.stdout.flush()
|
||||
|
||||
def updateFooter(self):
|
||||
@@ -605,7 +607,8 @@ def main(server, eventHandler, params, tf = TerminalFilter):
|
||||
warnings = 0
|
||||
taskfailures = []
|
||||
|
||||
printinterval = 5000
|
||||
printintervaldelta = 10 * 60 # 10 minutes
|
||||
printinterval = printintervaldelta
|
||||
lastprint = time.time()
|
||||
|
||||
termfilter = tf(main, helper, console_handlers, params.options.quiet)
|
||||
@@ -615,7 +618,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
|
||||
try:
|
||||
if (lastprint + printinterval) <= time.time():
|
||||
termfilter.keepAlive(printinterval)
|
||||
printinterval += 5000
|
||||
printinterval += printintervaldelta
|
||||
event = eventHandler.waitEvent(0)
|
||||
if event is None:
|
||||
if main.shutdown > 1:
|
||||
@@ -646,7 +649,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
|
||||
|
||||
if isinstance(event, logging.LogRecord):
|
||||
lastprint = time.time()
|
||||
printinterval = 5000
|
||||
printinterval = printintervaldelta
|
||||
if event.levelno >= bb.msg.BBLogFormatter.ERROR:
|
||||
errors = errors + 1
|
||||
return_value = 1
|
||||
|
||||
@@ -23,9 +23,14 @@
|
||||
<field type="CharField" name="branch">master</field>
|
||||
</object>
|
||||
<object model="orm.bitbakeversion" pk="4">
|
||||
<field type="CharField" name="name">gatesgarth</field>
|
||||
<field type="CharField" name="name">hardknott</field>
|
||||
<field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
|
||||
<field type="CharField" name="branch">1.48</field>
|
||||
<field type="CharField" name="branch">1.50</field>
|
||||
</object>
|
||||
<object model="orm.bitbakeversion" pk="5">
|
||||
<field type="CharField" name="name">honister</field>
|
||||
<field type="CharField" name="giturl">git://git.openembedded.org/bitbake</field>
|
||||
<field type="CharField" name="branch">1.52</field>
|
||||
</object>
|
||||
|
||||
<!-- Releases available -->
|
||||
@@ -51,11 +56,18 @@
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/\">OpenEmbedded master</a> branch.</field>
|
||||
</object>
|
||||
<object model="orm.release" pk="4">
|
||||
<field type="CharField" name="name">gatesgarth</field>
|
||||
<field type="CharField" name="description">Openembedded Gatesgarth</field>
|
||||
<field type="CharField" name="name">hardknott</field>
|
||||
<field type="CharField" name="description">Openembedded Hardknott</field>
|
||||
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
|
||||
<field type="CharField" name="branch_name">gatesgarth</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=gatesgarth\">OpenEmbedded Gatesgarth</a> branch.</field>
|
||||
<field type="CharField" name="branch_name">hardknott</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=hardknott\">OpenEmbedded Hardknott</a> branch.</field>
|
||||
</object>
|
||||
<object model="orm.release" pk="5">
|
||||
<field type="CharField" name="name">honister</field>
|
||||
<field type="CharField" name="description">Openembedded Honister</field>
|
||||
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">5</field>
|
||||
<field type="CharField" name="branch_name">honister</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href=\"https://cgit.openembedded.org/openembedded-core/log/?h=honister\">OpenEmbedded Honister</a> branch.</field>
|
||||
</object>
|
||||
|
||||
<!-- Default layers for each release -->
|
||||
@@ -75,6 +87,10 @@
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">4</field>
|
||||
<field type="CharField" name="layer_name">openembedded-core</field>
|
||||
</object>
|
||||
<object model="orm.releasedefaultlayer" pk="5">
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="layer_name">openembedded-core</field>
|
||||
</object>
|
||||
|
||||
|
||||
<!-- Layer for the Local release -->
|
||||
|
||||
@@ -26,9 +26,15 @@
|
||||
<field type="CharField" name="dirpath">bitbake</field>
|
||||
</object>
|
||||
<object model="orm.bitbakeversion" pk="4">
|
||||
<field type="CharField" name="name">gatesgarth</field>
|
||||
<field type="CharField" name="name">hardknott</field>
|
||||
<field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
|
||||
<field type="CharField" name="branch">gatesgarth</field>
|
||||
<field type="CharField" name="branch">hardknott</field>
|
||||
<field type="CharField" name="dirpath">bitbake</field>
|
||||
</object>
|
||||
<object model="orm.bitbakeversion" pk="5">
|
||||
<field type="CharField" name="name">honister</field>
|
||||
<field type="CharField" name="giturl">git://git.yoctoproject.org/poky</field>
|
||||
<field type="CharField" name="branch">honister</field>
|
||||
<field type="CharField" name="dirpath">bitbake</field>
|
||||
</object>
|
||||
|
||||
@@ -56,11 +62,18 @@
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/">Yocto Project Master branch</a>.</field>
|
||||
</object>
|
||||
<object model="orm.release" pk="4">
|
||||
<field type="CharField" name="name">gatesgarth</field>
|
||||
<field type="CharField" name="description">Yocto Project 3.2 "Gatesgarth"</field>
|
||||
<field type="CharField" name="name">hardknott</field>
|
||||
<field type="CharField" name="description">Yocto Project 3.3 "Hardknott"</field>
|
||||
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">4</field>
|
||||
<field type="CharField" name="branch_name">gatesgarth</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=gatesgarth">Yocto Project Gatesgarth branch</a>.</field>
|
||||
<field type="CharField" name="branch_name">hardknott</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=hardknott">Yocto Project Hardknott branch</a>.</field>
|
||||
</object>
|
||||
<object model="orm.release" pk="5">
|
||||
<field type="CharField" name="name">honister</field>
|
||||
<field type="CharField" name="description">Yocto Project 3.4 "Honister"</field>
|
||||
<field rel="ManyToOneRel" to="orm.bitbakeversion" name="bitbake_version">5</field>
|
||||
<field type="CharField" name="branch_name">honister</field>
|
||||
<field type="TextField" name="helptext">Toaster will run your builds using the tip of the <a href="https://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?h=honister">Yocto Project Honister branch</a>.</field>
|
||||
</object>
|
||||
|
||||
<!-- Default project layers for each release -->
|
||||
@@ -112,6 +125,18 @@
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">4</field>
|
||||
<field type="CharField" name="layer_name">meta-yocto-bsp</field>
|
||||
</object>
|
||||
<object model="orm.releasedefaultlayer" pk="13">
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="layer_name">openembedded-core</field>
|
||||
</object>
|
||||
<object model="orm.releasedefaultlayer" pk="14">
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="layer_name">meta-poky</field>
|
||||
</object>
|
||||
<object model="orm.releasedefaultlayer" pk="15">
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="layer_name">meta-yocto-bsp</field>
|
||||
</object>
|
||||
|
||||
<!-- Default layers provided by poky
|
||||
openembedded-core
|
||||
@@ -152,7 +177,14 @@
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">4</field>
|
||||
<field type="CharField" name="branch">gatesgarth</field>
|
||||
<field type="CharField" name="branch">hardknott</field>
|
||||
<field type="CharField" name="dirpath">meta</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="5">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">1</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="branch">honister</field>
|
||||
<field type="CharField" name="dirpath">meta</field>
|
||||
</object>
|
||||
|
||||
@@ -164,14 +196,14 @@
|
||||
<field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
|
||||
<field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="5">
|
||||
<object model="orm.layer_version" pk="6">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">1</field>
|
||||
<field type="CharField" name="branch">dunfell</field>
|
||||
<field type="CharField" name="dirpath">meta-poky</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="6">
|
||||
<object model="orm.layer_version" pk="7">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">2</field>
|
||||
@@ -179,18 +211,25 @@
|
||||
<field type="CharField" name="commit">HEAD</field>
|
||||
<field type="CharField" name="dirpath">meta-poky</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="7">
|
||||
<object model="orm.layer_version" pk="8">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
|
||||
<field type="CharField" name="branch">master</field>
|
||||
<field type="CharField" name="dirpath">meta-poky</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="8">
|
||||
<object model="orm.layer_version" pk="9">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">4</field>
|
||||
<field type="CharField" name="branch">gatesgarth</field>
|
||||
<field type="CharField" name="branch">hardknott</field>
|
||||
<field type="CharField" name="dirpath">meta-poky</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="10">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">2</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="branch">honister</field>
|
||||
<field type="CharField" name="dirpath">meta-poky</field>
|
||||
</object>
|
||||
|
||||
@@ -202,14 +241,14 @@
|
||||
<field type="CharField" name="vcs_web_tree_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
|
||||
<field type="CharField" name="vcs_web_file_base_url">https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/%path%?h=%branch%</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="9">
|
||||
<object model="orm.layer_version" pk="11">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">1</field>
|
||||
<field type="CharField" name="branch">dunfell</field>
|
||||
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="10">
|
||||
<object model="orm.layer_version" pk="12">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">2</field>
|
||||
@@ -217,18 +256,25 @@
|
||||
<field type="CharField" name="commit">HEAD</field>
|
||||
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="11">
|
||||
<object model="orm.layer_version" pk="13">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">3</field>
|
||||
<field type="CharField" name="branch">master</field>
|
||||
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="12">
|
||||
<object model="orm.layer_version" pk="14">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">4</field>
|
||||
<field type="CharField" name="branch">gatesgarth</field>
|
||||
<field type="CharField" name="branch">hardknott</field>
|
||||
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
|
||||
</object>
|
||||
<object model="orm.layer_version" pk="15">
|
||||
<field rel="ManyToOneRel" to="orm.layer" name="layer">3</field>
|
||||
<field type="IntegerField" name="layer_source">0</field>
|
||||
<field rel="ManyToOneRel" to="orm.release" name="release">5</field>
|
||||
<field type="CharField" name="branch">honister</field>
|
||||
<field type="CharField" name="dirpath">meta-yocto-bsp</field>
|
||||
</object>
|
||||
</django-objects>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<field type="CharField" name="value">${TOPDIR}/../sstate-cache</field>
|
||||
</object>
|
||||
<object model="orm.toastersetting" pk="6">
|
||||
<field type="CharField" name="name">DEFCONF_IMAGE_INSTALL_append</field>
|
||||
<field type="CharField" name="name">DEFCONF_IMAGE_INSTALL:append</field>
|
||||
<field type="CharField" name="value"></field>
|
||||
</object>
|
||||
<object model="orm.toastersetting" pk="7">
|
||||
|
||||
@@ -1717,7 +1717,7 @@ class CustomImageRecipe(Recipe):
|
||||
|
||||
def generate_recipe_file_contents(self):
|
||||
"""Generate the contents for the recipe file."""
|
||||
# If we have no excluded packages we only need to _append
|
||||
# If we have no excluded packages we only need to :append
|
||||
if self.excludes_set.count() == 0:
|
||||
packages_conf = "IMAGE_INSTALL:append = \" "
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
{% if image_install_append_defined %}
|
||||
<dt>
|
||||
<span class="js-config-var-name js-config-var-managed-name">IMAGE_INSTALL_append</span>
|
||||
<span class="js-config-var-name js-config-var-managed-name">IMAGE_INSTALL:append</span>
|
||||
<span class="glyphicon glyphicon-question-sign get-help" title="Specifies additional packages to install into an image. If your build creates more than one image, the packages will be installed in all of them"></span>
|
||||
</dt>
|
||||
<dd class="variable-list">
|
||||
@@ -83,7 +83,7 @@
|
||||
<form id="change-image_install-form" class="form-inline" style="display:none;">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<span class="help-block">To set IMAGE_INSTALL_append to more than one package, type the package names separated by a space.</span>
|
||||
<span class="help-block">To set IMAGE_INSTALL:append to more than one package, type the package names separated by a space.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -771,10 +771,10 @@ $(document).ready(function() {
|
||||
|
||||
{% if image_install_append_defined %}
|
||||
|
||||
// init IMAGE_INSTALL_append trash icon
|
||||
// init IMAGE_INSTALL:append trash icon
|
||||
setDeleteTooltip($('#delete-image_install-icon'));
|
||||
|
||||
// change IMAGE_INSTALL_append variable
|
||||
// change IMAGE_INSTALL:append variable
|
||||
$('#change-image_install-icon').click(function() {
|
||||
// preset the edit value
|
||||
var current_val = $("span#image_install").text().trim();
|
||||
@@ -814,7 +814,7 @@ $(document).ready(function() {
|
||||
$('#apply-change-image_install').click(function(){
|
||||
// insure these non-empty values have single space prefix
|
||||
var value = " " + $('#new-image_install').val().trim();
|
||||
postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+value});
|
||||
postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL:append:'+value});
|
||||
$('#image_install').text(value);
|
||||
$('#image_install').removeClass('text-muted');
|
||||
$("#change-image_install-form").slideUp(function () {
|
||||
@@ -826,10 +826,10 @@ $(document).ready(function() {
|
||||
});
|
||||
});
|
||||
|
||||
// delete IMAGE_INSTALL_append variable value
|
||||
// delete IMAGE_INSTALL:append variable value
|
||||
$('#delete-image_install-icon').click(function(){
|
||||
$(this).tooltip('hide');
|
||||
postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL_append:'+''});
|
||||
postEditAjaxRequest({"configvarChange" : 'IMAGE_INSTALL:append:'+''});
|
||||
$('#image_install').parent().fadeOut(1000, function(){
|
||||
$('#image_install').addClass('text-muted');
|
||||
$('#image_install').text('Not set');
|
||||
@@ -1011,7 +1011,7 @@ $(document).ready(function() {
|
||||
$(".save").attr("disabled","disabled");
|
||||
|
||||
// Reload page if admin-removed core managed value is manually added back in
|
||||
if (0 <= " DISTRO DL_DIR IMAGE_FSTYPES IMAGE_INSTALL_append PACKAGE_CLASSES SSTATE_DIR ".indexOf( " "+variable+" " )) {
|
||||
if (0 <= " DISTRO DL_DIR IMAGE_FSTYPES IMAGE_INSTALL:append PACKAGE_CLASSES SSTATE_DIR ".indexOf( " "+variable+" " )) {
|
||||
// delayed reload to avoid race condition with postEditAjaxRequest
|
||||
do_reload=true;
|
||||
}
|
||||
|
||||
@@ -15,9 +15,27 @@
|
||||
import os
|
||||
import sys
|
||||
import datetime
|
||||
try:
|
||||
import yaml
|
||||
except ImportError:
|
||||
sys.stderr.write("The Yocto Project Sphinx documentation requires PyYAML.\
|
||||
\nPlease make sure to install pyyaml python package.\n")
|
||||
sys.exit(1)
|
||||
|
||||
current_version = "3.4.3"
|
||||
bitbake_version = "1.52"
|
||||
# current_version = "dev"
|
||||
# bitbake_version = "" # Leave empty for development branch
|
||||
# Obtain versions from poky.yaml instead
|
||||
with open("poky.yaml") as data:
|
||||
buff = data.read()
|
||||
subst_vars = yaml.safe_load(buff)
|
||||
if "DOCCONF_VERSION" not in subst_vars:
|
||||
sys.stderr.write("Please set DOCCONF_VERSION in poky.yaml")
|
||||
sys.exit(1)
|
||||
current_version = subst_vars["DOCCONF_VERSION"]
|
||||
if "BITBAKE_SERIES" not in subst_vars:
|
||||
sys.stderr.write("Please set BITBAKE_SERIES in poky.yaml")
|
||||
sys.exit(1)
|
||||
bitbake_version = subst_vars["BITBAKE_SERIES"]
|
||||
|
||||
# String used in sidebar
|
||||
version = 'Version: ' + current_version
|
||||
|
||||
@@ -4781,7 +4781,7 @@ configuration would be as follows::
|
||||
require conf/multilib.conf
|
||||
MULTILIBS = "multilib:lib32"
|
||||
DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
|
||||
IMAGE_INSTALL:append = "lib32-glib-2.0"
|
||||
IMAGE_INSTALL:append = " lib32-glib-2.0"
|
||||
|
||||
This example enables an additional library named
|
||||
``lib32`` alongside the normal target packages. When combining these
|
||||
|
||||
@@ -1062,7 +1062,7 @@ Section.
|
||||
contents::
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
SRC_URI:append = "file://0001-calibrate.c-Added-some-printk-statements.patch"
|
||||
SRC_URI:append = " file://0001-calibrate.c-Added-some-printk-statements.patch"
|
||||
|
||||
The :term:`FILESEXTRAPATHS` and :term:`SRC_URI` statements
|
||||
enable the OpenEmbedded build system to find the patch file.
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
DISTRO : "3.4.3"
|
||||
DISTRO : "3.4.4"
|
||||
DISTRO_NAME_NO_CAP : "honister"
|
||||
DISTRO_NAME : "Honister"
|
||||
DISTRO_NAME_NO_CAP_MINUS_ONE : "hardknott"
|
||||
DISTRO_NAME_NO_CAP_LTS : "dunfell"
|
||||
YOCTO_DOC_VERSION : "3.4.3"
|
||||
YOCTO_DOC_VERSION_MINUS_ONE : "3.3.5"
|
||||
DISTRO_REL_TAG : "yocto-3.4.3"
|
||||
POKYVERSION : "26.0.3"
|
||||
YOCTO_DOC_VERSION : "3.4.4"
|
||||
YOCTO_DOC_VERSION_MINUS_ONE : "3.3.6"
|
||||
DISTRO_REL_TAG : "yocto-3.4.4"
|
||||
DOCCONF_VERSION : "3.4.4"
|
||||
BITBAKE_SERIES : "1.52"
|
||||
POKYVERSION : "26.0.4"
|
||||
YOCTO_POKY : "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;"
|
||||
YOCTO_DL_URL : "https://downloads.yoctoproject.org"
|
||||
YOCTO_AB_URL : "https://autobuilder.yoctoproject.org"
|
||||
|
||||
@@ -3979,10 +3979,10 @@ system and gives an overview of their function and contents.
|
||||
statements add specific configurations to targeted machine types::
|
||||
|
||||
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
|
||||
KERNEL_FEATURES:append = "${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall = "cfg/virtio.scc"
|
||||
KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall = " cfg/virtio.scc"
|
||||
KERNEL_FEATURES:append:qemux86 = " cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64 = "cfg/sound.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64 = " cfg/sound.scc"
|
||||
|
||||
:term:`KERNEL_FIT_LINK_NAME`
|
||||
The link name of the kernel flattened image tree (FIT) image. This
|
||||
@@ -4170,7 +4170,7 @@ system and gives an overview of their function and contents.
|
||||
SRCREV_machine:core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
|
||||
KMACHINE:core2-32-intel-common = "intel-core2-32"
|
||||
KBRANCH:core2-32-intel-common = "standard/base"
|
||||
KERNEL_FEATURES:append:core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
|
||||
KERNEL_FEATURES:append:core2-32-intel-common = " ${KERNEL_FEATURES_INTEL_COMMON}"
|
||||
|
||||
The :term:`KMACHINE` statement says
|
||||
that the kernel understands the machine name as "intel-core2-32".
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
DISTRO = "poky"
|
||||
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
||||
DISTRO_VERSION = "3.4.3"
|
||||
DISTRO_VERSION = "3.4.4"
|
||||
DISTRO_CODENAME = "honister"
|
||||
SDK_VENDOR = "-pokysdk"
|
||||
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
|
||||
|
||||
@@ -7,3 +7,18 @@ INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
||||
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
|
||||
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_test_git_as_user() {
|
||||
cd ${S}
|
||||
git status
|
||||
}
|
||||
addtask test_git_as_user after do_unpack
|
||||
|
||||
fakeroot do_test_git_as_root() {
|
||||
cd ${S}
|
||||
git status
|
||||
}
|
||||
do_test_git_as_root[depends] += "virtual/fakeroot-native:do_populate_sysroot"
|
||||
addtask test_git_as_root after do_unpack
|
||||
|
||||
@@ -2,7 +2,7 @@ SUMMARY = "Test recipe for recipeutils.patch_recipe()"
|
||||
|
||||
require recipeutils-test.inc
|
||||
|
||||
LICENSE = "Proprietary"
|
||||
LICENSE = "HPND"
|
||||
LIC_FILES_CHKSUM = "file://${WORKDIR}/somefile;md5=d41d8cd98f00b204e9800998ecf8427e"
|
||||
DEPENDS += "zlib"
|
||||
|
||||
|
||||
@@ -7,17 +7,17 @@ KMACHINE:genericx86 ?= "common-pc"
|
||||
KMACHINE:genericx86-64 ?= "common-pc-64"
|
||||
KMACHINE:beaglebone-yocto ?= "beaglebone"
|
||||
|
||||
SRCREV_machine:genericx86 ?= "c0b313d988a16b25c1ee730bfe7393c462ee8a5c"
|
||||
SRCREV_machine:genericx86-64 ?= "c0b313d988a16b25c1ee730bfe7393c462ee8a5c"
|
||||
SRCREV_machine:edgerouter ?= "4ab94e777d8b41ee1ee4c279259e9733bc8049b1"
|
||||
SRCREV_machine:beaglebone-yocto ?= "941cc9c3849f96f7eaf109b1e35e05ba366aca56"
|
||||
SRCREV_machine:genericx86 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:genericx86-64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:edgerouter ?= "43577894d2295a92fce760dc403b97527fb55835"
|
||||
SRCREV_machine:beaglebone-yocto ?= "8038166b729c192d06f1eb37ab6868a5769f8bc5"
|
||||
|
||||
COMPATIBLE_MACHINE:genericx86 = "genericx86"
|
||||
COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
|
||||
COMPATIBLE_MACHINE:edgerouter = "edgerouter"
|
||||
COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
|
||||
|
||||
LINUX_VERSION:genericx86 = "5.10.99"
|
||||
LINUX_VERSION:genericx86-64 = "5.10.99"
|
||||
LINUX_VERSION:edgerouter = "5.10.63"
|
||||
LINUX_VERSION:beaglebone-yocto = "5.10.63"
|
||||
LINUX_VERSION:genericx86 = "5.10.113"
|
||||
LINUX_VERSION:genericx86-64 = "5.10.113"
|
||||
LINUX_VERSION:edgerouter = "5.10.113"
|
||||
LINUX_VERSION:beaglebone-yocto = "5.10.113"
|
||||
|
||||
@@ -122,6 +122,10 @@ def setup_hosttools_dir(dest, toolsvar, d, fatal=True):
|
||||
tools = d.getVar(toolsvar).split()
|
||||
origbbenv = d.getVar("BB_ORIGENV", False)
|
||||
path = origbbenv.getVar("PATH")
|
||||
# Need to ignore our own scripts directories to avoid circular links
|
||||
for p in path.split(":"):
|
||||
if p.endswith("/scripts"):
|
||||
path = path.replace(p, "/ignoreme")
|
||||
bb.utils.mkdirhier(dest)
|
||||
notfound = []
|
||||
for tool in tools:
|
||||
|
||||
@@ -2,6 +2,8 @@ inherit terminal
|
||||
|
||||
DEVSHELL = "${SHELL}"
|
||||
|
||||
PATH:prepend:task-devshell = "${COREBASE}/scripts/git-intercept:"
|
||||
|
||||
python do_devshell () {
|
||||
if d.getVarFlag("do_devshell", "manualfakeroot"):
|
||||
d.prependVar("DEVSHELL", "pseudo ")
|
||||
|
||||
@@ -30,10 +30,11 @@ python devupstream_virtclass_handler () {
|
||||
# Develpment releases are never preferred by default
|
||||
d.setVar("DEFAULT_PREFERENCE", "-1")
|
||||
|
||||
uri = bb.fetch2.URI(d.getVar("SRC_URI").split()[0])
|
||||
src_uri = d.getVar("SRC_URI:class-devupstream") or d.getVar("SRC_URI")
|
||||
uri = bb.fetch2.URI(src_uri.split()[0])
|
||||
|
||||
if uri.scheme == "git" and not d.getVar("S:class-devupstream"):
|
||||
d.setVar("S:class-devupstream", "${WORKDIR}/git")
|
||||
d.setVar("S", "${WORKDIR}/git")
|
||||
|
||||
# Modify the PV if the recipe hasn't already overridden it
|
||||
pv = d.getVar("PV")
|
||||
|
||||
@@ -90,15 +90,16 @@ python () {
|
||||
# Since configure will likely touch ${S}, ensure only we lock so one task has access at a time
|
||||
d.appendVarFlag(task, "lockfiles", " ${S}/singletask.lock")
|
||||
|
||||
# We do not want our source to be wiped out, ever (kernel.bbclass does this for do_clean)
|
||||
cleandirs = oe.recipeutils.split_var_value(d.getVarFlag(task, 'cleandirs', False) or '')
|
||||
setvalue = False
|
||||
for cleandir in cleandirs[:]:
|
||||
if oe.path.is_path_parent(externalsrc, d.expand(cleandir)):
|
||||
cleandirs.remove(cleandir)
|
||||
setvalue = True
|
||||
if setvalue:
|
||||
d.setVarFlag(task, 'cleandirs', ' '.join(cleandirs))
|
||||
for funcname in [task, "base_" + task, "kernel_" + task]:
|
||||
# We do not want our source to be wiped out, ever (kernel.bbclass does this for do_clean)
|
||||
cleandirs = oe.recipeutils.split_var_value(d.getVarFlag(funcname, 'cleandirs', False) or '')
|
||||
setvalue = False
|
||||
for cleandir in cleandirs[:]:
|
||||
if oe.path.is_path_parent(externalsrc, d.expand(cleandir)):
|
||||
cleandirs.remove(cleandir)
|
||||
setvalue = True
|
||||
if setvalue:
|
||||
d.setVarFlag(funcname, 'cleandirs', ' '.join(cleandirs))
|
||||
|
||||
fetch_tasks = ['do_fetch', 'do_unpack']
|
||||
# If we deltask do_patch, there's no dependency to ensure do_unpack gets run, so add one
|
||||
|
||||
@@ -19,8 +19,8 @@ python write_package_manifest() {
|
||||
|
||||
pkgs = image_list_installed_packages(d)
|
||||
output = format_pkg_list(pkgs)
|
||||
open(os.path.join(license_image_dir, 'package.manifest'),
|
||||
'w+').write(output)
|
||||
with open(os.path.join(license_image_dir, 'package.manifest'), "w+") as package_manifest:
|
||||
package_manifest.write(output)
|
||||
}
|
||||
|
||||
python license_create_manifest() {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#
|
||||
# QB_AUDIO_DRV: qemu audio driver, e.g., "alsa", set it when support audio
|
||||
#
|
||||
# QB_AUDIO_OPT: qemu audio option, e.g., "-soundhw ac97,es1370", used
|
||||
# QB_AUDIO_OPT: qemu audio option, e.g., "-device AC97", used
|
||||
# when QB_AUDIO_DRV is set.
|
||||
#
|
||||
# QB_RNG: Pass-through for host random number generator, it can speedup boot
|
||||
|
||||
@@ -267,9 +267,10 @@ python write_image_manifest () {
|
||||
|
||||
if os.path.exists(manifest_name) and link_name:
|
||||
manifest_link = deploy_dir + "/" + link_name + ".manifest"
|
||||
if os.path.lexists(manifest_link):
|
||||
os.remove(manifest_link)
|
||||
os.symlink(os.path.basename(manifest_name), manifest_link)
|
||||
if manifest_link != manifest_name:
|
||||
if os.path.lexists(manifest_link):
|
||||
os.remove(manifest_link)
|
||||
os.symlink(os.path.basename(manifest_name), manifest_link)
|
||||
}
|
||||
|
||||
# Can be used to create /etc/timestamp during image construction to give a reasonably
|
||||
@@ -339,9 +340,10 @@ python write_image_test_data() {
|
||||
|
||||
if os.path.exists(testdata_name) and link_name:
|
||||
testdata_link = os.path.join(deploy_dir, "%s.testdata.json" % link_name)
|
||||
if os.path.lexists(testdata_link):
|
||||
os.remove(testdata_link)
|
||||
os.symlink(os.path.basename(testdata_name), testdata_link)
|
||||
if testdata_link != testdata_name:
|
||||
if os.path.lexists(testdata_link):
|
||||
os.remove(testdata_link)
|
||||
os.symlink(os.path.basename(testdata_name), testdata_link)
|
||||
}
|
||||
write_image_test_data[vardepsexclude] += "TOPDIR"
|
||||
|
||||
|
||||
@@ -941,6 +941,11 @@ def check_sanity_everybuild(status, d):
|
||||
mirror_base = urllib.parse.urlparse(mirror[:-1*len('/PATH')]).path
|
||||
check_symlink(mirror_base, d)
|
||||
|
||||
# Check sstate mirrors aren't being used with a local hash server and no remote
|
||||
hashserv = d.getVar("BB_HASHSERVE")
|
||||
if d.getVar("SSTATE_MIRRORS") and hashserv and hashserv.startswith("unix://") and not d.getVar("BB_HASHSERVE_UPSTREAM"):
|
||||
bb.warn("You are using a local hash equivalence server but have configured an sstate mirror. This will likely mean no sstate will match from the mirror. You may wish to disable the hash equivalence use (BB_HASHSERVE), or use a hash equivalence server alongside the sstate mirror.")
|
||||
|
||||
# Check that TMPDIR hasn't changed location since the last time we were run
|
||||
tmpdir = d.getVar('TMPDIR')
|
||||
checkfile = os.path.join(tmpdir, "saved_tmpdir")
|
||||
|
||||
@@ -101,11 +101,11 @@ def _toaster_load_pkgdatafile(dirpath, filepath):
|
||||
for line in fin:
|
||||
try:
|
||||
kn, kv = line.strip().split(": ", 1)
|
||||
m = re.match(r"^PKG_([^A-Z:]*)", kn)
|
||||
m = re.match(r"^PKG:([^A-Z:]*)", kn)
|
||||
if m:
|
||||
pkgdata['OPKGN'] = m.group(1)
|
||||
kn = "_".join([x for x in kn.split("_") if x.isupper()])
|
||||
pkgdata[kn] = kv.strip()
|
||||
kn = kn.split(":")[0]
|
||||
pkgdata[kn] = kv
|
||||
if kn.startswith('FILES_INFO'):
|
||||
pkgdata[kn] = json.loads(kv)
|
||||
|
||||
|
||||
@@ -730,10 +730,18 @@ export PKG_CONFIG_DISABLE_UNINSTALLED = "yes"
|
||||
export PKG_CONFIG_SYSTEM_LIBRARY_PATH = "${base_libdir}:${libdir}"
|
||||
export PKG_CONFIG_SYSTEM_INCLUDE_PATH = "${includedir}"
|
||||
|
||||
# Git configuration
|
||||
|
||||
# Don't allow git to chdir up past WORKDIR so that it doesn't detect the OE
|
||||
# repository when building a recipe
|
||||
export GIT_CEILING_DIRECTORIES = "${WORKDIR}"
|
||||
|
||||
# Treat all directories are safe, as during fakeroot tasks git will run as
|
||||
# root so recent git releases (eg 2.30.3) will refuse to work on repositories. See
|
||||
# https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 for
|
||||
# further details.
|
||||
export GIT_CONFIG_PARAMETERS="'safe.directory=*'"
|
||||
|
||||
###
|
||||
### Config file processing
|
||||
###
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
#
|
||||
|
||||
UNINATIVE_MAXGLIBCVERSION = "2.35"
|
||||
UNINATIVE_VERSION = "3.5"
|
||||
UNINATIVE_VERSION = "3.6"
|
||||
|
||||
UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/${UNINATIVE_VERSION}/"
|
||||
UNINATIVE_CHECKSUM[aarch64] ?= "6de0771bd21e0fcb5e80388e5b561a8023b24083bcbf46e056a089982aff75d7"
|
||||
UNINATIVE_CHECKSUM[i686] ?= "8c8745becbfa1c341bae839c7eab56ddf17ce36c303bcd73d3b2f2f788b631c2"
|
||||
UNINATIVE_CHECKSUM[x86_64] ?= "e8047a5748e6f266165da141eb6d08b23674f30e477b0e5505b6403d50fbc4b2"
|
||||
UNINATIVE_CHECKSUM[aarch64] ?= "d64831cf2792c8e470c2e42230660e1a8e5de56a579cdd59978791f663c2f3ed"
|
||||
UNINATIVE_CHECKSUM[i686] ?= "2f0ee9b66b1bb2c85e2b592fb3c9c7f5d77399fa638d74961330cdb8de34ca3b"
|
||||
UNINATIVE_CHECKSUM[x86_64] ?= "9bfc4c970495b3716b2f9e52c4df9f968c02463a9a95000f6657fbc3fde1f098"
|
||||
|
||||
@@ -8,7 +8,7 @@ QB_CPU:x86-64 = "-cpu IvyBridge -machine q35"
|
||||
QB_CPU_KVM:x86-64 = "-cpu IvyBridge -machine q35"
|
||||
|
||||
QB_AUDIO_DRV = "alsa"
|
||||
QB_AUDIO_OPT = "-soundhw ac97,es1370"
|
||||
QB_AUDIO_OPT = "-device AC97"
|
||||
QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1"
|
||||
QB_OPT_APPEND = "-usb -device usb-tablet"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class EpoxyTest(OESDKTestCase):
|
||||
"""
|
||||
def setUp(self):
|
||||
if not (self.tc.hasHostPackage("nativesdk-meson")):
|
||||
raise unittest.SkipTest("GalculatorTest class: SDK doesn't contain Meson")
|
||||
raise unittest.SkipTest("EpoxyTest class: SDK doesn't contain Meson")
|
||||
|
||||
def test_epoxy(self):
|
||||
with tempfile.TemporaryDirectory(prefix="epoxy", dir=self.tc.sdk_dir) as testdir:
|
||||
|
||||
@@ -1464,6 +1464,14 @@ class DevtoolExtractTests(DevtoolBase):
|
||||
|
||||
class DevtoolUpgradeTests(DevtoolBase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
try:
|
||||
runCmd("git config --global user.name")
|
||||
runCmd("git config --global user.email")
|
||||
except:
|
||||
self.skip("Git user.name and user.email must be set")
|
||||
|
||||
def test_devtool_upgrade(self):
|
||||
# Check preconditions
|
||||
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
|
||||
|
||||
15
meta/lib/oeqa/selftest/cases/git.py
Normal file
15
meta/lib/oeqa/selftest/cases/git.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
from oeqa.utils.commands import bitbake
|
||||
|
||||
class GitCheck(OESelftestTestCase):
|
||||
def test_git_intercept(self):
|
||||
"""
|
||||
Git binaries with CVE-2022-24765 fixed will refuse to operate on a
|
||||
repository which is owned by a different user. This breaks our
|
||||
do_install task as that runs inside pseudo, so the git repository is
|
||||
owned by the build user but git is running as (fake)root.
|
||||
|
||||
We have an intercept which disables pseudo, so verify that it works.
|
||||
"""
|
||||
bitbake("git-submodule-test -c test_git_as_user")
|
||||
bitbake("git-submodule-test -c test_git_as_root")
|
||||
@@ -27,6 +27,8 @@ SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae
|
||||
|
||||
# Applies only to RHEL
|
||||
CVE_CHECK_WHITELIST += "CVE-2019-14865"
|
||||
# Applies only to SUSE
|
||||
CVE_CHECK_WHITELIST += "CVE-2021-46705"
|
||||
|
||||
DEPENDS = "flex-native bison-native gettext-native"
|
||||
|
||||
|
||||
@@ -19,4 +19,7 @@ SRC_URI = "git://git.denx.de/u-boot.git;branch=master \
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${WORKDIR}/build"
|
||||
|
||||
inherit pkgconfig
|
||||
|
||||
do_configure[cleandirs] = "${B}"
|
||||
|
||||
@@ -2,21 +2,22 @@ SUMMARY = "Linux NFC daemon"
|
||||
DESCRIPTION = "A daemon for the Linux Near Field Communication stack"
|
||||
HOMEPAGE = "http://01.org/linux-nfc"
|
||||
LICENSE = "GPLv2"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
|
||||
file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
|
||||
"
|
||||
|
||||
DEPENDS = "dbus glib-2.0 libnl"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/network/nfc/${BP}.tar.xz \
|
||||
SRC_URI = "git://git.kernel.org/pub/scm/network/nfc/neard.git;protocol=git;branch=master \
|
||||
file://neard.in \
|
||||
file://Makefile.am-fix-parallel-issue.patch \
|
||||
file://Makefile.am-do-not-ship-version.h.patch \
|
||||
file://0001-Add-header-dependency-to-nciattach.o.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "5c691fb7872856dc0d909c298bc8cb41"
|
||||
SRC_URI[sha256sum] = "eae3b11c541a988ec11ca94b7deab01080cd5b58cfef3ced6ceac9b6e6e65b36"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
|
||||
file://src/near.h;beginline=1;endline=20;md5=358e4deefef251a4761e1ffacc965d13 \
|
||||
"
|
||||
SRCREV = "949795024f7625420e93e288c56e194cb9a3e74a"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
inherit autotools pkgconfig systemd update-rc.d
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ SRC_URI:append:riscv32 = " \
|
||||
file://0004-Fixup-support-for-io_pgetevents_time64-syscall.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1"
|
||||
SRC_URI[sha256sum] = "9384a2b0570dd80358841464677115df785edb941c71211f75076d72fe6b438f"
|
||||
|
||||
inherit lib_package multilib_header multilib_script ptest
|
||||
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
|
||||
@@ -204,6 +204,7 @@ do_install_ptest () {
|
||||
install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
|
||||
|
||||
install -d ${D}${PTEST_PATH}/engines
|
||||
install -m755 ${B}/engines/dasync.so ${D}${PTEST_PATH}/engines
|
||||
install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
|
||||
|
||||
# seems to be needed with perl 5.32.1
|
||||
@@ -349,7 +349,7 @@ do_install_ptest () {
|
||||
# These access the internet which is not guaranteed to work on machines running the tests
|
||||
rm -rf ${D}${PTEST_PATH}/testsuite/wget
|
||||
sort ${B}/.config > ${D}${PTEST_PATH}/.config
|
||||
ln -s /bin/busybox ${D}${PTEST_PATH}/busybox
|
||||
ln -s ${base_bindir}/busybox ${D}${PTEST_PATH}/busybox
|
||||
}
|
||||
|
||||
inherit update-alternatives
|
||||
|
||||
@@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
|
||||
|
||||
inherit core-image setuptools3
|
||||
|
||||
SRCREV ?= "d8cd104e66e7a616f6cf6be67d3b36a798be4c7b"
|
||||
SRCREV ?= "3f17ee4ebef3103e290750d8cdd7d001fc306673"
|
||||
SRC_URI = "git://git.yoctoproject.org/poky;branch=honister \
|
||||
file://Yocto_Build_Appliance.vmx \
|
||||
file://Yocto_Build_Appliance.vmxf \
|
||||
|
||||
@@ -1,213 +0,0 @@
|
||||
From 85b1792e37b131e7a51af98a37f92472e8de5f3f Mon Sep 17 00:00:00 2001
|
||||
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||
Date: Tue, 18 May 2021 20:08:28 +0200
|
||||
Subject: [PATCH] Work around lxml API abuse
|
||||
|
||||
Make xmlNodeDumpOutput and htmlNodeDumpFormatOutput work with corrupted
|
||||
parent pointers. This used to work with the old recursive code but the
|
||||
non-recursive rewrite required parent pointers to be set correctly.
|
||||
|
||||
Unfortunately, lxml relies on the old behavior and passes subtrees with
|
||||
a corrupted structure. Fall back to a recursive function call if an
|
||||
invalid parent pointer is detected.
|
||||
|
||||
Fixes #255.
|
||||
|
||||
Upstream-Status: Backport [85b1792e37b131e7a51af98a37f92472e8de5f3f]
|
||||
---
|
||||
HTMLtree.c | 46 ++++++++++++++++++++++++++++------------------
|
||||
xmlsave.c | 31 +++++++++++++++++++++----------
|
||||
2 files changed, 49 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/HTMLtree.c b/HTMLtree.c
|
||||
index 24434d45..bdd639c7 100644
|
||||
--- a/HTMLtree.c
|
||||
+++ b/HTMLtree.c
|
||||
@@ -744,7 +744,7 @@ void
|
||||
htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED,
|
||||
int format) {
|
||||
- xmlNodePtr root;
|
||||
+ xmlNodePtr root, parent;
|
||||
xmlAttrPtr attr;
|
||||
const htmlElemDesc * info;
|
||||
|
||||
@@ -755,6 +755,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
}
|
||||
|
||||
root = cur;
|
||||
+ parent = cur->parent;
|
||||
while (1) {
|
||||
switch (cur->type) {
|
||||
case XML_HTML_DOCUMENT_NODE:
|
||||
@@ -762,13 +763,25 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
if (((xmlDocPtr) cur)->intSubset != NULL) {
|
||||
htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
|
||||
}
|
||||
- if (cur->children != NULL) {
|
||||
+ /* Always validate cur->parent when descending. */
|
||||
+ if ((cur->parent == parent) && (cur->children != NULL)) {
|
||||
+ parent = cur;
|
||||
cur = cur->children;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case XML_ELEMENT_NODE:
|
||||
+ /*
|
||||
+ * Some users like lxml are known to pass nodes with a corrupted
|
||||
+ * tree structure. Fall back to a recursive call to handle this
|
||||
+ * case.
|
||||
+ */
|
||||
+ if ((cur->parent != parent) && (cur->children != NULL)) {
|
||||
+ htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Get specific HTML info for that node.
|
||||
*/
|
||||
@@ -817,6 +830,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
(cur->name != NULL) &&
|
||||
(cur->name[0] != 'p')) /* p, pre, param */
|
||||
xmlOutputBufferWriteString(buf, "\n");
|
||||
+ parent = cur;
|
||||
cur = cur->children;
|
||||
continue;
|
||||
}
|
||||
@@ -825,9 +839,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
(info != NULL) && (!info->isinline)) {
|
||||
if ((cur->next->type != HTML_TEXT_NODE) &&
|
||||
(cur->next->type != HTML_ENTITY_REF_NODE) &&
|
||||
- (cur->parent != NULL) &&
|
||||
- (cur->parent->name != NULL) &&
|
||||
- (cur->parent->name[0] != 'p')) /* p, pre, param */
|
||||
+ (parent != NULL) &&
|
||||
+ (parent->name != NULL) &&
|
||||
+ (parent->name[0] != 'p')) /* p, pre, param */
|
||||
xmlOutputBufferWriteString(buf, "\n");
|
||||
}
|
||||
|
||||
@@ -842,9 +856,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
break;
|
||||
if (((cur->name == (const xmlChar *)xmlStringText) ||
|
||||
(cur->name != (const xmlChar *)xmlStringTextNoenc)) &&
|
||||
- ((cur->parent == NULL) ||
|
||||
- ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) &&
|
||||
- (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) {
|
||||
+ ((parent == NULL) ||
|
||||
+ ((xmlStrcasecmp(parent->name, BAD_CAST "script")) &&
|
||||
+ (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) {
|
||||
xmlChar *buffer;
|
||||
|
||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||
@@ -902,13 +916,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
break;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * The parent should never be NULL here but we want to handle
|
||||
- * corrupted documents gracefully.
|
||||
- */
|
||||
- if (cur->parent == NULL)
|
||||
- return;
|
||||
- cur = cur->parent;
|
||||
+ cur = parent;
|
||||
+ /* cur->parent was validated when descending. */
|
||||
+ parent = cur->parent;
|
||||
|
||||
if ((cur->type == XML_HTML_DOCUMENT_NODE) ||
|
||||
(cur->type == XML_DOCUMENT_NODE)) {
|
||||
@@ -939,9 +949,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
||||
(cur->next != NULL)) {
|
||||
if ((cur->next->type != HTML_TEXT_NODE) &&
|
||||
(cur->next->type != HTML_ENTITY_REF_NODE) &&
|
||||
- (cur->parent != NULL) &&
|
||||
- (cur->parent->name != NULL) &&
|
||||
- (cur->parent->name[0] != 'p')) /* p, pre, param */
|
||||
+ (parent != NULL) &&
|
||||
+ (parent->name != NULL) &&
|
||||
+ (parent->name[0] != 'p')) /* p, pre, param */
|
||||
xmlOutputBufferWriteString(buf, "\n");
|
||||
}
|
||||
}
|
||||
diff --git a/xmlsave.c b/xmlsave.c
|
||||
index 61a40459..aedbd5e7 100644
|
||||
--- a/xmlsave.c
|
||||
+++ b/xmlsave.c
|
||||
@@ -847,7 +847,7 @@ htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
static void
|
||||
xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
int format = ctxt->format;
|
||||
- xmlNodePtr tmp, root, unformattedNode = NULL;
|
||||
+ xmlNodePtr tmp, root, unformattedNode = NULL, parent;
|
||||
xmlAttrPtr attr;
|
||||
xmlChar *start, *end;
|
||||
xmlOutputBufferPtr buf;
|
||||
@@ -856,6 +856,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
buf = ctxt->buf;
|
||||
|
||||
root = cur;
|
||||
+ parent = cur->parent;
|
||||
while (1) {
|
||||
switch (cur->type) {
|
||||
case XML_DOCUMENT_NODE:
|
||||
@@ -868,7 +869,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
break;
|
||||
|
||||
case XML_DOCUMENT_FRAG_NODE:
|
||||
- if (cur->children != NULL) {
|
||||
+ /* Always validate cur->parent when descending. */
|
||||
+ if ((cur->parent == parent) && (cur->children != NULL)) {
|
||||
+ parent = cur;
|
||||
cur = cur->children;
|
||||
continue;
|
||||
}
|
||||
@@ -887,7 +890,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
break;
|
||||
|
||||
case XML_ELEMENT_NODE:
|
||||
- if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput))
|
||||
+ /*
|
||||
+ * Some users like lxml are known to pass nodes with a corrupted
|
||||
+ * tree structure. Fall back to a recursive call to handle this
|
||||
+ * case.
|
||||
+ */
|
||||
+ if ((cur->parent != parent) && (cur->children != NULL)) {
|
||||
+ xmlNodeDumpOutputInternal(ctxt, cur);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if ((ctxt->level > 0) && (ctxt->format == 1) &&
|
||||
+ (xmlIndentTreeOutput))
|
||||
xmlOutputBufferWrite(buf, ctxt->indent_size *
|
||||
(ctxt->level > ctxt->indent_nr ?
|
||||
ctxt->indent_nr : ctxt->level),
|
||||
@@ -942,6 +956,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
xmlOutputBufferWrite(buf, 1, ">");
|
||||
if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n");
|
||||
if (ctxt->level >= 0) ctxt->level++;
|
||||
+ parent = cur;
|
||||
cur = cur->children;
|
||||
continue;
|
||||
}
|
||||
@@ -1058,13 +1073,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
|
||||
break;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * The parent should never be NULL here but we want to handle
|
||||
- * corrupted documents gracefully.
|
||||
- */
|
||||
- if (cur->parent == NULL)
|
||||
- return;
|
||||
- cur = cur->parent;
|
||||
+ cur = parent;
|
||||
+ /* cur->parent was validated when descending. */
|
||||
+ parent = cur->parent;
|
||||
|
||||
if (cur->type == XML_ELEMENT_NODE) {
|
||||
if (ctxt->level > 0) ctxt->level--;
|
||||
--
|
||||
2.32.0
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
From 646fe48d1c8a74310c409ddf81fe7df6700052af Mon Sep 17 00:00:00 2001
|
||||
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||
Date: Tue, 22 Feb 2022 11:51:08 +0100
|
||||
Subject: [PATCH] Fix --without-valid build
|
||||
|
||||
Regressed in commit 652dd12a.
|
||||
---
|
||||
valid.c | 58 ++++++++++++++++++++++++++++-----------------------------
|
||||
1 file changed, 29 insertions(+), 29 deletions(-)
|
||||
---
|
||||
|
||||
From https://github.com/GNOME/libxml2.git
|
||||
commit 646fe48d1c8a74310c409ddf81fe7df6700052af
|
||||
|
||||
CVE: CVE-2022-23308
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Joe Slater <joe.slater@windriver.com>
|
||||
|
||||
|
||||
diff --git a/valid.c b/valid.c
|
||||
index 8e596f1d..9684683a 100644
|
||||
--- a/valid.c
|
||||
+++ b/valid.c
|
||||
@@ -479,35 +479,6 @@ nodeVPop(xmlValidCtxtPtr ctxt)
|
||||
return (ret);
|
||||
}
|
||||
|
||||
-/**
|
||||
- * xmlValidNormalizeString:
|
||||
- * @str: a string
|
||||
- *
|
||||
- * Normalize a string in-place.
|
||||
- */
|
||||
-static void
|
||||
-xmlValidNormalizeString(xmlChar *str) {
|
||||
- xmlChar *dst;
|
||||
- const xmlChar *src;
|
||||
-
|
||||
- if (str == NULL)
|
||||
- return;
|
||||
- src = str;
|
||||
- dst = str;
|
||||
-
|
||||
- while (*src == 0x20) src++;
|
||||
- while (*src != 0) {
|
||||
- if (*src == 0x20) {
|
||||
- while (*src == 0x20) src++;
|
||||
- if (*src != 0)
|
||||
- *dst++ = 0x20;
|
||||
- } else {
|
||||
- *dst++ = *src++;
|
||||
- }
|
||||
- }
|
||||
- *dst = 0;
|
||||
-}
|
||||
-
|
||||
#ifdef DEBUG_VALID_ALGO
|
||||
static void
|
||||
xmlValidPrintNode(xmlNodePtr cur) {
|
||||
@@ -2636,6 +2607,35 @@ xmlDumpNotationTable(xmlBufferPtr buf, xmlNotationTablePtr table) {
|
||||
(xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \
|
||||
xmlFree((char *)(str));
|
||||
|
||||
+/**
|
||||
+ * xmlValidNormalizeString:
|
||||
+ * @str: a string
|
||||
+ *
|
||||
+ * Normalize a string in-place.
|
||||
+ */
|
||||
+static void
|
||||
+xmlValidNormalizeString(xmlChar *str) {
|
||||
+ xmlChar *dst;
|
||||
+ const xmlChar *src;
|
||||
+
|
||||
+ if (str == NULL)
|
||||
+ return;
|
||||
+ src = str;
|
||||
+ dst = str;
|
||||
+
|
||||
+ while (*src == 0x20) src++;
|
||||
+ while (*src != 0) {
|
||||
+ if (*src == 0x20) {
|
||||
+ while (*src == 0x20) src++;
|
||||
+ if (*src != 0)
|
||||
+ *dst++ = 0x20;
|
||||
+ } else {
|
||||
+ *dst++ = *src++;
|
||||
+ }
|
||||
+ }
|
||||
+ *dst = 0;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
xmlIsStreaming(xmlValidCtxtPtr ctxt) {
|
||||
xmlParserCtxtPtr pctxt;
|
||||
--
|
||||
2.35.1
|
||||
|
||||
@@ -18,11 +18,11 @@ Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
|
||||
libxml.m4 | 190 ++----------------------------------------------------
|
||||
1 file changed, 5 insertions(+), 185 deletions(-)
|
||||
|
||||
diff --git a/libxml.m4 b/libxml.m4
|
||||
index 09de9fe2..1c535853 100644
|
||||
--- a/libxml.m4
|
||||
+++ b/libxml.m4
|
||||
@@ -1,192 +1,12 @@
|
||||
Index: libxml2-2.9.13/libxml.m4
|
||||
===================================================================
|
||||
--- libxml2-2.9.13.orig/libxml.m4
|
||||
+++ libxml2-2.9.13/libxml.m4
|
||||
@@ -1,191 +1,12 @@
|
||||
-# Configure paths for LIBXML2
|
||||
-# Simon Josefsson 2020-02-12
|
||||
-# Fix autoconf 2.70+ warnings
|
||||
@@ -147,9 +147,8 @@ index 09de9fe2..1c535853 100644
|
||||
- {
|
||||
- printf("\n*** An old version of libxml (%d.%d.%d) was found.\n",
|
||||
- xml_major_version, xml_minor_version, xml_micro_version);
|
||||
- printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n",
|
||||
- printf("*** You need a version of libxml newer than %d.%d.%d.\n",
|
||||
- major, minor, micro);
|
||||
- printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n");
|
||||
- printf("***\n");
|
||||
- printf("*** If you have already installed a sufficiently new version, this error\n");
|
||||
- printf("*** probably means that the wrong copy of the xml2-config shell script is\n");
|
||||
@@ -220,6 +219,3 @@ index 09de9fe2..1c535853 100644
|
||||
- AC_SUBST(XML_LIBS)
|
||||
- rm -f conf.xmltest
|
||||
])
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
SUMMARY = "XML C Parser Library and Toolkit"
|
||||
DESCRIPTION = "The XML Parser Library allows for manipulation of XML files. Libxml2 exports Push and Pull type parser interfaces for both XML and HTML. It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD. Libxml2 includes complete XPath, XPointer and Xinclude implementations. It also has a SAX like interface, which is designed to be compatible with Expat."
|
||||
HOMEPAGE = "http://www.xmlsoft.org/"
|
||||
HOMEPAGE = "https://gitlab.gnome.org/GNOME/libxml2"
|
||||
BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
|
||||
SECTION = "libs"
|
||||
LICENSE = "MIT"
|
||||
@@ -11,20 +11,23 @@ LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
|
||||
|
||||
DEPENDS = "zlib virtual/libiconv"
|
||||
|
||||
SRC_URI = "http://www.xmlsoft.org/sources/libxml2-${PV}.tar.gz;name=libtar \
|
||||
http://www.w3.org/XML/Test/xmlts20080827.tar.gz;subdir=${BP};name=testtar \
|
||||
inherit gnomebase
|
||||
|
||||
SRC_URI += "http://www.w3.org/XML/Test/xmlts20080827.tar.gz;subdir=${BP};name=testtar \
|
||||
file://libxml-64bit.patch \
|
||||
file://runtest.patch \
|
||||
file://run-ptest \
|
||||
file://python-sitepackages-dir.patch \
|
||||
file://libxml-m4-use-pkgconfig.patch \
|
||||
file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
|
||||
file://fix-execution-of-ptests.patch \
|
||||
file://remove-fuzz-from-ptests.patch \
|
||||
file://0002-Work-around-lxml-API-abuse.patch \
|
||||
file://libxml-m4-use-pkgconfig.patch \
|
||||
"
|
||||
# will be in v2.9.14
|
||||
#
|
||||
SRC_URI += "file://CVE-2022-23308-fix-regression.patch"
|
||||
|
||||
SRC_URI[libtar.sha256sum] = "c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92"
|
||||
SRC_URI[archive.sha256sum] = "276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e"
|
||||
SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
|
||||
|
||||
BINCONFIG = "${bindir}/xml2-config"
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Bind mount volatile @where@
|
||||
DefaultDependencies=false
|
||||
DefaultDependencies=no
|
||||
Before=local-fs.target
|
||||
RequiresMountsFor=@whatparent@ @whereparent@
|
||||
ConditionPathIsReadWrite=@whatparent@
|
||||
|
||||
347
meta/recipes-core/zlib/zlib/CVE-2018-25032.patch
Normal file
347
meta/recipes-core/zlib/zlib/CVE-2018-25032.patch
Normal file
@@ -0,0 +1,347 @@
|
||||
CVE: CVE-2018-25032
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From 5c44459c3b28a9bd3283aaceab7c615f8020c531 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Adler <madler@alumni.caltech.edu>
|
||||
Date: Tue, 17 Apr 2018 22:09:22 -0700
|
||||
Subject: [PATCH] Fix a bug that can crash deflate on some input when using
|
||||
Z_FIXED.
|
||||
|
||||
This bug was reported by Danilo Ramos of Eideticom, Inc. It has
|
||||
lain in wait 13 years before being found! The bug was introduced
|
||||
in zlib 1.2.2.2, with the addition of the Z_FIXED option. That
|
||||
option forces the use of fixed Huffman codes. For rare inputs with
|
||||
a large number of distant matches, the pending buffer into which
|
||||
the compressed data is written can overwrite the distance symbol
|
||||
table which it overlays. That results in corrupted output due to
|
||||
invalid distances, and can result in out-of-bound accesses,
|
||||
crashing the application.
|
||||
|
||||
The fix here combines the distance buffer and literal/length
|
||||
buffers into a single symbol buffer. Now three bytes of pending
|
||||
buffer space are opened up for each literal or length/distance
|
||||
pair consumed, instead of the previous two bytes. This assures
|
||||
that the pending buffer cannot overwrite the symbol table, since
|
||||
the maximum fixed code compressed length/distance is 31 bits, and
|
||||
since there are four bytes of pending space for every three bytes
|
||||
of symbol space.
|
||||
---
|
||||
deflate.c | 74 ++++++++++++++++++++++++++++++++++++++++---------------
|
||||
deflate.h | 25 +++++++++----------
|
||||
trees.c | 50 +++++++++++--------------------------
|
||||
3 files changed, 79 insertions(+), 70 deletions(-)
|
||||
|
||||
diff --git a/deflate.c b/deflate.c
|
||||
index 425babc00..19cba873a 100644
|
||||
--- a/deflate.c
|
||||
+++ b/deflate.c
|
||||
@@ -255,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
int wrap = 1;
|
||||
static const char my_version[] = ZLIB_VERSION;
|
||||
|
||||
- ushf *overlay;
|
||||
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
|
||||
- * output size for (length,distance) codes is <= 24 bits.
|
||||
- */
|
||||
-
|
||||
if (version == Z_NULL || version[0] != my_version[0] ||
|
||||
stream_size != sizeof(z_stream)) {
|
||||
return Z_VERSION_ERROR;
|
||||
@@ -329,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
|
||||
s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
|
||||
|
||||
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
|
||||
- s->pending_buf = (uchf *) overlay;
|
||||
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
|
||||
+ /* We overlay pending_buf and sym_buf. This works since the average size
|
||||
+ * for length/distance pairs over any compressed block is assured to be 31
|
||||
+ * bits or less.
|
||||
+ *
|
||||
+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
|
||||
+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
|
||||
+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
|
||||
+ * possible fixed-codes length/distance pair is then 31 bits total.
|
||||
+ *
|
||||
+ * sym_buf starts one-fourth of the way into pending_buf. So there are
|
||||
+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
|
||||
+ * in sym_buf is three bytes -- two for the distance and one for the
|
||||
+ * literal/length. As each symbol is consumed, the pointer to the next
|
||||
+ * sym_buf value to read moves forward three bytes. From that symbol, up to
|
||||
+ * 31 bits are written to pending_buf. The closest the written pending_buf
|
||||
+ * bits gets to the next sym_buf symbol to read is just before the last
|
||||
+ * code is written. At that time, 31*(n-2) bits have been written, just
|
||||
+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
|
||||
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
|
||||
+ * symbols are written.) The closest the writing gets to what is unread is
|
||||
+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
|
||||
+ * can range from 128 to 32768.
|
||||
+ *
|
||||
+ * Therefore, at a minimum, there are 142 bits of space between what is
|
||||
+ * written and what is read in the overlain buffers, so the symbols cannot
|
||||
+ * be overwritten by the compressed data. That space is actually 139 bits,
|
||||
+ * due to the three-bit fixed-code block header.
|
||||
+ *
|
||||
+ * That covers the case where either Z_FIXED is specified, forcing fixed
|
||||
+ * codes, or when the use of fixed codes is chosen, because that choice
|
||||
+ * results in a smaller compressed block than dynamic codes. That latter
|
||||
+ * condition then assures that the above analysis also covers all dynamic
|
||||
+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
|
||||
+ * fewer bits than a fixed-code block would for the same set of symbols.
|
||||
+ * Therefore its average symbol length is assured to be less than 31. So
|
||||
+ * the compressed data for a dynamic block also cannot overwrite the
|
||||
+ * symbols from which it is being constructed.
|
||||
+ */
|
||||
+
|
||||
+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
|
||||
+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
|
||||
|
||||
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
|
||||
s->pending_buf == Z_NULL) {
|
||||
@@ -340,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
deflateEnd (strm);
|
||||
return Z_MEM_ERROR;
|
||||
}
|
||||
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
|
||||
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
|
||||
+ s->sym_buf = s->pending_buf + s->lit_bufsize;
|
||||
+ s->sym_end = (s->lit_bufsize - 1) * 3;
|
||||
+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
|
||||
+ * on 16 bit machines and because stored blocks are restricted to
|
||||
+ * 64K-1 bytes.
|
||||
+ */
|
||||
|
||||
s->level = level;
|
||||
s->strategy = strategy;
|
||||
@@ -552,7 +589,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
|
||||
|
||||
if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
|
||||
s = strm->state;
|
||||
- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
|
||||
+ if (s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
|
||||
return Z_BUF_ERROR;
|
||||
do {
|
||||
put = Buf_size - s->bi_valid;
|
||||
@@ -1113,7 +1150,6 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
#else
|
||||
deflate_state *ds;
|
||||
deflate_state *ss;
|
||||
- ushf *overlay;
|
||||
|
||||
|
||||
if (deflateStateCheck(source) || dest == Z_NULL) {
|
||||
@@ -1133,8 +1169,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
|
||||
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
|
||||
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
|
||||
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
|
||||
- ds->pending_buf = (uchf *) overlay;
|
||||
+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
|
||||
|
||||
if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
|
||||
ds->pending_buf == Z_NULL) {
|
||||
@@ -1148,8 +1183,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
|
||||
|
||||
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
|
||||
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
|
||||
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
|
||||
+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
|
||||
|
||||
ds->l_desc.dyn_tree = ds->dyn_ltree;
|
||||
ds->d_desc.dyn_tree = ds->dyn_dtree;
|
||||
@@ -1925,7 +1959,7 @@ local block_state deflate_fast(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2056,7 +2090,7 @@ local block_state deflate_slow(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2131,7 +2165,7 @@ local block_state deflate_rle(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2170,7 +2204,7 @@ local block_state deflate_huff(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
diff --git a/deflate.h b/deflate.h
|
||||
index 23ecdd312..d4cf1a98b 100644
|
||||
--- a/deflate.h
|
||||
+++ b/deflate.h
|
||||
@@ -217,7 +217,7 @@ typedef struct internal_state {
|
||||
/* Depth of each subtree used as tie breaker for trees of equal frequency
|
||||
*/
|
||||
|
||||
- uchf *l_buf; /* buffer for literals or lengths */
|
||||
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
|
||||
|
||||
uInt lit_bufsize;
|
||||
/* Size of match buffer for literals/lengths. There are 4 reasons for
|
||||
@@ -239,13 +239,8 @@ typedef struct internal_state {
|
||||
* - I can't count above 4
|
||||
*/
|
||||
|
||||
- uInt last_lit; /* running index in l_buf */
|
||||
-
|
||||
- ushf *d_buf;
|
||||
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
|
||||
- * the same number of elements. To use different lengths, an extra flag
|
||||
- * array would be necessary.
|
||||
- */
|
||||
+ uInt sym_next; /* running index in sym_buf */
|
||||
+ uInt sym_end; /* symbol table full when sym_next reaches this */
|
||||
|
||||
ulg opt_len; /* bit length of current block with optimal trees */
|
||||
ulg static_len; /* bit length of current block with static trees */
|
||||
@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
|
||||
|
||||
# define _tr_tally_lit(s, c, flush) \
|
||||
{ uch cc = (c); \
|
||||
- s->d_buf[s->last_lit] = 0; \
|
||||
- s->l_buf[s->last_lit++] = cc; \
|
||||
+ s->sym_buf[s->sym_next++] = 0; \
|
||||
+ s->sym_buf[s->sym_next++] = 0; \
|
||||
+ s->sym_buf[s->sym_next++] = cc; \
|
||||
s->dyn_ltree[cc].Freq++; \
|
||||
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||
+ flush = (s->sym_next == s->sym_end); \
|
||||
}
|
||||
# define _tr_tally_dist(s, distance, length, flush) \
|
||||
{ uch len = (uch)(length); \
|
||||
ush dist = (ush)(distance); \
|
||||
- s->d_buf[s->last_lit] = dist; \
|
||||
- s->l_buf[s->last_lit++] = len; \
|
||||
+ s->sym_buf[s->sym_next++] = dist; \
|
||||
+ s->sym_buf[s->sym_next++] = dist >> 8; \
|
||||
+ s->sym_buf[s->sym_next++] = len; \
|
||||
dist--; \
|
||||
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
|
||||
s->dyn_dtree[d_code(dist)].Freq++; \
|
||||
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||
+ flush = (s->sym_next == s->sym_end); \
|
||||
}
|
||||
#else
|
||||
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
|
||||
diff --git a/trees.c b/trees.c
|
||||
index 4f4a65011..decaeb7c3 100644
|
||||
--- a/trees.c
|
||||
+++ b/trees.c
|
||||
@@ -416,7 +416,7 @@ local void init_block(s)
|
||||
|
||||
s->dyn_ltree[END_BLOCK].Freq = 1;
|
||||
s->opt_len = s->static_len = 0L;
|
||||
- s->last_lit = s->matches = 0;
|
||||
+ s->sym_next = s->matches = 0;
|
||||
}
|
||||
|
||||
#define SMALLEST 1
|
||||
@@ -948,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
|
||||
|
||||
Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
|
||||
opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
|
||||
- s->last_lit));
|
||||
+ s->sym_next / 3));
|
||||
|
||||
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
|
||||
|
||||
@@ -1017,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||
unsigned dist; /* distance of matched string */
|
||||
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
|
||||
{
|
||||
- s->d_buf[s->last_lit] = (ush)dist;
|
||||
- s->l_buf[s->last_lit++] = (uch)lc;
|
||||
+ s->sym_buf[s->sym_next++] = dist;
|
||||
+ s->sym_buf[s->sym_next++] = dist >> 8;
|
||||
+ s->sym_buf[s->sym_next++] = lc;
|
||||
if (dist == 0) {
|
||||
/* lc is the unmatched char */
|
||||
s->dyn_ltree[lc].Freq++;
|
||||
@@ -1033,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||
s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
|
||||
s->dyn_dtree[d_code(dist)].Freq++;
|
||||
}
|
||||
-
|
||||
-#ifdef TRUNCATE_BLOCK
|
||||
- /* Try to guess if it is profitable to stop the current block here */
|
||||
- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
|
||||
- /* Compute an upper bound for the compressed length */
|
||||
- ulg out_length = (ulg)s->last_lit*8L;
|
||||
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
|
||||
- int dcode;
|
||||
- for (dcode = 0; dcode < D_CODES; dcode++) {
|
||||
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
|
||||
- (5L+extra_dbits[dcode]);
|
||||
- }
|
||||
- out_length >>= 3;
|
||||
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
|
||||
- s->last_lit, in_length, out_length,
|
||||
- 100L - out_length*100L/in_length));
|
||||
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
|
||||
- }
|
||||
-#endif
|
||||
- return (s->last_lit == s->lit_bufsize-1);
|
||||
- /* We avoid equality with lit_bufsize because of wraparound at 64K
|
||||
- * on 16 bit machines and because stored blocks are restricted to
|
||||
- * 64K-1 bytes.
|
||||
- */
|
||||
+ return (s->sym_next == s->sym_end);
|
||||
}
|
||||
|
||||
/* ===========================================================================
|
||||
@@ -1069,13 +1047,14 @@ local void compress_block(s, ltree, dtree)
|
||||
{
|
||||
unsigned dist; /* distance of matched string */
|
||||
int lc; /* match length or unmatched char (if dist == 0) */
|
||||
- unsigned lx = 0; /* running index in l_buf */
|
||||
+ unsigned sx = 0; /* running index in sym_buf */
|
||||
unsigned code; /* the code to send */
|
||||
int extra; /* number of extra bits to send */
|
||||
|
||||
- if (s->last_lit != 0) do {
|
||||
- dist = s->d_buf[lx];
|
||||
- lc = s->l_buf[lx++];
|
||||
+ if (s->sym_next != 0) do {
|
||||
+ dist = s->sym_buf[sx++] & 0xff;
|
||||
+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
|
||||
+ lc = s->sym_buf[sx++];
|
||||
if (dist == 0) {
|
||||
send_code(s, lc, ltree); /* send a literal byte */
|
||||
Tracecv(isgraph(lc), (stderr," '%c' ", lc));
|
||||
@@ -1100,11 +1079,10 @@ local void compress_block(s, ltree, dtree)
|
||||
}
|
||||
} /* literal or match pair ? */
|
||||
|
||||
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
|
||||
- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
|
||||
- "pendingBuf overflow");
|
||||
+ /* Check that the overlay between pending_buf and sym_buf is ok: */
|
||||
+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
|
||||
|
||||
- } while (lx < s->last_lit);
|
||||
+ } while (sx < s->sym_next);
|
||||
|
||||
send_code(s, END_BLOCK, ltree);
|
||||
}
|
||||
@@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://zlib.h;beginline=6;endline=23;md5=5377232268e952e9ef6
|
||||
|
||||
SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz \
|
||||
file://ldflags-tests.patch \
|
||||
file://CVE-2018-25032.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
UPSTREAM_CHECK_URI = "http://zlib.net/"
|
||||
|
||||
@@ -12,7 +12,7 @@ INHIBIT_DEFAULT_DEPS = "1"
|
||||
SRCREV = "805517123cbfe33d17c989a18e78c5789fab0437"
|
||||
PV = "20210722+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.savannah.gnu.org/config.git;branch=master \
|
||||
SRC_URI = "git://git.savannah.gnu.org/git/config.git;protocol=https;branch=master \
|
||||
file://gnu-configize.in"
|
||||
S = "${WORKDIR}/git"
|
||||
UPSTREAM_CHECK_COMMITS = "1"
|
||||
|
||||
@@ -13,7 +13,7 @@ SRC_URI:append:class-nativesdk = " \
|
||||
file://older-glibc-symbols.patch"
|
||||
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
|
||||
|
||||
SRCREV = "d34f2f6cedccf8488730001bcbde6bb7499f8814"
|
||||
SRCREV = "2b4b88eb513335b0ece55fe51854693d9b20de35"
|
||||
S = "${WORKDIR}/git"
|
||||
PV = "1.9.0+git${SRCPV}"
|
||||
|
||||
|
||||
@@ -1,124 +1,52 @@
|
||||
From 30a3906a0a21120fa6bbc918b6258ab9303fbeaa Mon Sep 17 00:00:00 2001
|
||||
From: Scott Garman <scott.a.garman@intel.com>
|
||||
Date: Thu, 14 Apr 2016 12:28:57 +0200
|
||||
Subject: [PATCH] Disable use of syslog for sysroot
|
||||
From 8b845fff891798a03bdf21354b52e4487c2c0200 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Purdie <richard.purdie@linuxfoundation.org>
|
||||
Date: Thu, 14 Apr 2022 23:11:53 +0000
|
||||
Subject: [PATCH] Disable use of syslog for shadow-native tools
|
||||
|
||||
Disable use of syslog to prevent sysroot user and group additions from
|
||||
writing entries to the host's syslog. This patch should only be used
|
||||
with the shadow-native recipe.
|
||||
|
||||
Upstream-Status: Inappropriate [disable feature]
|
||||
|
||||
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
|
||||
Upstream-Status: Inappropriate [OE specific configuration]
|
||||
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
||||
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
|
||||
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
|
||||
|
||||
---
|
||||
src/groupadd.c | 3 +++
|
||||
src/groupdel.c | 3 +++
|
||||
src/groupmems.c | 3 +++
|
||||
src/groupmod.c | 3 +++
|
||||
src/useradd.c | 3 +++
|
||||
src/userdel.c | 4 ++++
|
||||
src/usermod.c | 3 +++
|
||||
7 files changed, 22 insertions(+)
|
||||
configure.ac | 2 +-
|
||||
src/login_nopam.c | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/groupadd.c b/src/groupadd.c
|
||||
index d7f68b1..5fe5f43 100644
|
||||
--- a/src/groupadd.c
|
||||
+++ b/src/groupadd.c
|
||||
@@ -34,6 +34,9 @@
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5dcae19..b2c58f5 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -204,7 +204,7 @@ AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
|
||||
[Path to passwd program.])
|
||||
|
||||
dnl XXX - quick hack, should disappear before anyone notices :).
|
||||
-AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog().])
|
||||
+#AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog().])
|
||||
if test "$ac_cv_func_ruserok" = "yes"; then
|
||||
AC_DEFINE(RLOGIN, 1, [Define if login should support the -r flag for rlogind.])
|
||||
AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).])
|
||||
diff --git a/src/login_nopam.c b/src/login_nopam.c
|
||||
index df6ba88..fc24e13 100644
|
||||
--- a/src/login_nopam.c
|
||||
+++ b/src/login_nopam.c
|
||||
@@ -29,7 +29,6 @@
|
||||
#ifndef USE_PAM
|
||||
#ident "$Id$"
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
-#include "prototypes.h"
|
||||
/*
|
||||
* This module implements a simple but effective form of login access
|
||||
* control based on login names and on host (or domain) names, internet
|
||||
@@ -57,6 +56,8 @@
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h> /* for inet_ntoa() */
|
||||
|
||||
+#include "prototypes.h"
|
||||
+
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
diff --git a/src/groupdel.c b/src/groupdel.c
|
||||
index 5c89312..2aefc5a 100644
|
||||
--- a/src/groupdel.c
|
||||
+++ b/src/groupdel.c
|
||||
@@ -34,6 +34,9 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
diff --git a/src/groupmems.c b/src/groupmems.c
|
||||
index 654a8f3..6b2026b 100644
|
||||
--- a/src/groupmems.c
|
||||
+++ b/src/groupmems.c
|
||||
@@ -32,6 +32,9 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
#include <grp.h>
|
||||
diff --git a/src/groupmod.c b/src/groupmod.c
|
||||
index acd6f35..a2c5247 100644
|
||||
--- a/src/groupmod.c
|
||||
+++ b/src/groupmod.c
|
||||
@@ -34,6 +34,9 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
diff --git a/src/useradd.c b/src/useradd.c
|
||||
index 127177e..b80e505 100644
|
||||
--- a/src/useradd.c
|
||||
+++ b/src/useradd.c
|
||||
@@ -34,6 +34,9 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
diff --git a/src/userdel.c b/src/userdel.c
|
||||
index 79a7c89..c1e010a 100644
|
||||
--- a/src/userdel.c
|
||||
+++ b/src/userdel.c
|
||||
@@ -31,6 +31,10 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
+
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <assert.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
diff --git a/src/usermod.c b/src/usermod.c
|
||||
index 03bb9b9..e15fdd4 100644
|
||||
--- a/src/usermod.c
|
||||
+++ b/src/usermod.c
|
||||
@@ -34,6 +34,9 @@
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
+/* Disable use of syslog since we're running this command against a sysroot */
|
||||
+#undef USE_SYSLOG
|
||||
+
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#if !defined(MAXHOSTNAMELEN) || (MAXHOSTNAMELEN < 64)
|
||||
#undef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 256
|
||||
|
||||
67
meta/recipes-extended/unzip/unzip/CVE-2021-4217.patch
Normal file
67
meta/recipes-extended/unzip/unzip/CVE-2021-4217.patch
Normal file
@@ -0,0 +1,67 @@
|
||||
From 731d698377dbd1f5b1b90efeb8094602ed59fc40 Mon Sep 17 00:00:00 2001
|
||||
From: Nils Bars <nils.bars@t-online.de>
|
||||
Date: Mon, 17 Jan 2022 16:53:16 +0000
|
||||
Subject: [PATCH] Fix null pointer dereference and use of uninitialized data
|
||||
|
||||
This fixes a bug that causes use of uninitialized heap data if `readbuf` fails
|
||||
to read as many bytes as indicated by the extra field length attribute.
|
||||
Furthermore, this fixes a null pointer dereference if an archive contains an
|
||||
`EF_UNIPATH` extra field but does not have a filename set.
|
||||
---
|
||||
fileio.c | 5 ++++-
|
||||
process.c | 6 +++++-
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
---
|
||||
|
||||
Patch from:
|
||||
https://bugs.launchpad.net/ubuntu/+source/unzip/+bug/1957077
|
||||
https://launchpadlibrarian.net/580782282/0001-Fix-null-pointer-dereference-and-use-of-uninitialized-data.patch
|
||||
Regenerated to apply without offsets.
|
||||
|
||||
CVE: CVE-2021-4217
|
||||
|
||||
Upstream-Status: Pending [infozip upstream inactive]
|
||||
|
||||
Signed-off-by: Joe Slater <joe.slater@windriver.com>
|
||||
|
||||
|
||||
diff --git a/fileio.c b/fileio.c
|
||||
index 14460f3..1dc319e 100644
|
||||
--- a/fileio.c
|
||||
+++ b/fileio.c
|
||||
@@ -2301,8 +2301,11 @@ int do_string(__G__ length, option) /* return PK-type error code */
|
||||
seek_zipf(__G__ G.cur_zipfile_bufstart - G.extra_bytes +
|
||||
(G.inptr-G.inbuf) + length);
|
||||
} else {
|
||||
- if (readbuf(__G__ (char *)G.extra_field, length) == 0)
|
||||
+ unsigned bytes_read = readbuf(__G__ (char *)G.extra_field, length);
|
||||
+ if (bytes_read == 0)
|
||||
return PK_EOF;
|
||||
+ if (bytes_read != length)
|
||||
+ return PK_ERR;
|
||||
/* Looks like here is where extra fields are read */
|
||||
if (getZip64Data(__G__ G.extra_field, length) != PK_COOL)
|
||||
{
|
||||
diff --git a/process.c b/process.c
|
||||
index 5f8f6c6..de843a5 100644
|
||||
--- a/process.c
|
||||
+++ b/process.c
|
||||
@@ -2058,10 +2058,14 @@ int getUnicodeData(__G__ ef_buf, ef_len)
|
||||
G.unipath_checksum = makelong(offset + ef_buf);
|
||||
offset += 4;
|
||||
|
||||
+ if (!G.filename_full) {
|
||||
+ /* Check if we have a unicode extra section but no filename set */
|
||||
+ return PK_ERR;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Compute 32-bit crc
|
||||
*/
|
||||
-
|
||||
chksum = crc32(chksum, (uch *)(G.filename_full),
|
||||
strlen(G.filename_full));
|
||||
|
||||
--
|
||||
2.32.0
|
||||
|
||||
@@ -27,6 +27,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/
|
||||
file://CVE-2019-13232_p2.patch \
|
||||
file://CVE-2019-13232_p3.patch \
|
||||
file://unzip_optimization.patch \
|
||||
file://CVE-2021-4217.patch \
|
||||
"
|
||||
UPSTREAM_VERSION_UNKNOWN = "1"
|
||||
|
||||
|
||||
96
meta/recipes-extended/xz/xz/CVE-2022-1271.patch
Normal file
96
meta/recipes-extended/xz/xz/CVE-2022-1271.patch
Normal file
@@ -0,0 +1,96 @@
|
||||
From dc932a1e9c0d9f1db71be11a9b82496e3a72f112 Mon Sep 17 00:00:00 2001
|
||||
From: Lasse Collin <lasse.collin@tukaani.org>
|
||||
Date: Tue, 29 Mar 2022 19:19:12 +0300
|
||||
Subject: [PATCH] xzgrep: Fix escaping of malicious filenames (ZDI-CAN-16587).
|
||||
|
||||
Malicious filenames can make xzgrep to write to arbitrary files
|
||||
or (with a GNU sed extension) lead to arbitrary code execution.
|
||||
|
||||
xzgrep from XZ Utils versions up to and including 5.2.5 are
|
||||
affected. 5.3.1alpha and 5.3.2alpha are affected as well.
|
||||
This patch works for all of them.
|
||||
|
||||
This bug was inherited from gzip's zgrep. gzip 1.12 includes
|
||||
a fix for zgrep.
|
||||
|
||||
The issue with the old sed script is that with multiple newlines,
|
||||
the N-command will read the second line of input, then the
|
||||
s-commands will be skipped because it's not the end of the
|
||||
file yet, then a new sed cycle starts and the pattern space
|
||||
is printed and emptied. So only the last line or two get escaped.
|
||||
|
||||
One way to fix this would be to read all lines into the pattern
|
||||
space first. However, the included fix is even simpler: All lines
|
||||
except the last line get a backslash appended at the end. To ensure
|
||||
that shell command substitution doesn't eat a possible trailing
|
||||
newline, a colon is appended to the filename before escaping.
|
||||
The colon is later used to separate the filename from the grep
|
||||
output so it is fine to add it here instead of a few lines later.
|
||||
|
||||
The old code also wasn't POSIX compliant as it used \n in the
|
||||
replacement section of the s-command. Using \<newline> is the
|
||||
POSIX compatible method.
|
||||
|
||||
LC_ALL=C was added to the two critical sed commands. POSIX sed
|
||||
manual recommends it when using sed to manipulate pathnames
|
||||
because in other locales invalid multibyte sequences might
|
||||
cause issues with some sed implementations. In case of GNU sed,
|
||||
these particular sed scripts wouldn't have such problems but some
|
||||
other scripts could have, see:
|
||||
|
||||
info '(sed)Locale Considerations'
|
||||
|
||||
This vulnerability was discovered by:
|
||||
cleemy desu wayo working with Trend Micro Zero Day Initiative
|
||||
|
||||
Thanks to Jim Meyering and Paul Eggert discussing the different
|
||||
ways to fix this and for coordinating the patch release schedule
|
||||
with gzip.
|
||||
|
||||
Upstream-Status: Backport [https://tukaani.org/xz/xzgrep-ZDI-CAN-16587.patch]
|
||||
CVE: CVE-2022-1271
|
||||
|
||||
Signed-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>
|
||||
---
|
||||
src/scripts/xzgrep.in | 20 ++++++++++++--------
|
||||
1 file changed, 12 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in
|
||||
index 9db5c3a..f64dddb 100644
|
||||
--- a/src/scripts/xzgrep.in
|
||||
+++ b/src/scripts/xzgrep.in
|
||||
@@ -179,22 +179,26 @@ for i; do
|
||||
{ test $# -eq 1 || test $no_filename -eq 1; }; then
|
||||
eval "$grep"
|
||||
else
|
||||
+ # Append a colon so that the last character will never be a newline
|
||||
+ # which would otherwise get lost in shell command substitution.
|
||||
+ i="$i:"
|
||||
+
|
||||
+ # Escape & \ | and newlines only if such characters are present
|
||||
+ # (speed optimization).
|
||||
case $i in
|
||||
(*'
|
||||
'* | *'&'* | *'\'* | *'|'*)
|
||||
- i=$(printf '%s\n' "$i" |
|
||||
- sed '
|
||||
- $!N
|
||||
- $s/[&\|]/\\&/g
|
||||
- $s/\n/\\n/g
|
||||
- ');;
|
||||
+ i=$(printf '%s\n' "$i" | LC_ALL=C sed 's/[&\|]/\\&/g; $!s/$/\\/');;
|
||||
esac
|
||||
- sed_script="s|^|$i:|"
|
||||
+
|
||||
+ # $i already ends with a colon so don't add it here.
|
||||
+ sed_script="s|^|$i|"
|
||||
|
||||
# Fail if grep or sed fails.
|
||||
r=$(
|
||||
exec 4>&1
|
||||
- (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
|
||||
+ (eval "$grep" 4>&-; echo $? >&4) 3>&- |
|
||||
+ LC_ALL=C sed "$sed_script" >&3 4>&-
|
||||
) || r=2
|
||||
exit $r
|
||||
fi >&3 5>&-
|
||||
@@ -23,7 +23,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=97d554a32881fee0aa283d96e47cb24a \
|
||||
file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
|
||||
"
|
||||
|
||||
SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
|
||||
SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz \
|
||||
file://CVE-2022-1271.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "0d270c997aff29708c74d53f599ef717"
|
||||
SRC_URI[sha256sum] = "f6f4910fd033078738bd82bfba4f49219d03b17eb0794eb91efbae419f4aba10"
|
||||
UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
|
||||
|
||||
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
|
||||
|
||||
DEPENDS = "libdrm virtual/libgl virtual/libgbm libepoxy"
|
||||
SRCREV = "363915595e05fb252e70d6514be2f0c0b5ca312b"
|
||||
SRC_URI = "git://anongit.freedesktop.org/virglrenderer;branch=branch-0.9.1 \
|
||||
SRC_URI = "git://anongit.freedesktop.org/git/virglrenderer;branch=branch-0.9.1 \
|
||||
file://0001-meson.build-use-python3-directly-for-python.patch \
|
||||
file://cve-2022-0135.patch \
|
||||
file://cve-2022-0175.patch \
|
||||
|
||||
@@ -6,7 +6,7 @@ using file descriptor passing."
|
||||
|
||||
require xorg-lib-common.inc
|
||||
|
||||
LICENSE = "MIT-style"
|
||||
LICENSE = "HPND"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac"
|
||||
|
||||
DEPENDS += "virtual/libx11"
|
||||
|
||||
@@ -72,7 +72,7 @@ LICENSE = "\
|
||||
LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
|
||||
file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
|
||||
file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
|
||||
file://LICENSE.amdgpu;md5=d357524f5099e2a3db3c1838921c593f \
|
||||
file://LICENSE.amdgpu;md5=44c1166d052226cb2d6c8d7400090203 \
|
||||
file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
|
||||
file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
|
||||
file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
|
||||
@@ -132,7 +132,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
|
||||
file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
|
||||
file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
|
||||
file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
|
||||
file://WHENCE;md5=ed3d7426e4df06fbadcca24ebf00cc5f \
|
||||
file://WHENCE;md5=d3eb82686904888f8bbbe8d865371404 \
|
||||
"
|
||||
|
||||
# These are not common licenses, set NO_GENERIC_LICENSE for them
|
||||
@@ -205,7 +205,7 @@ PE = "1"
|
||||
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
|
||||
|
||||
SRC_URI[sha256sum] = "e2e46fa618414952bbf2f6920cd3abcddbef45bfb7d1352994b4bfc35394d177"
|
||||
SRC_URI[sha256sum] = "376e0b3d7b4f8aaa2abf7f5ab74803dcf14b06b94e3d841b1467cd9a2848255e"
|
||||
|
||||
inherit allarch
|
||||
|
||||
@@ -352,7 +352,7 @@ FILES:${PN}-carl9170 = " \
|
||||
RDEPENDS:${PN}-carl9170 += "${PN}-gplv2-license"
|
||||
|
||||
# For QualCommAthos
|
||||
LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k"
|
||||
LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware"
|
||||
LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
|
||||
LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
|
||||
LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
|
||||
@@ -376,7 +376,7 @@ FILES:${PN}-qca = " \
|
||||
${nonarch_base_libdir}/firmware/qca \
|
||||
"
|
||||
|
||||
RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license"
|
||||
RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license"
|
||||
RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
|
||||
RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license"
|
||||
RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
|
||||
@@ -11,13 +11,13 @@ python () {
|
||||
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
|
||||
}
|
||||
|
||||
SRCREV_machine ?= "abd24ddc62072fcc5ecf12cf8feadd2e6fda59bd"
|
||||
SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
|
||||
SRCREV_machine ?= "88b754b80392e1f1ac7df46595f9712edc8aec02"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LINUX_VERSION ?= "5.10.103"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig"
|
||||
|
||||
require recipes-kernel/linux/linux-yocto.inc
|
||||
|
||||
LINUX_VERSION ?= "5.10.103"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
@@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native"
|
||||
KMETA = "kernel-meta"
|
||||
KCONF_BSP_AUDIT_LEVEL = "2"
|
||||
|
||||
SRCREV_machine:qemuarm ?= "682b9a24accb1e3a305957dec28f7f565db95369"
|
||||
SRCREV_machine ?= "5e844e753c3e1f153af9dfee6b88e5dc1e57f30f"
|
||||
SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
|
||||
SRCREV_machine:qemuarm ?= "7dacc8332b0bc5600d97583f45b841c9724f2191"
|
||||
SRCREV_machine ?= "8dc46fa883d7b9a3412791f6731096e2e516d949"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
PV = "${LINUX_VERSION}+git${SRCPV}"
|
||||
|
||||
|
||||
@@ -13,17 +13,17 @@ KBRANCH:qemux86 ?= "v5.10/standard/base"
|
||||
KBRANCH:qemux86-64 ?= "v5.10/standard/base"
|
||||
KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64"
|
||||
|
||||
SRCREV_machine:qemuarm ?= "56cfcfb12870782355bacaf8bcde9e268f422140"
|
||||
SRCREV_machine:qemuarm64 ?= "3aab5bb12bc180d582a6f82e4a085f45a7b0c283"
|
||||
SRCREV_machine:qemumips ?= "d76ec4c19a876a3235567ab2cee2e33f2875f79a"
|
||||
SRCREV_machine:qemuppc ?= "513a8885de593e8b1f3c24595c015bb9b1d55563"
|
||||
SRCREV_machine:qemuriscv64 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
|
||||
SRCREV_machine:qemuriscv32 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
|
||||
SRCREV_machine:qemux86 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
|
||||
SRCREV_machine:qemux86-64 ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
|
||||
SRCREV_machine:qemumips64 ?= "b63b87635569c07343f25194abf008f1e27c0bca"
|
||||
SRCREV_machine ?= "de1b3b1aef1a5c3dec0676e152f6801e1cc309e5"
|
||||
SRCREV_meta ?= "792f1272dd0d68d5dba0ff35949b2094f818227e"
|
||||
SRCREV_machine:qemuarm ?= "6092497574895b1179a3c7a9e07c7f40c2d4c136"
|
||||
SRCREV_machine:qemuarm64 ?= "97ad6c5f9ffdb6b108cbbf99d9061dd0fe03e4e8"
|
||||
SRCREV_machine:qemumips ?= "e53b2d1867f7bdc2c0cc904a15992178688c3ad4"
|
||||
SRCREV_machine:qemuppc ?= "b12ed76165bfc9fe2b99fcc224b5e0134b7b533f"
|
||||
SRCREV_machine:qemuriscv64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemuriscv32 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemux86 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemux86-64 ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_machine:qemumips64 ?= "07580586b738406b4dec9bf91d4eecdb933f2a07"
|
||||
SRCREV_machine ?= "a8b4c628f382412e5e7df5750f2be711df95fa06"
|
||||
SRCREV_meta ?= "7767ab05bd3e525a287a7f9bfd780005b5eb25a3"
|
||||
|
||||
# remap qemuarm to qemuarma15 for the 5.8 kernel
|
||||
# KMACHINE:qemuarm ?= "qemuarma15"
|
||||
@@ -32,7 +32,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
LINUX_VERSION ?= "5.10.103"
|
||||
LINUX_VERSION ?= "5.10.113"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
DEPENDS += "openssl-native util-linux-native"
|
||||
@@ -53,6 +53,9 @@ KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
|
||||
KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
|
||||
KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
|
||||
KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
|
||||
KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From c312bda00d2dc10ce5f6c1189acbefee5c6c8c6c Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Date: Tue, 29 Mar 2022 16:34:07 -0400
|
||||
Subject: [PATCH 01/10] Fix: compaction migratepages event name
|
||||
|
||||
The commit "fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)"
|
||||
|
||||
Triggers this warning:
|
||||
|
||||
LTTng: event provider mismatch: The event name needs to start with provider name + _ + one or more letter, provider: compaction, event name: mm_compaction_migratepages
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Change-Id: I01c7485af765084dafb33bf33ae392e60bfbf1e7
|
||||
---
|
||||
include/instrumentation/events/compaction.h | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h
|
||||
index 340e41f5..15964537 100644
|
||||
--- a/include/instrumentation/events/compaction.h
|
||||
+++ b/include/instrumentation/events/compaction.h
|
||||
@@ -98,7 +98,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template,
|
||||
#endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
-LTTNG_TRACEPOINT_EVENT(mm_compaction_migratepages,
|
||||
+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
+
|
||||
+ compaction_migratepages,
|
||||
|
||||
TP_PROTO(unsigned long nr_all,
|
||||
unsigned int nr_succeeded),
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -1,394 +0,0 @@
|
||||
From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 13 Sep 2021 12:00:38 -0400
|
||||
Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug
|
||||
functions. (v5.15)
|
||||
|
||||
The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13
|
||||
and removed in v5.15.
|
||||
|
||||
See upstream commits :
|
||||
|
||||
commit 8c854303ce0e38e5bbedd725ff39da7e235865d8
|
||||
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Tue Aug 3 16:16:21 2021 +0200
|
||||
|
||||
cpu/hotplug: Remove deprecated CPU-hotplug functions.
|
||||
|
||||
No users in tree use the deprecated CPU-hotplug functions anymore.
|
||||
|
||||
Remove them.
|
||||
|
||||
Introduced in v4.13 :
|
||||
|
||||
commit 8f553c498e1772cccb39a114da4a498d22992758
|
||||
Author: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed May 24 10:15:12 2017 +0200
|
||||
|
||||
cpu/hotplug: Provide cpus_read|write_[un]lock()
|
||||
|
||||
The counting 'rwsem' hackery of get|put_online_cpus() is going to be
|
||||
replaced by percpu rwsem.
|
||||
|
||||
Rename the functions to make it clear that it's locking and not some
|
||||
refcount style interface. These new functions will be used for the
|
||||
preparatory patches which make the code ready for the percpu rwsem
|
||||
conversion.
|
||||
|
||||
Rename all instances in the cpu hotplug code while at it.
|
||||
|
||||
Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb]
|
||||
|
||||
Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/cpu.h | 44 +++++++++++++++++++++++
|
||||
src/lib/ringbuffer/ring_buffer_backend.c | 8 ++---
|
||||
src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++-----
|
||||
src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++----
|
||||
src/lttng-context-perf-counters.c | 11 +++---
|
||||
src/lttng-statedump-impl.c | 6 ++--
|
||||
6 files changed, 74 insertions(+), 27 deletions(-)
|
||||
create mode 100644 include/wrapper/cpu.h
|
||||
|
||||
diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h
|
||||
new file mode 100644
|
||||
index 00000000..cbee1962
|
||||
--- /dev/null
|
||||
+++ b/include/wrapper/cpu.h
|
||||
@@ -0,0 +1,44 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
+ *
|
||||
+ * wrapper/cpu.h
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LTTNG_WRAPPER_CPU_H
|
||||
+#define _LTTNG_WRAPPER_CPU_H
|
||||
+
|
||||
+#include <linux/cpu.h>
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0))
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_lock(void)
|
||||
+{
|
||||
+ cpus_read_lock();
|
||||
+}
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_unlock(void)
|
||||
+{
|
||||
+ cpus_read_unlock();
|
||||
+}
|
||||
+
|
||||
+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_lock(void)
|
||||
+{
|
||||
+ get_online_cpus();
|
||||
+}
|
||||
+
|
||||
+static inline
|
||||
+void lttng_cpus_read_unlock(void)
|
||||
+{
|
||||
+ put_online_cpus();
|
||||
+}
|
||||
+
|
||||
+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
|
||||
+
|
||||
+#endif /* _LTTNG_WRAPPER_CPU_H */
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
index 26efb2bc..9a339be0 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_backend.c
|
||||
@@ -12,10 +12,10 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/slab.h>
|
||||
-#include <linux/cpu.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/mm.h>
|
||||
#include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
|
||||
#include <ringbuffer/config.h>
|
||||
@@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb,
|
||||
chanb->cpu_hp_notifier.priority = 5;
|
||||
register_hotcpu_notifier(&chanb->cpu_hp_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(i) {
|
||||
ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
|
||||
chanb, i);
|
||||
if (ret)
|
||||
goto free_bufs; /* cpu hotplug locked */
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(i) {
|
||||
ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
|
||||
@@ -485,7 +485,7 @@ free_bufs:
|
||||
*/
|
||||
#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
unregister_hotcpu_notifier(&chanb->cpu_hp_notifier);
|
||||
#endif
|
||||
#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
index e9056118..87a575d0 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_frontend.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include <ringbuffer/iterator.h>
|
||||
#include <ringbuffer/nohz.h>
|
||||
#include <wrapper/atomic.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/kref.h>
|
||||
#include <wrapper/percpu-defs.h>
|
||||
#include <wrapper/timer.h>
|
||||
@@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
|
||||
int cpu;
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
chan->cpu_hp_enable = 0;
|
||||
for_each_online_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
@@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
|
||||
lib_ring_buffer_stop_switch_timer(buf);
|
||||
lib_ring_buffer_stop_read_timer(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
unregister_cpu_notifier(&chan->cpu_hp_notifier);
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
@@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann
|
||||
const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
|
||||
lib_ring_buffer_set_quiescent(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
|
||||
|
||||
@@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha
|
||||
const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
|
||||
lib_ring_buffer_clear_quiescent(buf);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
|
||||
|
||||
@@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
|
||||
chan->cpu_hp_notifier.priority = 6;
|
||||
register_cpu_notifier(&chan->cpu_hp_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
cpu);
|
||||
@@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
|
||||
spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu));
|
||||
}
|
||||
chan->cpu_hp_enable = 1;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
|
||||
diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
index 25839af6..60c95ca6 100644
|
||||
--- a/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
+++ b/src/lib/ringbuffer/ring_buffer_iterator.c
|
||||
@@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include <ringbuffer/iterator.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/uaccess.h>
|
||||
#include <linux/jiffies.h>
|
||||
@@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
chan->hp_iter_notifier.priority = 10;
|
||||
register_cpu_notifier(&chan->hp_iter_notifier);
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
buf = per_cpu_ptr(chan->backend.buf, cpu);
|
||||
lib_ring_buffer_iterator_init(chan, buf);
|
||||
}
|
||||
chan->hp_iter_enable = 1;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#else
|
||||
for_each_possible_cpu(cpu) {
|
||||
buf = per_cpu_ptr(chan->backend.buf, cpu);
|
||||
@@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR);
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
/* Allow CPU hotplug to keep track of opened reader */
|
||||
chan->iter.read_open = 1;
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
@@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
goto error;
|
||||
buf->iter.read_open = 1;
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
buf = channel_get_ring_buffer(config, chan, 0);
|
||||
ret = lib_ring_buffer_iterator_open(buf);
|
||||
@@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
error:
|
||||
/* Error should always happen on CPU 0, hence no close is required. */
|
||||
CHAN_WARN_ON(chan, cpu != 0);
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(channel_iterator_open);
|
||||
@@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
int cpu;
|
||||
|
||||
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_channel_cpu(cpu, chan) {
|
||||
buf = channel_get_ring_buffer(config, chan, cpu);
|
||||
if (buf->iter.read_open) {
|
||||
@@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
|
||||
}
|
||||
}
|
||||
chan->iter.read_open = 0;
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
} else {
|
||||
buf = channel_get_ring_buffer(config, chan, 0);
|
||||
lib_ring_buffer_iterator_release(buf);
|
||||
diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c
|
||||
index b0227d47..372f05e0 100644
|
||||
--- a/src/lttng-context-perf-counters.c
|
||||
+++ b/src/lttng-context-perf-counters.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/events-internal.h>
|
||||
#include <ringbuffer/frontend_types.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/perf.h>
|
||||
#include <lttng/tracer.h>
|
||||
@@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu)
|
||||
perf_event_release_kernel(events[cpu]);
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
unregister_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
@@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
|
||||
perf_field->nb.priority = 0;
|
||||
register_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
for_each_online_cpu(cpu) {
|
||||
events[cpu] = wrapper_perf_event_create_kernel_counter(attr,
|
||||
cpu, NULL, overflow_callback);
|
||||
@@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
|
||||
goto counter_busy;
|
||||
}
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
perf_field->hp_enable = 1;
|
||||
}
|
||||
#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
|
||||
@@ -351,7 +352,7 @@ counter_error:
|
||||
if (events[cpu] && !IS_ERR(events[cpu]))
|
||||
perf_event_release_kernel(events[cpu]);
|
||||
}
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
unregister_cpu_notifier(&perf_field->nb);
|
||||
#endif
|
||||
diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c
|
||||
index 4dfbca0b..2b42783a 100644
|
||||
--- a/src/lttng-statedump-impl.c
|
||||
+++ b/src/lttng-statedump-impl.c
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <linux/file.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irqnr.h>
|
||||
-#include <linux/cpu.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/inetdevice.h>
|
||||
#include <linux/mm.h>
|
||||
@@ -34,6 +33,7 @@
|
||||
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/tracer.h>
|
||||
+#include <wrapper/cpu.h>
|
||||
#include <wrapper/irqdesc.h>
|
||||
#include <wrapper/fdtable.h>
|
||||
#include <wrapper/namespace.h>
|
||||
@@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
|
||||
* is to guarantee that each CPU has been in a state where is was in
|
||||
* syscall mode (i.e. not in a trap, an IRQ or a soft IRQ).
|
||||
*/
|
||||
- get_online_cpus();
|
||||
+ lttng_cpus_read_lock();
|
||||
atomic_set(&kernel_threads_to_run, num_online_cpus());
|
||||
for_each_online_cpu(cpu) {
|
||||
INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func);
|
||||
@@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
|
||||
}
|
||||
/* Wait for all threads to run */
|
||||
__wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0));
|
||||
- put_online_cpus();
|
||||
+ lttng_cpus_read_unlock();
|
||||
/* Our work is done */
|
||||
trace_lttng_statedump_end(session);
|
||||
return 0;
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From a7eb2e3d0a4beb1ee80b132927641dd05ef2d542 Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:49:32 -0400
|
||||
Subject: [PATCH 02/10] Fix: tracepoint event: allow same provider and event
|
||||
name
|
||||
|
||||
Using the same name for the provider (TRACE_SYSTEM) and event name
|
||||
causes a compilation error because the same identifiers are emitted
|
||||
twice.
|
||||
|
||||
Fix this by prefixing the provider identifier with
|
||||
"__provider_event_desc___".
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Change-Id: I8cdf8f859e35b8bd5c19737860d12f1ed546dfc2
|
||||
---
|
||||
include/lttng/tracepoint-event-impl.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/lttng/tracepoint-event-impl.h b/include/lttng/tracepoint-event-impl.h
|
||||
index 38b1dc43..dcb22247 100644
|
||||
--- a/include/lttng/tracepoint-event-impl.h
|
||||
+++ b/include/lttng/tracepoint-event-impl.h
|
||||
@@ -1255,7 +1255,7 @@ static const struct lttng_kernel_event_desc __event_desc___##_map = { \
|
||||
#define TP_ID1(_token, _system) _token##_system
|
||||
#define TP_ID(_token, _system) TP_ID1(_token, _system)
|
||||
|
||||
-static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE_SYSTEM)[] = {
|
||||
+static const struct lttng_kernel_event_desc * const TP_ID(__provider_event_desc___, TRACE_SYSTEM)[] = {
|
||||
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||
};
|
||||
|
||||
@@ -1274,8 +1274,8 @@ static const struct lttng_kernel_event_desc * const TP_ID(__event_desc___, TRACE
|
||||
/* non-const because list head will be modified when registered. */
|
||||
static __used struct lttng_kernel_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = {
|
||||
.provider_name = __stringify(TRACE_SYSTEM),
|
||||
- .event_desc = TP_ID(__event_desc___, TRACE_SYSTEM),
|
||||
- .nr_events = ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)),
|
||||
+ .event_desc = TP_ID(__provider_event_desc___, TRACE_SYSTEM),
|
||||
+ .nr_events = ARRAY_SIZE(TP_ID(__provider_event_desc___, TRACE_SYSTEM)),
|
||||
.head = { NULL, NULL },
|
||||
.lazy_init_head = { NULL, NULL },
|
||||
.lazy = 0,
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -1,829 +0,0 @@
|
||||
From c570be0da77e963d77bac099d468bc0cd5f1bd63 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 13 Sep 2021 14:16:22 -0400
|
||||
Subject: [PATCH 2/2] fix: Revert "Makefile: Enable -Wimplicit-fallthrough for
|
||||
Clang" (v5.15)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Starting with v5.15, "-Wimplicit-fallthrough=5" was added to the build
|
||||
flags which requires the use of "__attribute__((__fallthrough__))" to
|
||||
annotate fallthrough case statements.
|
||||
|
||||
See upstream commit by the man himself:
|
||||
|
||||
commit d936eb23874433caa3e3d841cfa16f5434b85dcf
|
||||
Author: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Thu Jul 15 18:05:31 2021 -0700
|
||||
|
||||
Revert "Makefile: Enable -Wimplicit-fallthrough for Clang"
|
||||
|
||||
This reverts commit b7eb335e26a9c7f258c96b3962c283c379d3ede0.
|
||||
|
||||
It turns out that the problem with the clang -Wimplicit-fallthrough
|
||||
warning is not about the kernel source code, but about clang itself, and
|
||||
that the warning is unusable until clang fixes its broken ways.
|
||||
|
||||
In particular, when you enable this warning for clang, you not only get
|
||||
warnings about implicit fallthroughs. You also get this:
|
||||
|
||||
warning: fallthrough annotation in unreachable code [-Wimplicit-fallthrough]
|
||||
|
||||
which is completely broken becasue it
|
||||
|
||||
(a) doesn't even tell you where the problem is (seriously: no line
|
||||
numbers, no filename, no nothing).
|
||||
|
||||
(b) is fundamentally broken anyway, because there are perfectly valid
|
||||
reasons to have a fallthrough statement even if it turns out that
|
||||
it can perhaps not be reached.
|
||||
|
||||
In the kernel, an example of that second case is code in the scheduler:
|
||||
|
||||
switch (state) {
|
||||
case cpuset:
|
||||
if (IS_ENABLED(CONFIG_CPUSETS)) {
|
||||
cpuset_cpus_allowed_fallback(p);
|
||||
state = possible;
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
case possible:
|
||||
|
||||
where if CONFIG_CPUSETS is enabled you actually never hit the
|
||||
fallthrough case at all. But that in no way makes the fallthrough
|
||||
wrong.
|
||||
|
||||
So the warning is completely broken, and enabling it for clang is a very
|
||||
bad idea.
|
||||
|
||||
In the meantime, we can keep the gcc option enabled, and make the gcc
|
||||
build use
|
||||
|
||||
-Wimplicit-fallthrough=5
|
||||
|
||||
which means that we will at least continue to require a proper
|
||||
fallthrough statement, and that gcc won't silently accept the magic
|
||||
comment versions. Because gcc does this all correctly, and while the odd
|
||||
"=5" part is kind of obscure, it's documented in [1]:
|
||||
|
||||
"-Wimplicit-fallthrough=5 doesn’t recognize any comments as
|
||||
fallthrough comments, only attributes disable the warning"
|
||||
|
||||
so if clang ever fixes its bad behavior we can try enabling it there again.
|
||||
|
||||
Upstream-Status: backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=c190d76e8c7b44d62b3651ab845b765c1b1f8104]
|
||||
|
||||
Change-Id: Iea69849592fb69ac04fb9bb28efcd6b8dce8ba88
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/counter/counter-api.h | 4 +-
|
||||
include/lttng/events-internal.h | 11 ++-
|
||||
include/wrapper/compiler_attributes.h | 34 +++++++
|
||||
src/lib/counter/counter.c | 13 ++-
|
||||
src/lttng-abi.c | 91 ++++++++++++------
|
||||
src/lttng-bytecode-interpreter.c | 4 +-
|
||||
src/lttng-bytecode-specialize.c | 5 +-
|
||||
src/lttng-events.c | 129 +++++++++++++++++---------
|
||||
src/lttng-string-utils.c | 3 +-
|
||||
src/probes/lttng-kretprobes.c | 7 +-
|
||||
10 files changed, 215 insertions(+), 86 deletions(-)
|
||||
create mode 100644 include/wrapper/compiler_attributes.h
|
||||
|
||||
diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h
|
||||
index fbc65818..c9f2b141 100644
|
||||
--- a/include/counter/counter-api.h
|
||||
+++ b/include/counter/counter-api.h
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/bitops.h>
|
||||
#include <counter/counter.h>
|
||||
#include <counter/counter-internal.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/limits.h>
|
||||
|
||||
/*
|
||||
@@ -256,7 +257,8 @@ static __always_inline int lttng_counter_add(const struct lib_counter_config *co
|
||||
const size_t *dimension_indexes, int64_t v)
|
||||
{
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
return __lttng_counter_add_percpu(config, counter, dimension_indexes, v);
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h
|
||||
index cd560de8..ca2190c4 100644
|
||||
--- a/include/lttng/events-internal.h
|
||||
+++ b/include/lttng/events-internal.h
|
||||
@@ -8,6 +8,8 @@
|
||||
#ifndef _LTTNG_EVENTS_INTERNAL_H
|
||||
#define _LTTNG_EVENTS_INTERNAL_H
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
+
|
||||
#include <lttng/events.h>
|
||||
|
||||
struct lttng_syscall_filter;
|
||||
@@ -561,9 +563,12 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern
|
||||
if (!type_integer)
|
||||
return false;
|
||||
switch (type_integer->size) {
|
||||
- case 8: /* Fall-through. */
|
||||
- case 16: /* Fall-through. */
|
||||
- case 32: /* Fall-through. */
|
||||
+ case 8:
|
||||
+ lttng_fallthrough;
|
||||
+ case 16:
|
||||
+ lttng_fallthrough;
|
||||
+ case 32:
|
||||
+ lttng_fallthrough;
|
||||
case 64:
|
||||
break;
|
||||
default:
|
||||
diff --git a/include/wrapper/compiler_attributes.h b/include/wrapper/compiler_attributes.h
|
||||
new file mode 100644
|
||||
index 00000000..c2c96e76
|
||||
--- /dev/null
|
||||
+++ b/include/wrapper/compiler_attributes.h
|
||||
@@ -0,0 +1,34 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
+ *
|
||||
+ * wrapper/compiler_attributes.h
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
|
||||
+ */
|
||||
+
|
||||
+#ifndef _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
|
||||
+#define _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
|
||||
+
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,20,0))
|
||||
+#include <linux/compiler_attributes.h>
|
||||
+#endif
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0))
|
||||
+
|
||||
+/*
|
||||
+ * Use the kernel provided fallthrough attribute macro.
|
||||
+ */
|
||||
+#define lttng_fallthrough fallthrough
|
||||
+
|
||||
+#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
|
||||
+
|
||||
+/*
|
||||
+ * Fallback to the comment for kernels pre 5.15 that don't build with
|
||||
+ * '-Wimplicit-fallthrough=5'.
|
||||
+ */
|
||||
+#define lttng_fallthrough do {} while (0) /* fallthrough */
|
||||
+
|
||||
+#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
|
||||
+
|
||||
+#endif /* _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H */
|
||||
diff --git a/src/lib/counter/counter.c b/src/lib/counter/counter.c
|
||||
index a4500a0e..bf038aac 100644
|
||||
--- a/src/lib/counter/counter.c
|
||||
+++ b/src/lib/counter/counter.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/cpumask.h>
|
||||
#include <counter/counter.h>
|
||||
#include <counter/counter-internal.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/limits.h>
|
||||
|
||||
@@ -324,7 +325,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
|
||||
*underflow = false;
|
||||
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
/* Read global counter. */
|
||||
ret = lttng_counter_read(config, counter, dimension_indexes,
|
||||
@@ -342,7 +344,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
|
||||
switch (config->alloc) {
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
break;
|
||||
- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU:
|
||||
//TODO: integrate with CPU hotplug and online cpus
|
||||
for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
|
||||
@@ -448,7 +451,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
|
||||
int cpu, ret;
|
||||
|
||||
switch (config->alloc) {
|
||||
- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
/* Clear global counter. */
|
||||
ret = lttng_counter_clear_cpu(config, counter, dimension_indexes, -1);
|
||||
@@ -462,7 +466,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
|
||||
switch (config->alloc) {
|
||||
case COUNTER_ALLOC_GLOBAL:
|
||||
break;
|
||||
- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
|
||||
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
|
||||
+ lttng_fallthrough;
|
||||
case COUNTER_ALLOC_PER_CPU:
|
||||
//TODO: integrate with CPU hotplug and online cpus
|
||||
for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
|
||||
diff --git a/src/lttng-abi.c b/src/lttng-abi.c
|
||||
index cc453894..eac1afd1 100644
|
||||
--- a/src/lttng-abi.c
|
||||
+++ b/src/lttng-abi.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <ringbuffer/vfs.h>
|
||||
#include <ringbuffer/backend.h>
|
||||
#include <ringbuffer/frontend.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/poll.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/kref.h>
|
||||
@@ -1332,7 +1333,8 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp,
|
||||
*/
|
||||
return -ENOSYS;
|
||||
}
|
||||
- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
|
||||
{
|
||||
struct lttng_metadata_stream *stream = filp->private_data;
|
||||
@@ -1441,7 +1443,8 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp,
|
||||
*/
|
||||
return -ENOSYS;
|
||||
}
|
||||
- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
|
||||
{
|
||||
struct lttng_metadata_stream *stream = filp->private_data;
|
||||
@@ -1758,8 +1761,10 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
|
||||
switch (event_param->instrumentation) {
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
switch (event_param->u.syscall.entryexit) {
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
|
||||
break;
|
||||
default:
|
||||
@@ -1783,20 +1788,26 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
|
||||
switch (event_param->u.kretprobe.entryexit) {
|
||||
case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1830,18 +1841,23 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
}
|
||||
|
||||
switch (event_param->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
fops = <tng_event_recorder_enabler_fops;
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
fops = <tng_event_recorder_event_fops;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1867,7 +1883,8 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
goto event_error;
|
||||
|
||||
switch (event_param->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
{
|
||||
struct lttng_event_enabler *event_enabler;
|
||||
@@ -1887,8 +1904,10 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
{
|
||||
struct lttng_kernel_event_recorder *event;
|
||||
@@ -1908,8 +1927,10 @@ int lttng_abi_create_event(struct file *channel_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto event_error;
|
||||
@@ -2043,18 +2064,23 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
}
|
||||
|
||||
switch (event_notifier_param->event.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
fops = <tng_event_notifier_enabler_fops;
|
||||
break;
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
fops = <tng_event_notifier_event_fops;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto inval_instr;
|
||||
@@ -2086,7 +2112,8 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
goto event_notifier_error;
|
||||
|
||||
switch (event_notifier_param->event.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
{
|
||||
struct lttng_event_notifier_enabler *enabler;
|
||||
@@ -2110,8 +2137,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
{
|
||||
struct lttng_kernel_event_notifier *event_notifier;
|
||||
@@ -2135,8 +2164,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
|
||||
break;
|
||||
}
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto event_notifier_error;
|
||||
diff --git a/src/lttng-bytecode-interpreter.c b/src/lttng-bytecode-interpreter.c
|
||||
index b46a23b7..a2a932c6 100644
|
||||
--- a/src/lttng-bytecode-interpreter.c
|
||||
+++ b/src/lttng-bytecode-interpreter.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* Copyright (C) 2010-2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
*/
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/uaccess.h>
|
||||
#include <wrapper/objtool.h>
|
||||
#include <wrapper/types.h>
|
||||
@@ -421,7 +422,8 @@ static int dynamic_get_index(struct lttng_kernel_probe_ctx *lttng_probe_ctx,
|
||||
}
|
||||
break;
|
||||
case LOAD_ROOT_CONTEXT:
|
||||
- case LOAD_ROOT_APP_CONTEXT: /* Fall-through */
|
||||
+ lttng_fallthrough;
|
||||
+ case LOAD_ROOT_APP_CONTEXT:
|
||||
{
|
||||
ret = context_get_index(lttng_probe_ctx,
|
||||
&stack_top->u.ptr,
|
||||
diff --git a/src/lttng-bytecode-specialize.c b/src/lttng-bytecode-specialize.c
|
||||
index c4b9d04b..f8b5f19d 100644
|
||||
--- a/src/lttng-bytecode-specialize.c
|
||||
+++ b/src/lttng-bytecode-specialize.c
|
||||
@@ -8,6 +8,8 @@
|
||||
*/
|
||||
|
||||
#include <linux/slab.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
+
|
||||
#include <lttng/lttng-bytecode.h>
|
||||
#include <lttng/align.h>
|
||||
#include <lttng/events-internal.h>
|
||||
@@ -271,7 +273,8 @@ static int specialize_get_index(struct bytecode_runtime *runtime,
|
||||
}
|
||||
case OBJECT_TYPE_STRUCT:
|
||||
/* Only generated by the specialize phase. */
|
||||
- case OBJECT_TYPE_VARIANT: /* Fall-through */
|
||||
+ case OBJECT_TYPE_VARIANT:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
printk(KERN_WARNING "LTTng: bytecode: Unexpected get index type %d",
|
||||
(int) stack_top->load.object_type);
|
||||
diff --git a/src/lttng-events.c b/src/lttng-events.c
|
||||
index e785fe4d..230e3934 100644
|
||||
--- a/src/lttng-events.c
|
||||
+++ b/src/lttng-events.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/dmi.h>
|
||||
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/uuid.h>
|
||||
#include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
|
||||
#include <wrapper/random.h>
|
||||
@@ -659,12 +660,14 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
|
||||
goto end;
|
||||
}
|
||||
switch (event->priv->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
WRITE_ONCE(event->enabled, 1);
|
||||
break;
|
||||
@@ -673,8 +676,10 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
|
||||
ret = lttng_kretprobes_event_enable_state(event, 1);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -719,12 +724,14 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
|
||||
goto end;
|
||||
}
|
||||
switch (event->priv->instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
WRITE_ONCE(event->enabled, 0);
|
||||
break;
|
||||
@@ -733,8 +740,10 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
|
||||
ret = lttng_kretprobes_event_enable_state(event, 0);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -873,15 +882,20 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
|
||||
event_name = event_desc->event_name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
event_name = event_param->name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1093,8 +1107,10 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
|
||||
WARN_ON_ONCE(!ret);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1141,15 +1157,20 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
|
||||
event_name = event_desc->event_name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
event_name = event_notifier_param->event.name;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1296,9 +1317,12 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
|
||||
WARN_ON_ONCE(!ret);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
ret = -EINVAL;
|
||||
@@ -1423,14 +1447,18 @@ void register_event(struct lttng_kernel_event_recorder *event_recorder)
|
||||
ret = lttng_syscall_filter_enable_event(event_recorder->chan, event_recorder);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_UPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1481,7 +1509,8 @@ int _lttng_event_unregister(struct lttng_kernel_event_recorder *event_recorder)
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1512,14 +1541,18 @@ void register_event_notifier(struct lttng_kernel_event_notifier *event_notifier)
|
||||
ret = lttng_syscall_filter_enable_event_notifier(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KPROBE:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_UPROBE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1559,9 +1592,12 @@ int _lttng_event_notifier_unregister(
|
||||
ret = lttng_syscall_filter_disable_event_notifier(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1614,8 +1650,10 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
|
||||
lttng_uprobes_destroy_event_private(event_recorder);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -1647,9 +1685,12 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
|
||||
lttng_uprobes_destroy_event_notifier_private(event_notifier);
|
||||
break;
|
||||
|
||||
- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
|
||||
- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_KRETPROBE:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_FUNCTION:
|
||||
+ lttng_fallthrough;
|
||||
+ case LTTNG_KERNEL_ABI_NOOP:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -2713,7 +2754,8 @@ void lttng_session_sync_event_enablers(struct lttng_kernel_session *session)
|
||||
int nr_filters = 0;
|
||||
|
||||
switch (event_recorder_priv->parent.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
/* Enable events */
|
||||
list_for_each_entry(enabler_ref,
|
||||
@@ -2807,7 +2849,8 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group
|
||||
int nr_filters = 0, nr_captures = 0;
|
||||
|
||||
switch (event_notifier_priv->parent.instrumentation) {
|
||||
- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
|
||||
+ case LTTNG_KERNEL_ABI_TRACEPOINT:
|
||||
+ lttng_fallthrough;
|
||||
case LTTNG_KERNEL_ABI_SYSCALL:
|
||||
/* Enable event_notifiers */
|
||||
list_for_each_entry(enabler_ref,
|
||||
@@ -3877,7 +3920,7 @@ int print_escaped_ctf_string(struct lttng_kernel_session *session, const char *s
|
||||
if (ret)
|
||||
goto error;
|
||||
/* We still print the current char */
|
||||
- /* Fallthrough */
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
ret = lttng_metadata_printf(session, "%c", cur);
|
||||
break;
|
||||
diff --git a/src/lttng-string-utils.c b/src/lttng-string-utils.c
|
||||
index d9447903..65946193 100644
|
||||
--- a/src/lttng-string-utils.c
|
||||
+++ b/src/lttng-string-utils.c
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
|
||||
#include <lttng/string-utils.h>
|
||||
|
||||
@@ -302,7 +303,7 @@ retry:
|
||||
p = pattern_get_char_at_cb(p_at,
|
||||
pattern_get_char_at_cb_data);
|
||||
|
||||
- /* Fall-through. */
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
/*
|
||||
* Default case which will compare the escaped
|
||||
diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c
|
||||
index 0fa6a1bf..1d0a5ecb 100644
|
||||
--- a/src/probes/lttng-kretprobes.c
|
||||
+++ b/src/probes/lttng-kretprobes.c
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <lttng/events.h>
|
||||
#include <lttng/events-internal.h>
|
||||
#include <ringbuffer/frontend_types.h>
|
||||
+#include <wrapper/compiler_attributes.h>
|
||||
#include <wrapper/vmalloc.h>
|
||||
#include <wrapper/irqflags.h>
|
||||
#include <lttng/tracer.h>
|
||||
@@ -61,7 +62,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
@@ -90,7 +92,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
chan->ops->event_commit(&ctx);
|
||||
break;
|
||||
}
|
||||
- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
|
||||
+ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
|
||||
+ lttng_fallthrough;
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
From 8e52fd71e693619f7a58de2692e59f0c826e9988 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 13:52:57 -0400
|
||||
Subject: [PATCH 03/10] fix: sched/tracing: Don't re-read p->state when
|
||||
emitting sched_switch event (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit fa2c3254d7cfff5f7a916ab928a562d1165f17bb
|
||||
Author: Valentin Schneider <valentin.schneider@arm.com>
|
||||
Date: Thu Jan 20 16:25:19 2022 +0000
|
||||
|
||||
sched/tracing: Don't re-read p->state when emitting sched_switch event
|
||||
|
||||
As of commit
|
||||
|
||||
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
|
||||
|
||||
the following sequence becomes possible:
|
||||
|
||||
p->__state = TASK_INTERRUPTIBLE;
|
||||
__schedule()
|
||||
deactivate_task(p);
|
||||
ttwu()
|
||||
READ !p->on_rq
|
||||
p->__state=TASK_WAKING
|
||||
trace_sched_switch()
|
||||
__trace_sched_switch_state()
|
||||
task_state_index()
|
||||
return 0;
|
||||
|
||||
TASK_WAKING isn't in TASK_REPORT, so the task appears as TASK_RUNNING in
|
||||
the trace event.
|
||||
|
||||
Prevent this by pushing the value read from __schedule() down the trace
|
||||
event.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I46743cd006be4b4d573cae2d77df7d6d16744d04
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/sched.h | 88 +++++++++++++++++++++++---
|
||||
1 file changed, 78 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h
|
||||
index 91953a6f..339bec94 100644
|
||||
--- a/include/instrumentation/events/sched.h
|
||||
+++ b/include/instrumentation/events/sched.h
|
||||
@@ -20,7 +20,37 @@
|
||||
#ifndef _TRACE_SCHED_DEF_
|
||||
#define _TRACE_SCHED_DEF_
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+
|
||||
+static inline long __trace_sched_switch_state(bool preempt,
|
||||
+ unsigned int prev_state,
|
||||
+ struct task_struct *p)
|
||||
+{
|
||||
+ unsigned int state;
|
||||
+
|
||||
+#ifdef CONFIG_SCHED_DEBUG
|
||||
+ BUG_ON(p != current);
|
||||
+#endif /* CONFIG_SCHED_DEBUG */
|
||||
+
|
||||
+ /*
|
||||
+ * Preemption ignores task state, therefore preempted tasks are always
|
||||
+ * RUNNING (we will not have dequeued if state != RUNNING).
|
||||
+ */
|
||||
+ if (preempt)
|
||||
+ return TASK_REPORT_MAX;
|
||||
+
|
||||
+ /*
|
||||
+ * task_state_index() uses fls() and returns a value from 0-8 range.
|
||||
+ * Decrement it by 1 (except TASK_RUNNING state i.e 0) before using
|
||||
+ * it for left shift operation to get the correct task->state
|
||||
+ * mapping.
|
||||
+ */
|
||||
+ state = __task_state_index(prev_state, p->exit_state);
|
||||
+
|
||||
+ return state ? (1 << (state - 1)) : state;
|
||||
+}
|
||||
+
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,15,0))
|
||||
|
||||
static inline long __trace_sched_switch_state(bool preempt, struct task_struct *p)
|
||||
{
|
||||
@@ -321,43 +351,81 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_wakeup_template, sched_wakeup_new,
|
||||
/*
|
||||
* Tracepoint for task switches, performed by the scheduler:
|
||||
*/
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
TP_PROTO(bool preempt,
|
||||
- struct task_struct *prev,
|
||||
- struct task_struct *next),
|
||||
+ unsigned int prev_state,
|
||||
+ struct task_struct *prev,
|
||||
+ struct task_struct *next),
|
||||
|
||||
- TP_ARGS(preempt, prev, next),
|
||||
+ TP_ARGS(preempt, prev_state, prev, next),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
+ ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev))
|
||||
#else
|
||||
- TP_PROTO(struct task_struct *prev,
|
||||
+ ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev_state, prev))
|
||||
+#endif
|
||||
+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, next_tid, next->pid)
|
||||
+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
+
|
||||
+LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
+
|
||||
+ TP_PROTO(bool preempt,
|
||||
+ struct task_struct *prev,
|
||||
struct task_struct *next),
|
||||
|
||||
- TP_ARGS(prev, next),
|
||||
-#endif /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0)) */
|
||||
+ TP_ARGS(preempt, prev, next),
|
||||
|
||||
TP_FIELDS(
|
||||
ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,4,0))
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev))
|
||||
#else
|
||||
ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev))
|
||||
#endif
|
||||
+ ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, next_tid, next->pid)
|
||||
+ ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
+ )
|
||||
+)
|
||||
+
|
||||
#else
|
||||
+
|
||||
+LTTNG_TRACEPOINT_EVENT(sched_switch,
|
||||
+
|
||||
+ TP_PROTO(struct task_struct *prev,
|
||||
+ struct task_struct *next),
|
||||
+
|
||||
+ TP_ARGS(prev, next),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_array_text(char, prev_comm, prev->comm, TASK_COMM_LEN)
|
||||
+ ctf_integer(pid_t, prev_tid, prev->pid)
|
||||
+ ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO)
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(prev))
|
||||
#else
|
||||
ctf_integer(long, prev_state, __trace_sched_switch_state(prev))
|
||||
-#endif
|
||||
#endif
|
||||
ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN)
|
||||
ctf_integer(pid_t, next_tid, next->pid)
|
||||
ctf_integer(int, next_prio, next->prio - MAX_RT_PRIO)
|
||||
)
|
||||
)
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Tracepoint for a task being migrated:
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From 868e0b6db59159197c2cec3550fa4ad5e6572bc5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 13:54:59 -0400
|
||||
Subject: [PATCH 04/10] fix: block: remove genhd.h (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 322cbb50de711814c42fb088f6d31901502c711a
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Mon Jan 24 10:39:13 2022 +0100
|
||||
|
||||
block: remove genhd.h
|
||||
|
||||
There is no good reason to keep genhd.h separate from the main blkdev.h
|
||||
header that includes it. So fold the contents of genhd.h into blkdev.h
|
||||
and remove genhd.h entirely.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I7cf2aaa3a4c133320b95f2edde49f790f9515dbd
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/genhd.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/include/wrapper/genhd.h b/include/wrapper/genhd.h
|
||||
index 3c6dbcbe..4a59b68e 100644
|
||||
--- a/include/wrapper/genhd.h
|
||||
+++ b/include/wrapper/genhd.h
|
||||
@@ -12,7 +12,11 @@
|
||||
#ifndef _LTTNG_WRAPPER_GENHD_H
|
||||
#define _LTTNG_WRAPPER_GENHD_H
|
||||
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#include <linux/blkdev.h>
|
||||
+#else
|
||||
#include <linux/genhd.h>
|
||||
+#endif
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
#define LTTNG_GENHD_FL_HIDDEN GENHD_FL_HIDDEN
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
From 2bc7cb7193124d20aa4e1b5dbad0410bfb97a470 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 14:12:13 -0400
|
||||
Subject: [PATCH 05/10] fix: scsi: block: Remove REQ_OP_WRITE_SAME support
|
||||
(v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 73bd66d9c834220579c881a3eb020fd8917075d8
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Wed Feb 9 09:28:28 2022 +0100
|
||||
|
||||
scsi: block: Remove REQ_OP_WRITE_SAME support
|
||||
|
||||
No more users of REQ_OP_WRITE_SAME or drivers implementing it are left,
|
||||
so remove the infrastructure.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: Ifbff71f79f8b590436fc7cb79f82d90c6e033d84
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/block.h | 32 ++++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
|
||||
index 3e1104d7..050a59a2 100644
|
||||
--- a/include/instrumentation/events/block.h
|
||||
+++ b/include/instrumentation/events/block.h
|
||||
@@ -66,6 +66,37 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type,
|
||||
#define lttng_bio_op(bio) bio_op(bio)
|
||||
#define lttng_bio_rw(bio) ((bio)->bi_opf)
|
||||
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
+ ctf_enum(block_rq_type, type, rwbs, \
|
||||
+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \
|
||||
+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \
|
||||
+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \
|
||||
+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \
|
||||
+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \
|
||||
+ ( 0 )))))) \
|
||||
+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \
|
||||
+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \
|
||||
+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \
|
||||
+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
+#else
|
||||
+#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
+ ctf_integer(type, rwbs, \
|
||||
+ ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \
|
||||
+ ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \
|
||||
+ ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \
|
||||
+ ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \
|
||||
+ ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \
|
||||
+ ( 0 )))))) \
|
||||
+ | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \
|
||||
+ | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \
|
||||
+ | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \
|
||||
+ | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
+ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
+#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
|
||||
+#else
|
||||
#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM
|
||||
#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \
|
||||
ctf_enum(block_rq_type, type, rwbs, \
|
||||
@@ -95,6 +126,7 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type,
|
||||
| ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \
|
||||
| ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0))
|
||||
#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */
|
||||
+#endif
|
||||
|
||||
#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0))
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From 369d82bb1746447514c877088d7c5fd0f39140f8 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 14:33:42 -0400
|
||||
Subject: [PATCH 06/10] fix: random: remove unused tracepoints (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 14c174633f349cb41ea90c2c0aaddac157012f74
|
||||
Author: Jason A. Donenfeld <Jason@zx2c4.com>
|
||||
Date: Thu Feb 10 16:40:44 2022 +0100
|
||||
|
||||
random: remove unused tracepoints
|
||||
|
||||
These explicit tracepoints aren't really used and show sign of aging.
|
||||
It's work to keep these up to date, and before I attempted to keep them
|
||||
up to date, they weren't up to date, which indicates that they're not
|
||||
really used. These days there are better ways of introspecting anyway.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I3b8c3e2732e7efdd76ce63204ac53a48784d0df6
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
src/probes/Kbuild | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/probes/Kbuild b/src/probes/Kbuild
|
||||
index e26b4359..8d6ff0f2 100644
|
||||
--- a/src/probes/Kbuild
|
||||
+++ b/src/probes/Kbuild
|
||||
@@ -187,8 +187,11 @@ ifneq ($(CONFIG_FRAME_WARN),0)
|
||||
CFLAGS_lttng-probe-printk.o += -Wframe-larger-than=2200
|
||||
endif
|
||||
|
||||
+# Introduced in v3.6, remove in v5.18
|
||||
obj-$(CONFIG_LTTNG) += $(shell \
|
||||
- if [ $(VERSION) -ge 4 \
|
||||
+ if [ \( ! \( $(VERSION) -ge 6 -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) \) \
|
||||
+ -a \
|
||||
+ $(VERSION) -ge 4 \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 6 \) \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 5 -a $(SUBLEVEL) -ge 2 \) \
|
||||
-o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 4 -a $(SUBLEVEL) -ge 9 \) \
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
From 3c46ddc134621dba65030263aa321dd6bdae3ba3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:02:10 -0400
|
||||
Subject: [PATCH 07/10] fix: kprobes: Use rethook for kretprobe if possible
|
||||
(v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 73f9b911faa74ac5107879de05c9489c419f41bb
|
||||
Author: Masami Hiramatsu <mhiramat@kernel.org>
|
||||
Date: Sat Mar 26 11:27:05 2022 +0900
|
||||
|
||||
kprobes: Use rethook for kretprobe if possible
|
||||
|
||||
Use rethook for kretprobe function return hooking if the arch sets
|
||||
CONFIG_HAVE_RETHOOK=y. In this case, CONFIG_KRETPROBE_ON_RETHOOK is
|
||||
set to 'y' automatically, and the kretprobe internal data fields
|
||||
switches to use rethook. If not, it continues to use kretprobe
|
||||
specific function return hooks.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I2b7670dc04e4769c1e3c372582ad2f555f6d7a66
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/kprobes.h | 17 +++++++++++++++++
|
||||
src/probes/lttng-kretprobes.c | 2 +-
|
||||
2 files changed, 18 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/wrapper/kprobes.h b/include/wrapper/kprobes.h
|
||||
index b546d615..51d32b7c 100644
|
||||
--- a/include/wrapper/kprobes.h
|
||||
+++ b/include/wrapper/kprobes.h
|
||||
@@ -29,4 +29,21 @@ struct kretprobe *lttng_get_kretprobe(struct kretprobe_instance *ri)
|
||||
|
||||
#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) */
|
||||
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+static inline
|
||||
+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri)
|
||||
+{
|
||||
+ return get_kretprobe_retaddr(ri);
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+static inline
|
||||
+unsigned long lttng_get_kretprobe_retaddr(struct kretprobe_instance *ri)
|
||||
+{
|
||||
+ return (unsigned long) ri->ret_addr;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#endif /* _LTTNG_WRAPPER_KPROBES_H */
|
||||
diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c
|
||||
index 5cb2e953..565df739 100644
|
||||
--- a/src/probes/lttng-kretprobes.c
|
||||
+++ b/src/probes/lttng-kretprobes.c
|
||||
@@ -81,7 +81,7 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
|
||||
int ret;
|
||||
|
||||
payload.ip = (unsigned long) lttng_get_kretprobe(krpi)->kp.addr;
|
||||
- payload.parent_ip = (unsigned long) krpi->ret_addr;
|
||||
+ payload.parent_ip = lttng_get_kretprobe_retaddr(krpi);
|
||||
|
||||
lib_ring_buffer_ctx_init(&ctx, event_recorder, sizeof(payload),
|
||||
lttng_alignof(payload), <tng_probe_ctx);
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From e8d2f286b5b208ac8870d0a9c167b170e96169b3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:08:48 -0400
|
||||
Subject: [PATCH 08/10] fix: scsi: core: Remove <scsi/scsi_request.h> (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit 26440303310591e29121964ede0048583cb3126d
|
||||
Author: Christoph Hellwig <hch@lst.de>
|
||||
Date: Thu Feb 24 18:55:52 2022 +0100
|
||||
|
||||
scsi: core: Remove <scsi/scsi_request.h>
|
||||
|
||||
This header is empty now except for an include of <linux/blk-mq.h>, so
|
||||
remove it.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: Ic8ee3352f1e8bddfcd44c31be9b788db82f183aa
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/block.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/block.h b/include/instrumentation/events/block.h
|
||||
index 050a59a2..882e6e08 100644
|
||||
--- a/include/instrumentation/events/block.h
|
||||
+++ b/include/instrumentation/events/block.h
|
||||
@@ -11,9 +11,9 @@
|
||||
#include <linux/trace_seq.h>
|
||||
#include <lttng/kernel-version.h>
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
|
||||
+#if LTTNG_KERNEL_RANGE(4,11,0, 5,18,0)
|
||||
#include <scsi/scsi_request.h>
|
||||
-#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */
|
||||
+#endif /* LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) */
|
||||
|
||||
#ifndef _TRACE_BLOCK_DEF_
|
||||
#define _TRACE_BLOCK_DEF_
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
From 82fbf9d383ff9069808fb0f5f75c660098dbae52 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Tue, 5 Apr 2022 14:57:41 -0400
|
||||
Subject: [PATCH 09/10] Rename genhd wrapper to blkdev
|
||||
|
||||
The genhd.h header was folded into blkdev.h in v5.18, rename our wrapper
|
||||
to follow upstream.
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I4ec94fb94d11712dd20f0680aea1de77fbfa9d17
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/wrapper/{genhd.h => blkdev.h} | 10 +++++-----
|
||||
src/lttng-statedump-impl.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
rename include/wrapper/{genhd.h => blkdev.h} (93%)
|
||||
|
||||
diff --git a/include/wrapper/genhd.h b/include/wrapper/blkdev.h
|
||||
similarity index 93%
|
||||
rename from include/wrapper/genhd.h
|
||||
rename to include/wrapper/blkdev.h
|
||||
index 4a59b68e..0d5ad90f 100644
|
||||
--- a/include/wrapper/genhd.h
|
||||
+++ b/include/wrapper/blkdev.h
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
|
||||
*
|
||||
- * wrapper/genhd.h
|
||||
+ * wrapper/blkdev.h
|
||||
*
|
||||
* wrapper around block layer functions and data structures. Using
|
||||
* KALLSYMS to get its address when available, else we need to have a
|
||||
@@ -9,8 +9,8 @@
|
||||
* Copyright (C) 2011-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
*/
|
||||
|
||||
-#ifndef _LTTNG_WRAPPER_GENHD_H
|
||||
-#define _LTTNG_WRAPPER_GENHD_H
|
||||
+#ifndef _LTTNG_WRAPPER_BLKDEV_H
|
||||
+#define _LTTNG_WRAPPER_BLKDEV_H
|
||||
|
||||
#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
#include <linux/blkdev.h>
|
||||
@@ -45,7 +45,7 @@ struct class *wrapper_get_block_class(void)
|
||||
/*
|
||||
* Canary function to check for 'block_class' at compile time.
|
||||
*
|
||||
- * From 'include/linux/genhd.h':
|
||||
+ * From 'include/linux/blkdev.h':
|
||||
*
|
||||
* extern struct class block_class;
|
||||
*/
|
||||
@@ -104,4 +104,4 @@ struct device_type *wrapper_get_disk_type(void)
|
||||
|
||||
#endif
|
||||
|
||||
-#endif /* _LTTNG_WRAPPER_GENHD_H */
|
||||
+#endif /* _LTTNG_WRAPPER_BLKDEV_H */
|
||||
diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c
|
||||
index 4d7b2921..0e753090 100644
|
||||
--- a/src/lttng-statedump-impl.c
|
||||
+++ b/src/lttng-statedump-impl.c
|
||||
@@ -41,7 +41,7 @@
|
||||
#include <wrapper/namespace.h>
|
||||
#include <wrapper/irq.h>
|
||||
#include <wrapper/tracepoint.h>
|
||||
-#include <wrapper/genhd.h>
|
||||
+#include <wrapper/blkdev.h>
|
||||
#include <wrapper/file.h>
|
||||
#include <wrapper/fdtable.h>
|
||||
#include <wrapper/sched.h>
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
From f9208dc00756dfa0a2f191799722030bdf3f793d Mon Sep 17 00:00:00 2001
|
||||
From: Michael Jeanson <mjeanson@efficios.com>
|
||||
Date: Mon, 4 Apr 2022 15:14:01 -0400
|
||||
Subject: [PATCH 10/10] fix: mm: compaction: cleanup the compaction trace
|
||||
events (v5.18)
|
||||
|
||||
See upstream commit :
|
||||
|
||||
commit abd4349ff9b8d242376b67711254221f64f447c7
|
||||
Author: Baolin Wang <baolin.wang@linux.alibaba.com>
|
||||
Date: Tue Mar 22 14:45:56 2022 -0700
|
||||
|
||||
mm: compaction: cleanup the compaction trace events
|
||||
|
||||
As Steven suggested [1], we should access the pointers from the trace
|
||||
event to avoid dereferencing them to the tracepoint function when the
|
||||
tracepoint is disabled.
|
||||
|
||||
[1] https://lkml.org/lkml/2021/11/3/409
|
||||
|
||||
Upstream-Status: Backport
|
||||
|
||||
Change-Id: I6c08250df8596e8dbc76780ae5d95c899c12e6fe
|
||||
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/instrumentation/events/compaction.h | 17 ++++++++++++++++-
|
||||
src/probes/Kbuild | 17 ++++++++++++++++-
|
||||
src/probes/lttng-probe-compaction.c | 5 +++++
|
||||
3 files changed, 37 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/instrumentation/events/compaction.h b/include/instrumentation/events/compaction.h
|
||||
index 15964537..ecae39a8 100644
|
||||
--- a/include/instrumentation/events/compaction.h
|
||||
+++ b/include/instrumentation/events/compaction.h
|
||||
@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(compaction_isolate_template,
|
||||
|
||||
#endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
|
||||
|
||||
-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
+
|
||||
+ compaction_migratepages,
|
||||
+
|
||||
+ TP_PROTO(struct compact_control *cc,
|
||||
+ unsigned int nr_succeeded),
|
||||
+
|
||||
+ TP_ARGS(cc, nr_succeeded),
|
||||
+
|
||||
+ TP_FIELDS(
|
||||
+ ctf_integer(unsigned long, nr_migrated, nr_succeeded)
|
||||
+ ctf_integer(unsigned long, nr_failed, cc->nr_migratepages - nr_succeeded)
|
||||
+ )
|
||||
+)
|
||||
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
|
||||
LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
|
||||
|
||||
compaction_migratepages,
|
||||
diff --git a/src/probes/Kbuild b/src/probes/Kbuild
|
||||
index 8d6ff0f2..54784477 100644
|
||||
--- a/src/probes/Kbuild
|
||||
+++ b/src/probes/Kbuild
|
||||
@@ -167,7 +167,22 @@ ifneq ($(CONFIG_BTRFS_FS),)
|
||||
endif # $(wildcard $(btrfs_dep))
|
||||
endif # CONFIG_BTRFS_FS
|
||||
|
||||
-obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o
|
||||
+# A dependency on internal header 'mm/internal.h' was introduced in v5.18
|
||||
+compaction_dep = $(srctree)/mm/internal.h
|
||||
+compaction_dep_wildcard = $(wildcard $(compaction_dep))
|
||||
+compaction_dep_check = $(shell \
|
||||
+if [ \( $(VERSION) -ge 6 \
|
||||
+ -o \( $(VERSION) -eq 5 -a $(PATCHLEVEL) -ge 18 \) \) -a \
|
||||
+ -z "$(compaction_dep_wildcard)" ] ; then \
|
||||
+ echo "warn" ; \
|
||||
+else \
|
||||
+ echo "ok" ; \
|
||||
+fi ;)
|
||||
+ifeq ($(compaction_dep_check),ok)
|
||||
+ obj-$(CONFIG_LTTNG) += lttng-probe-compaction.o
|
||||
+else
|
||||
+ $(warning Files $(compaction_dep) not found. Probe "compaction" is disabled. Use full kernel source tree to enable it.)
|
||||
+endif # $(wildcard $(compaction_dep))
|
||||
|
||||
ifneq ($(CONFIG_EXT4_FS),)
|
||||
ext4_dep = $(srctree)/fs/ext4/*.h
|
||||
diff --git a/src/probes/lttng-probe-compaction.c b/src/probes/lttng-probe-compaction.c
|
||||
index f8ddf384..ffaf45f0 100644
|
||||
--- a/src/probes/lttng-probe-compaction.c
|
||||
+++ b/src/probes/lttng-probe-compaction.c
|
||||
@@ -10,6 +10,11 @@
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <lttng/tracer.h>
|
||||
+#include <lttng/kernel-version.h>
|
||||
+
|
||||
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0))
|
||||
+#include "../mm/internal.h"
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Create the tracepoint static inlines from the kernel to validate that our
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@@ -10,13 +10,22 @@ inherit module
|
||||
include lttng-platforms.inc
|
||||
|
||||
SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
|
||||
file://0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch \
|
||||
file://0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch \
|
||||
file://0001-Fix-compaction-migratepages-event-name.patch \
|
||||
file://0002-Fix-tracepoint-event-allow-same-provider-and-event-n.patch \
|
||||
file://0003-fix-sched-tracing-Don-t-re-read-p-state-when-emittin.patch \
|
||||
file://0004-fix-block-remove-genhd.h-v5.18.patch \
|
||||
file://0005-fix-scsi-block-Remove-REQ_OP_WRITE_SAME-support-v5.1.patch \
|
||||
file://0006-fix-random-remove-unused-tracepoints-v5.18.patch \
|
||||
file://0007-fix-kprobes-Use-rethook-for-kretprobe-if-possible-v5.patch \
|
||||
file://0008-fix-scsi-core-Remove-scsi-scsi_request.h-v5.18.patch \
|
||||
file://0009-Rename-genhd-wrapper-to-blkdev.patch \
|
||||
file://0010-fix-mm-compaction-cleanup-the-compaction-trace-event.patch \
|
||||
"
|
||||
|
||||
# Use :append here so that the patch is applied also when using devupstream
|
||||
SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
|
||||
|
||||
SRC_URI[sha256sum] = "5ebf2b3cd128b3a1c8afaea1e98d5a6f7f0676fd524fcf72361c34d9dc603356"
|
||||
SRC_URI[sha256sum] = "7cf1acbb50b84116acc9b4281b81dcc2643d6018bbd1e8514ad1270239896c4b"
|
||||
|
||||
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
||||
|
||||
@@ -33,10 +33,10 @@ if os.path.exists(outfile):
|
||||
with open(infile, 'r') as file:
|
||||
data = file.read()
|
||||
|
||||
preamble_regex = re.compile( '^(.*?)^struct', re.MULTILINE | re.DOTALL )
|
||||
preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL )
|
||||
|
||||
preamble = re.search( preamble_regex, data )
|
||||
struct_block_regex = re.compile( '^struct.*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
|
||||
struct_block_regex = re.compile( '^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
|
||||
field_regex = re.compile( '{.*?},', re.MULTILINE | re.DOTALL )
|
||||
cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
@@ -45,22 +45,25 @@ name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
|
||||
# types and then their fields.
|
||||
entry_dict = {}
|
||||
for struct in re.findall( struct_block_regex, data ):
|
||||
# print( "struct: %s %s" % (struct[0],struct[1]) )
|
||||
entry_dict[struct[1]] = {}
|
||||
entry_dict[struct[1]]['type'] = struct[0]
|
||||
entry_dict[struct[1]]['fields'] = {}
|
||||
for entry in re.findall( field_regex, struct[2] ):
|
||||
# print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) )
|
||||
entry_dict[struct[2]] = {}
|
||||
entry_dict[struct[2]]['type_prefix'] = struct[0]
|
||||
entry_dict[struct[2]]['type'] = struct[1]
|
||||
entry_dict[struct[2]]['fields'] = {}
|
||||
for entry in re.findall( field_regex, struct[3] ):
|
||||
#print( " entry: %s" % entry )
|
||||
cpuid = re.search( cpuid_regex, entry )
|
||||
if cpuid:
|
||||
#print( " cpuid found: %s" % cpuid.group(1) )
|
||||
entry_dict[struct[1]]['fields'][cpuid.group(1)] = entry
|
||||
|
||||
entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry
|
||||
|
||||
name = re.search( name_regex, entry )
|
||||
if name:
|
||||
#print( " name found: %s" % name.group(1) )
|
||||
entry_dict[struct[1]]['fields'][name.group(1)] = entry
|
||||
|
||||
entry_dict[struct[2]]['fields'][name.group(1)] = entry
|
||||
|
||||
if not entry_dict[struct[2]]['fields']:
|
||||
entry_dict[struct[2]]['fields']['0'] = entry
|
||||
|
||||
# created ordered dictionaries from the captured values. These are ordered by
|
||||
# a sorted() iteration of the keys. We don't care about the order we read
|
||||
@@ -72,6 +75,7 @@ for struct in re.findall( struct_block_regex, data ):
|
||||
entry_dict_sorted = OrderedDict()
|
||||
for i in sorted(entry_dict.keys()):
|
||||
entry_dict_sorted[i] = {}
|
||||
entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix']
|
||||
entry_dict_sorted[i]['type'] = entry_dict[i]['type']
|
||||
entry_dict_sorted[i]['fields'] = {}
|
||||
for f in sorted(entry_dict[i]['fields'].keys()):
|
||||
@@ -83,7 +87,7 @@ outf = open( outfile, 'w' )
|
||||
print( preamble.group(1) )
|
||||
outf.write( preamble.group(1) )
|
||||
for d in entry_dict_sorted:
|
||||
outf.write( "struct %s %s[] = {\n" % (entry_dict_sorted[d]['type'],d) )
|
||||
outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) )
|
||||
for f in entry_dict_sorted[d]['fields']:
|
||||
outf.write( entry_dict_sorted[d]['fields'][f] + '\n' )
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ LICENSE = "ISC"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
|
||||
|
||||
SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
|
||||
SRC_URI[sha256sum] = "8828c25a4ee25020044004f57374bb9deac852809fad70f8d3d01770bf9ac97f"
|
||||
SRC_URI[sha256sum] = "884ba2e3c1e8b98762b6dc25ff60b5ec75c8d33a39e019b3ed4aa615491460d3"
|
||||
|
||||
inherit bin_package allarch
|
||||
|
||||
@@ -71,6 +71,7 @@ python do_compile() {
|
||||
}
|
||||
|
||||
python do_install() {
|
||||
d.delVarFlag("autotools_do_install", "cleandirs")
|
||||
for subdir in d.getVar("PACKAGECONFIG").split():
|
||||
subdir = subdir.replace("--", "/")
|
||||
bb.note("Installing %s" % subdir)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
CVE: CVE-2022-0865
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From 88da11ae3c4db527cb870fb1017456cc8fbac2e7 Mon Sep 17 00:00:00 2001
|
||||
From: Even Rouault <even.rouault@spatialys.com>
|
||||
Date: Thu, 24 Feb 2022 22:26:02 +0100
|
||||
Subject: [PATCH 1/6] tif_jbig.c: fix crash when reading a file with multiple
|
||||
IFD in memory-mapped mode and when bit reversal is needed (fixes #385)
|
||||
|
||||
---
|
||||
libtiff/tif_jbig.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/libtiff/tif_jbig.c b/libtiff/tif_jbig.c
|
||||
index 74086338..8bfa4cef 100644
|
||||
--- a/libtiff/tif_jbig.c
|
||||
+++ b/libtiff/tif_jbig.c
|
||||
@@ -209,6 +209,16 @@ int TIFFInitJBIG(TIFF* tif, int scheme)
|
||||
*/
|
||||
tif->tif_flags |= TIFF_NOBITREV;
|
||||
tif->tif_flags &= ~TIFF_MAPPED;
|
||||
+ /* We may have read from a previous IFD and thus set TIFF_BUFFERMMAP and
|
||||
+ * cleared TIFF_MYBUFFER. It is necessary to restore them to their initial
|
||||
+ * value to be consistent with the state of a non-memory mapped file.
|
||||
+ */
|
||||
+ if (tif->tif_flags&TIFF_BUFFERMMAP) {
|
||||
+ tif->tif_rawdata = NULL;
|
||||
+ tif->tif_rawdatasize = 0;
|
||||
+ tif->tif_flags &= ~TIFF_BUFFERMMAP;
|
||||
+ tif->tif_flags |= TIFF_MYBUFFER;
|
||||
+ }
|
||||
|
||||
/* Setup the function pointers for encode, decode, and cleanup. */
|
||||
tif->tif_setupdecode = JBIGSetupDecode;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
CVE: CVE-2022-0891
|
||||
CVE: CVE-2022-1056
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From e46b49e60fddb2e924302fb1751f79eb9cfb2253 Mon Sep 17 00:00:00 2001
|
||||
From: Su Laus <sulau@freenet.de>
|
||||
Date: Tue, 8 Mar 2022 17:02:44 +0000
|
||||
Subject: [PATCH 2/6] tiffcrop: fix issue #380 and #382 heap buffer overflow in
|
||||
extractImageSection
|
||||
|
||||
---
|
||||
tools/tiffcrop.c | 92 +++++++++++++++++++-----------------------------
|
||||
1 file changed, 36 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
|
||||
index b85c2ce7..302a7e91 100644
|
||||
--- a/tools/tiffcrop.c
|
||||
+++ b/tools/tiffcrop.c
|
||||
@@ -105,8 +105,8 @@
|
||||
* of messages to monitor progress without enabling dump logs.
|
||||
*/
|
||||
|
||||
-static char tiffcrop_version_id[] = "2.4";
|
||||
-static char tiffcrop_rev_date[] = "12-13-2010";
|
||||
+static char tiffcrop_version_id[] = "2.4.1";
|
||||
+static char tiffcrop_rev_date[] = "03-03-2010";
|
||||
|
||||
#include "tif_config.h"
|
||||
#include "libport.h"
|
||||
@@ -6710,10 +6710,10 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
#ifdef DEVELMODE
|
||||
uint32_t img_length;
|
||||
#endif
|
||||
- uint32_t j, shift1, shift2, trailing_bits;
|
||||
+ uint32_t j, shift1, trailing_bits;
|
||||
uint32_t row, first_row, last_row, first_col, last_col;
|
||||
uint32_t src_offset, dst_offset, row_offset, col_offset;
|
||||
- uint32_t offset1, offset2, full_bytes;
|
||||
+ uint32_t offset1, full_bytes;
|
||||
uint32_t sect_width;
|
||||
#ifdef DEVELMODE
|
||||
uint32_t sect_length;
|
||||
@@ -6723,7 +6723,6 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
#ifdef DEVELMODE
|
||||
int k;
|
||||
unsigned char bitset;
|
||||
- static char *bitarray = NULL;
|
||||
#endif
|
||||
|
||||
img_width = image->width;
|
||||
@@ -6741,17 +6740,12 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
dst_offset = 0;
|
||||
|
||||
#ifdef DEVELMODE
|
||||
- if (bitarray == NULL)
|
||||
- {
|
||||
- if ((bitarray = (char *)malloc(img_width)) == NULL)
|
||||
- {
|
||||
- TIFFError ("", "DEBUG: Unable to allocate debugging bitarray");
|
||||
- return (-1);
|
||||
- }
|
||||
- }
|
||||
+ char bitarray[39];
|
||||
#endif
|
||||
|
||||
- /* rows, columns, width, length are expressed in pixels */
|
||||
+ /* rows, columns, width, length are expressed in pixels
|
||||
+ * first_row, last_row, .. are index into image array starting at 0 to width-1,
|
||||
+ * last_col shall be also extracted. */
|
||||
first_row = section->y1;
|
||||
last_row = section->y2;
|
||||
first_col = section->x1;
|
||||
@@ -6761,9 +6755,14 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
#ifdef DEVELMODE
|
||||
sect_length = last_row - first_row + 1;
|
||||
#endif
|
||||
- img_rowsize = ((img_width * bps + 7) / 8) * spp;
|
||||
- full_bytes = (sect_width * spp * bps) / 8; /* number of COMPLETE bytes per row in section */
|
||||
- trailing_bits = (sect_width * bps) % 8;
|
||||
+ /* The read function loadImage() used copy separate plane data into a buffer as interleaved
|
||||
+ * samples rather than separate planes so the same logic works to extract regions
|
||||
+ * regardless of the way the data are organized in the input file.
|
||||
+ * Furthermore, bytes and bits are arranged in buffer according to COMPRESSION=1 and FILLORDER=1
|
||||
+ */
|
||||
+ img_rowsize = (((img_width * spp * bps) + 7) / 8); /* row size in full bytes of source image */
|
||||
+ full_bytes = (sect_width * spp * bps) / 8; /* number of COMPLETE bytes per row in section */
|
||||
+ trailing_bits = (sect_width * spp * bps) % 8; /* trailing bits within the last byte of destination buffer */
|
||||
|
||||
#ifdef DEVELMODE
|
||||
TIFFError ("", "First row: %"PRIu32", last row: %"PRIu32", First col: %"PRIu32", last col: %"PRIu32"\n",
|
||||
@@ -6776,10 +6775,9 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
|
||||
if ((bps % 8) == 0)
|
||||
{
|
||||
- col_offset = first_col * spp * bps / 8;
|
||||
+ col_offset = (first_col * spp * bps) / 8;
|
||||
for (row = first_row; row <= last_row; row++)
|
||||
{
|
||||
- /* row_offset = row * img_width * spp * bps / 8; */
|
||||
row_offset = row * img_rowsize;
|
||||
src_offset = row_offset + col_offset;
|
||||
|
||||
@@ -6792,14 +6790,12 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
}
|
||||
else
|
||||
{ /* bps != 8 */
|
||||
- shift1 = spp * ((first_col * bps) % 8);
|
||||
- shift2 = spp * ((last_col * bps) % 8);
|
||||
+ shift1 = ((first_col * spp * bps) % 8); /* shift1 = bits to skip in the first byte of source buffer*/
|
||||
for (row = first_row; row <= last_row; row++)
|
||||
{
|
||||
/* pull out the first byte */
|
||||
row_offset = row * img_rowsize;
|
||||
- offset1 = row_offset + (first_col * bps / 8);
|
||||
- offset2 = row_offset + (last_col * bps / 8);
|
||||
+ offset1 = row_offset + ((first_col * spp * bps) / 8); /* offset1 = offset into source of byte with first bits to be extracted */
|
||||
|
||||
#ifdef DEVELMODE
|
||||
for (j = 0, k = 7; j < 8; j++, k--)
|
||||
@@ -6811,12 +6807,12 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
sprintf(&bitarray[9], " ");
|
||||
for (j = 10, k = 7; j < 18; j++, k--)
|
||||
{
|
||||
- bitset = *(src_buff + offset2) & (((unsigned char)1 << k)) ? 1 : 0;
|
||||
+ bitset = *(src_buff + offset1 + full_bytes) & (((unsigned char)1 << k)) ? 1 : 0;
|
||||
sprintf(&bitarray[j], (bitset) ? "1" : "0");
|
||||
}
|
||||
bitarray[18] = '\0';
|
||||
- TIFFError ("", "Row: %3d Offset1: %"PRIu32", Shift1: %"PRIu32", Offset2: %"PRIu32", Shift2: %"PRIu32"\n",
|
||||
- row, offset1, shift1, offset2, shift2);
|
||||
+ TIFFError ("", "Row: %3d Offset1: %"PRIu32", Shift1: %"PRIu32", Offset2: %"PRIu32", Trailing_bits: %"PRIu32"\n",
|
||||
+ row, offset1, shift1, offset1+full_bytes, trailing_bits);
|
||||
#endif
|
||||
|
||||
bytebuff1 = bytebuff2 = 0;
|
||||
@@ -6840,11 +6836,12 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
|
||||
if (trailing_bits != 0)
|
||||
{
|
||||
- bytebuff2 = src_buff[offset2] & ((unsigned char)255 << (7 - shift2));
|
||||
+ /* Only copy higher bits of samples and mask lower bits of not wanted column samples to zero */
|
||||
+ bytebuff2 = src_buff[offset1 + full_bytes] & ((unsigned char)255 << (8 - trailing_bits));
|
||||
sect_buff[dst_offset] = bytebuff2;
|
||||
#ifdef DEVELMODE
|
||||
TIFFError ("", " Trailing bits src offset: %8"PRIu32", Dst offset: %8"PRIu32"\n",
|
||||
- offset2, dst_offset);
|
||||
+ offset1 + full_bytes, dst_offset);
|
||||
for (j = 30, k = 7; j < 38; j++, k--)
|
||||
{
|
||||
bitset = *(sect_buff + dst_offset) & (((unsigned char)1 << k)) ? 1 : 0;
|
||||
@@ -6863,8 +6860,10 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
#endif
|
||||
for (j = 0; j <= full_bytes; j++)
|
||||
{
|
||||
- bytebuff1 = src_buff[offset1 + j] & ((unsigned char)255 >> shift1);
|
||||
- bytebuff2 = src_buff[offset1 + j + 1] & ((unsigned char)255 << (7 - shift1));
|
||||
+ /* Skip the first shift1 bits and shift the source up by shift1 bits before save to destination.*/
|
||||
+ /* Attention: src_buff size needs to be some bytes larger than image size, because could read behind image here. */
|
||||
+ bytebuff1 = src_buff[offset1 + j] & ((unsigned char)255 >> shift1);
|
||||
+ bytebuff2 = src_buff[offset1 + j + 1] & ((unsigned char)255 << (8 - shift1));
|
||||
sect_buff[dst_offset + j] = (bytebuff1 << shift1) | (bytebuff2 >> (8 - shift1));
|
||||
}
|
||||
#ifdef DEVELMODE
|
||||
@@ -6880,36 +6879,17 @@ extractImageSection(struct image_data *image, struct pageseg *section,
|
||||
#endif
|
||||
dst_offset += full_bytes;
|
||||
|
||||
+ /* Copy the trailing_bits for the last byte in the destination buffer.
|
||||
+ Could come from one ore two bytes of the source buffer. */
|
||||
if (trailing_bits != 0)
|
||||
{
|
||||
#ifdef DEVELMODE
|
||||
- TIFFError ("", " Trailing bits src offset: %8"PRIu32", Dst offset: %8"PRIu32"\n", offset1 + full_bytes, dst_offset);
|
||||
-#endif
|
||||
- if (shift2 > shift1)
|
||||
- {
|
||||
- bytebuff1 = src_buff[offset1 + full_bytes] & ((unsigned char)255 << (7 - shift2));
|
||||
- bytebuff2 = bytebuff1 & ((unsigned char)255 << shift1);
|
||||
- sect_buff[dst_offset] = bytebuff2;
|
||||
-#ifdef DEVELMODE
|
||||
- TIFFError ("", " Shift2 > Shift1\n");
|
||||
+ TIFFError("", " Trailing bits %4"PRIu32" src offset: %8"PRIu32", Dst offset: %8"PRIu32"\n", trailing_bits, offset1 + full_bytes, dst_offset);
|
||||
#endif
|
||||
+ /* More than necessary bits are already copied into last destination buffer,
|
||||
+ * only masking of last byte in destination buffer is necessary.*/
|
||||
+ sect_buff[dst_offset] &= ((uint8_t)0xFF << (8 - trailing_bits));
|
||||
}
|
||||
- else
|
||||
- {
|
||||
- if (shift2 < shift1)
|
||||
- {
|
||||
- bytebuff2 = ((unsigned char)255 << (shift1 - shift2 - 1));
|
||||
- sect_buff[dst_offset] &= bytebuff2;
|
||||
-#ifdef DEVELMODE
|
||||
- TIFFError ("", " Shift2 < Shift1\n");
|
||||
-#endif
|
||||
- }
|
||||
-#ifdef DEVELMODE
|
||||
- else
|
||||
- TIFFError ("", " Shift2 == Shift1\n");
|
||||
-#endif
|
||||
- }
|
||||
- }
|
||||
#ifdef DEVELMODE
|
||||
sprintf(&bitarray[28], " ");
|
||||
sprintf(&bitarray[29], " ");
|
||||
@@ -7062,7 +7042,7 @@ writeImageSections(TIFF *in, TIFF *out, struct image_data *image,
|
||||
width = sections[i].x2 - sections[i].x1 + 1;
|
||||
length = sections[i].y2 - sections[i].y1 + 1;
|
||||
sectsize = (uint32_t)
|
||||
- ceil((width * image->bps + 7) / (double)8) * image->spp * length;
|
||||
+ ceil((width * image->bps * image->spp + 7) / (double)8) * length;
|
||||
/* allocate a buffer if we don't have one already */
|
||||
if (createImageSection(sectsize, sect_buff_ptr))
|
||||
{
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
CVE: CVE-2022-0907
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From a139191cc86f4dc44c74a0f22928e0fb38ed2485 Mon Sep 17 00:00:00 2001
|
||||
From: Augustus <wangdw.augustus@qq.com>
|
||||
Date: Mon, 7 Mar 2022 18:21:49 +0800
|
||||
Subject: [PATCH 3/6] add checks for return value of limitMalloc (#392)
|
||||
|
||||
---
|
||||
tools/tiffcrop.c | 33 +++++++++++++++++++++------------
|
||||
1 file changed, 21 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
|
||||
index 302a7e91..e407bf51 100644
|
||||
--- a/tools/tiffcrop.c
|
||||
+++ b/tools/tiffcrop.c
|
||||
@@ -7357,7 +7357,11 @@ createImageSection(uint32_t sectsize, unsigned char **sect_buff_ptr)
|
||||
if (!sect_buff)
|
||||
{
|
||||
sect_buff = (unsigned char *)limitMalloc(sectsize);
|
||||
- *sect_buff_ptr = sect_buff;
|
||||
+ if (!sect_buff)
|
||||
+ {
|
||||
+ TIFFError("createImageSection", "Unable to allocate/reallocate section buffer");
|
||||
+ return (-1);
|
||||
+ }
|
||||
_TIFFmemset(sect_buff, 0, sectsize);
|
||||
}
|
||||
else
|
||||
@@ -7373,15 +7377,15 @@ createImageSection(uint32_t sectsize, unsigned char **sect_buff_ptr)
|
||||
else
|
||||
sect_buff = new_buff;
|
||||
|
||||
+ if (!sect_buff)
|
||||
+ {
|
||||
+ TIFFError("createImageSection", "Unable to allocate/reallocate section buffer");
|
||||
+ return (-1);
|
||||
+ }
|
||||
_TIFFmemset(sect_buff, 0, sectsize);
|
||||
}
|
||||
}
|
||||
|
||||
- if (!sect_buff)
|
||||
- {
|
||||
- TIFFError("createImageSection", "Unable to allocate/reallocate section buffer");
|
||||
- return (-1);
|
||||
- }
|
||||
prev_sectsize = sectsize;
|
||||
*sect_buff_ptr = sect_buff;
|
||||
|
||||
@@ -7648,7 +7652,11 @@ createCroppedImage(struct image_data *image, struct crop_mask *crop,
|
||||
if (!crop_buff)
|
||||
{
|
||||
crop_buff = (unsigned char *)limitMalloc(cropsize);
|
||||
- *crop_buff_ptr = crop_buff;
|
||||
+ if (!crop_buff)
|
||||
+ {
|
||||
+ TIFFError("createCroppedImage", "Unable to allocate/reallocate crop buffer");
|
||||
+ return (-1);
|
||||
+ }
|
||||
_TIFFmemset(crop_buff, 0, cropsize);
|
||||
prev_cropsize = cropsize;
|
||||
}
|
||||
@@ -7664,15 +7672,15 @@ createCroppedImage(struct image_data *image, struct crop_mask *crop,
|
||||
}
|
||||
else
|
||||
crop_buff = new_buff;
|
||||
+ if (!crop_buff)
|
||||
+ {
|
||||
+ TIFFError("createCroppedImage", "Unable to allocate/reallocate crop buffer");
|
||||
+ return (-1);
|
||||
+ }
|
||||
_TIFFmemset(crop_buff, 0, cropsize);
|
||||
}
|
||||
}
|
||||
|
||||
- if (!crop_buff)
|
||||
- {
|
||||
- TIFFError("createCroppedImage", "Unable to allocate/reallocate crop buffer");
|
||||
- return (-1);
|
||||
- }
|
||||
*crop_buff_ptr = crop_buff;
|
||||
|
||||
if (crop->crop_mode & CROP_INVERT)
|
||||
@@ -9231,3 +9239,4 @@ invertImage(uint16_t photometric, uint16_t spp, uint16_t bps, uint32_t width, ui
|
||||
* fill-column: 78
|
||||
* End:
|
||||
*/
|
||||
+
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
CVE: CVE-2022-0908
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From ef5a0bf271823df168642444d051528a68205cb0 Mon Sep 17 00:00:00 2001
|
||||
From: Even Rouault <even.rouault@spatialys.com>
|
||||
Date: Thu, 17 Feb 2022 15:28:43 +0100
|
||||
Subject: [PATCH 4/6] TIFFFetchNormalTag(): avoid calling memcpy() with a null
|
||||
source pointer and size of zero (fixes #383)
|
||||
|
||||
---
|
||||
libtiff/tif_dirread.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c
|
||||
index d84147a0..4e8ce729 100644
|
||||
--- a/libtiff/tif_dirread.c
|
||||
+++ b/libtiff/tif_dirread.c
|
||||
@@ -5079,7 +5079,10 @@ TIFFFetchNormalTag(TIFF* tif, TIFFDirEntry* dp, int recover)
|
||||
_TIFFfree(data);
|
||||
return(0);
|
||||
}
|
||||
- _TIFFmemcpy(o,data,(uint32_t)dp->tdir_count);
|
||||
+ if (dp->tdir_count > 0 )
|
||||
+ {
|
||||
+ _TIFFmemcpy(o,data,(uint32_t)dp->tdir_count);
|
||||
+ }
|
||||
o[(uint32_t)dp->tdir_count]=0;
|
||||
if (data!=0)
|
||||
_TIFFfree(data);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
CVE: CVE-2022-0909
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From 4768355a074d562177e0a8b551c561d1af7eb74a Mon Sep 17 00:00:00 2001
|
||||
From: 4ugustus <wangdw.augustus@qq.com>
|
||||
Date: Tue, 8 Mar 2022 16:22:04 +0000
|
||||
Subject: [PATCH 5/6] fix the FPE in tiffcrop (#393)
|
||||
|
||||
---
|
||||
libtiff/tif_dir.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libtiff/tif_dir.c b/libtiff/tif_dir.c
|
||||
index a6c254fc..77da6ea4 100644
|
||||
--- a/libtiff/tif_dir.c
|
||||
+++ b/libtiff/tif_dir.c
|
||||
@@ -335,13 +335,13 @@ _TIFFVSetField(TIFF* tif, uint32_t tag, va_list ap)
|
||||
break;
|
||||
case TIFFTAG_XRESOLUTION:
|
||||
dblval = va_arg(ap, double);
|
||||
- if( dblval < 0 )
|
||||
+ if( dblval != dblval || dblval < 0 )
|
||||
goto badvaluedouble;
|
||||
td->td_xresolution = _TIFFClampDoubleToFloat( dblval );
|
||||
break;
|
||||
case TIFFTAG_YRESOLUTION:
|
||||
dblval = va_arg(ap, double);
|
||||
- if( dblval < 0 )
|
||||
+ if( dblval != dblval || dblval < 0 )
|
||||
goto badvaluedouble;
|
||||
td->td_yresolution = _TIFFClampDoubleToFloat( dblval );
|
||||
break;
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
CVE: CVE-2022-0924
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
|
||||
From 1074b9691322b1e3671cd8ea0b6b3509d08978fb Mon Sep 17 00:00:00 2001
|
||||
From: 4ugustus <wangdw.augustus@qq.com>
|
||||
Date: Thu, 10 Mar 2022 08:48:00 +0000
|
||||
Subject: [PATCH 6/6] fix heap buffer overflow in tiffcp (#278)
|
||||
|
||||
---
|
||||
tools/tiffcp.c | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/tiffcp.c b/tools/tiffcp.c
|
||||
index 1f889516..552d8fad 100644
|
||||
--- a/tools/tiffcp.c
|
||||
+++ b/tools/tiffcp.c
|
||||
@@ -1661,12 +1661,27 @@ DECLAREwriteFunc(writeBufferToSeparateStrips)
|
||||
tdata_t obuf;
|
||||
tstrip_t strip = 0;
|
||||
tsample_t s;
|
||||
+ uint16_t bps = 0, bytes_per_sample;
|
||||
|
||||
obuf = limitMalloc(stripsize);
|
||||
if (obuf == NULL)
|
||||
return (0);
|
||||
_TIFFmemset(obuf, 0, stripsize);
|
||||
(void) TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
|
||||
+ (void) TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
|
||||
+ if( bps == 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(out), "Error, cannot read BitsPerSample");
|
||||
+ _TIFFfree(obuf);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if( (bps % 8) != 0 )
|
||||
+ {
|
||||
+ TIFFError(TIFFFileName(out), "Error, cannot handle BitsPerSample that is not a multiple of 8");
|
||||
+ _TIFFfree(obuf);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ bytes_per_sample = bps/8;
|
||||
for (s = 0; s < spp; s++) {
|
||||
uint32_t row;
|
||||
for (row = 0; row < imagelength; row += rowsperstrip) {
|
||||
@@ -1676,7 +1691,7 @@ DECLAREwriteFunc(writeBufferToSeparateStrips)
|
||||
|
||||
cpContigBufToSeparateBuf(
|
||||
obuf, (uint8_t*) buf + row * rowsize + s,
|
||||
- nrows, imagewidth, 0, 0, spp, 1);
|
||||
+ nrows, imagewidth, 0, 0, spp, bytes_per_sample);
|
||||
if (TIFFWriteEncodedStrip(out, strip++, obuf, stripsize) < 0) {
|
||||
TIFFError(TIFFFileName(out),
|
||||
"Error, can't write strip %"PRIu32,
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -11,7 +11,14 @@ CVE_PRODUCT = "libtiff"
|
||||
SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
|
||||
file://0001-tiffset-fix-global-buffer-overflow-for-ASCII-tags-wh.patch \
|
||||
file://561599c99f987dc32ae110370cfdd7df7975586b.patch \
|
||||
file://eecb0712f4c3a5b449f70c57988260a667ddbdef.patch"
|
||||
file://eecb0712f4c3a5b449f70c57988260a667ddbdef.patch \
|
||||
file://0001-tif_jbig.c-fix-crash-when-reading-a-file-with-multip.patch \
|
||||
file://0002-tiffcrop-fix-issue-380-and-382-heap-buffer-overflow-.patch \
|
||||
file://0003-add-checks-for-return-value-of-limitMalloc-392.patch \
|
||||
file://0004-TIFFFetchNormalTag-avoid-calling-memcpy-with-a-null-.patch \
|
||||
file://0005-fix-the-FPE-in-tiffcrop-393.patch \
|
||||
file://0006-fix-heap-buffer-overflow-in-tiffcp-278.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8"
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ index f316f49..de81ce0 100644
|
||||
--- a/Source/cmake/OptionsGTK.cmake
|
||||
+++ b/Source/cmake/OptionsGTK.cmake
|
||||
@@ -6,6 +6,7 @@ WEBKIT_OPTION_BEGIN()
|
||||
SET_PROJECT_VERSION(2 32 3)
|
||||
SET_PROJECT_VERSION(2 32 4)
|
||||
|
||||
set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string")
|
||||
+set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
@@ -22,7 +22,7 @@ SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
|
||||
file://reproducibility.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "c1f496f5ac654efe4cef62fbd4f2fbeeef265a07c5e7419e5d2900bfeea52cbc"
|
||||
SRC_URI[sha256sum] = "00ce2d3f798d7bc5e9039d9059f0c3c974d51de38c8b716f00e94452a177d3fd"
|
||||
|
||||
inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
|
||||
|
||||
@@ -2,9 +2,11 @@ require gmp.inc
|
||||
|
||||
LICENSE = "GPLv2+ | LGPLv3+"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
|
||||
file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
|
||||
file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
|
||||
file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
|
||||
file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://COPYINGv3;md5=11cc2d3ee574f9d6b7ee797bdce4d423 \
|
||||
"
|
||||
|
||||
REVISION = ""
|
||||
|
||||
@@ -11,7 +11,7 @@ RSUGGESTS:${PN} = "diffutils"
|
||||
|
||||
LICENSE = "vim"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=6b30ea4fa660c483b619924bc709ef99 \
|
||||
file://runtime/doc/uganda.txt;md5=a3f193c20c6faff93c69185d5d070535"
|
||||
file://runtime/doc/uganda.txt;md5=daf48235bb824c77fe8ae88d5f575f74"
|
||||
|
||||
SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
|
||||
file://disable_acl_header_check.patch \
|
||||
@@ -21,8 +21,8 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
|
||||
file://racefix.patch \
|
||||
"
|
||||
|
||||
PV .= ".4524"
|
||||
SRCREV = "d8f8629b1bf566e1dada7515e9b146c69e5d9757"
|
||||
PV .= ".4912"
|
||||
SRCREV = "a7583c42cd6b64fd276a5d7bb0db5ce7bfafa730"
|
||||
|
||||
# Do not consider .z in x.y.z, as that is updated with every commit
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
|
||||
|
||||
26
scripts/git
Executable file
26
scripts/git
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Wrapper around 'git' that doesn't think we are root
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
os.environ['PSEUDO_UNLOAD'] = '1'
|
||||
|
||||
# calculate path to the real 'git'
|
||||
path = os.environ['PATH']
|
||||
# we need to remove our path but also any other copy of this script which
|
||||
# may be present, e.g. eSDK.
|
||||
replacements = [os.path.dirname(sys.argv[0])]
|
||||
for p in path.split(":"):
|
||||
if p.endswith("/scripts"):
|
||||
replacements.append(p)
|
||||
for r in replacements:
|
||||
path = path.replace(r, '/ignoreme')
|
||||
real_git = shutil.which('git', path=path)
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
os.execl(real_git, 'git')
|
||||
|
||||
os.execv(real_git, sys.argv)
|
||||
@@ -50,7 +50,7 @@ class RootfsPlugin(SourcePlugin):
|
||||
|
||||
@staticmethod
|
||||
def __get_rootfs_dir(rootfs_dir):
|
||||
if os.path.isdir(rootfs_dir):
|
||||
if rootfs_dir and os.path.isdir(rootfs_dir):
|
||||
return os.path.realpath(rootfs_dir)
|
||||
|
||||
image_rootfs_dir = get_bitbake_var("IMAGE_ROOTFS", rootfs_dir)
|
||||
@@ -96,6 +96,9 @@ class RootfsPlugin(SourcePlugin):
|
||||
part.rootfs_dir = cls.__get_rootfs_dir(rootfs_dir)
|
||||
part.has_fstab = os.path.exists(os.path.join(part.rootfs_dir, "etc/fstab"))
|
||||
pseudo_dir = os.path.join(part.rootfs_dir, "../pseudo")
|
||||
if not os.path.lexists(pseudo_dir):
|
||||
pseudo_dir = os.path.join(cls.__get_rootfs_dir(None), '../pseudo')
|
||||
|
||||
if not os.path.lexists(pseudo_dir):
|
||||
logger.warn("%s folder does not exist. "
|
||||
"Usernames and permissions will be invalid " % pseudo_dir)
|
||||
|
||||
@@ -296,7 +296,7 @@ def package_info(args):
|
||||
extra = ''
|
||||
for line in f:
|
||||
for var in vars:
|
||||
m = re.match(var + '(?:_\S+)?:\s*(.+?)\s*$', line)
|
||||
m = re.match(var + '(?::\S+)?:\s*(.+?)\s*$', line)
|
||||
if m:
|
||||
vals[var] = m.group(1)
|
||||
pkg_version = vals['PKGV'] or ''
|
||||
|
||||
@@ -805,7 +805,7 @@ class BaseConfig(object):
|
||||
self.set('QB_MEM', qb_mem)
|
||||
|
||||
mach = self.get('MACHINE')
|
||||
if not mach.startswith('qemumips'):
|
||||
if not mach.startswith(('qemumips', 'qemux86')):
|
||||
self.kernel_cmdline_script += ' mem=%s' % self.get('QB_MEM').replace('-m','').strip() + 'M'
|
||||
|
||||
self.qemu_opt_script += ' %s' % self.get('QB_MEM')
|
||||
|
||||
Reference in New Issue
Block a user