<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leo Di Donato</title>
    <description>The latest articles on DEV Community by Leo Di Donato (@leodido).</description>
    <link>https://dev.to/leodido</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F369747%2F64bcd5d3-0e16-44e4-b087-875b905d6678.jpeg</url>
      <title>DEV Community: Leo Di Donato</title>
      <link>https://dev.to/leodido</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leodido"/>
    <language>en</language>
    <item>
      <title>2020, the year of unexpectedness</title>
      <dc:creator>Leo Di Donato</dc:creator>
      <pubDate>Sun, 03 Jan 2021 14:54:32 +0000</pubDate>
      <link>https://dev.to/leodido/2020-the-year-of-unexpectedness-1309</link>
      <guid>https://dev.to/leodido/2020-the-year-of-unexpectedness-1309</guid>
      <description>&lt;p&gt;This time of the year normally makes me reflect on my life and professional accomplishments.&lt;/p&gt;

&lt;p&gt;This last year, 2020, has given me a new perspective and awareness about a few things... 💭&lt;/p&gt;

&lt;p&gt;It taught me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how important our &lt;strong&gt;personal relationships&lt;/strong&gt;, &lt;strong&gt;friends&lt;/strong&gt;, and &lt;strong&gt;family&lt;/strong&gt; (people we often take for granted) are&lt;/li&gt;
&lt;li&gt;how I can &lt;strong&gt;help people keep their spirits up&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;how important it is for me that they do the same with me, &lt;strong&gt;helping my energy to stay positive&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;how all these make the difference even in the &lt;strong&gt;work environment&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I feel like we all learned the hard way something similar to what I've just written above.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;global pandemic&lt;/strong&gt;, &lt;strong&gt;political&lt;/strong&gt; and &lt;strong&gt;social unrest&lt;/strong&gt;, &lt;strong&gt;environmental concerns&lt;/strong&gt;, &lt;strong&gt;isolation&lt;/strong&gt;. 🦠&lt;br&gt;
We all have had to face them.&lt;br&gt;
It has been a tough one, let's admit it.&lt;/p&gt;

&lt;p&gt;Furthermore, I don't think the SARS-CoV-2 virus - ie., COVID-19 - cares about the 📆 Gregorian calendar: 2021 will be no different than 2020 in many aspects unless we commit ourselves to do the right steps and decisions.&lt;/p&gt;

&lt;p&gt;Thus &lt;strong&gt;we're in charge to make 2021 a little better&lt;/strong&gt; by applying all the lessons that the pandemic taught us, and by using the tools we built to face it.&lt;/p&gt;

&lt;p&gt;The first and most important lesson is: to &lt;strong&gt;keep a sense of balance and normalcy&lt;/strong&gt; while we go through the new year.&lt;/p&gt;

&lt;p&gt;I'll try to achieve this balance starting now, by looking back at my highlights with more indulgence than the usual.&lt;/p&gt;

&lt;p&gt;In practice, I always feel like I could have done more, and done it better.&lt;/p&gt;

&lt;p&gt;Today, while prepping this blog post and going through all I did, all we did, I suddenly realized that even if it's always possible to do more, that's not the correct yardstick to measure ourselves.&lt;/p&gt;

&lt;p&gt;Especially because the word "more" is not an easily quantifiable number. And no one really knows how to correctly weight it, when all around our world is changing so fast and our lives seem completely different from what we were used to.&lt;/p&gt;

&lt;p&gt;So, let me tell you what are the 2020 things I'm most proud of!&lt;/p&gt;
&lt;h2&gt;
  
  
  Deep into the eBPF VM in the Linux kernel
&lt;/h2&gt;

&lt;p&gt;Italy 🇮🇹 was the first western country to impose a total lockdown. 🔒&lt;/p&gt;

&lt;p&gt;Unknowns everywhere. Ambulances. A lot. Deaths. A lot of deaths. Words, too many words. 😢&lt;/p&gt;

&lt;p&gt;So, I turned off the television and any media device in my house, reaching unprecedented levels of isolation. 🚨&lt;/p&gt;

&lt;p&gt;The only sounds I remember distinctly are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the fan noise while compiling Falco and the Linux kernel&lt;/li&gt;
&lt;li&gt;the fast pace typing on the keyboard&lt;/li&gt;
&lt;li&gt;the ambulances&lt;/li&gt;
&lt;li&gt;people singing from the balconies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of a sudden, the only thing I could do during my evenings and nights was to code and debug with my friend Lorenzo.&lt;br&gt;
&lt;strong&gt;I felt alone&lt;/strong&gt;. &lt;strong&gt;But I also quickly realized how lucky I was to have a real friend with whom I share a passion&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;The positive aspect of the lockdown was that having unexpected free time came in really handy to look at a set of strange issues (&lt;a href="https://github.com/falcosecurity/falco/issues/896"&gt;896&lt;/a&gt;, &lt;a href="https://github.com/draios/sysdig/issues/1610"&gt;1610&lt;/a&gt;) users were experiencing for some months (~October 2019) while trying to get &lt;a href="https://github.com/falcosecurity/falco"&gt;Falco&lt;/a&gt; to work fine on some Linux kernels (with the eBPF driver, clearly).&lt;/p&gt;

&lt;p&gt;Long story short: users found &lt;strong&gt;Falco to hang on Linux kernels 4.19.y when using the eBPF driver&lt;/strong&gt;.&lt;br&gt;
The CPUs were starting to &lt;strong&gt;soft-lock&lt;/strong&gt; under certain (and unknown) circumstances.&lt;/p&gt;

&lt;p&gt;After banging our heads a bit against various brick walls 🧱, we thought we created a reproducer...&lt;br&gt;
But still, we had no idea at all of where the problem cause was.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UVvTXaIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g5qnp86b37uiqxp9i8f0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UVvTXaIA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g5qnp86b37uiqxp9i8f0.png" alt="Kernel stack trace during the softlock"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Little after, we discovered that to reproduce the crash effectively we had to compile a Linux kernel on the host!&lt;br&gt;
Or to stress the system in a similar way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X9DtykHU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7p8unxglhrujm2dwsds5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X9DtykHU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7p8unxglhrujm2dwsds5.png" alt="Nataly experiencing the crash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides the fact we wanted to use our new spare time to fix it, there were various factors that caught our attention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it was happening only in certain conditions&lt;/li&gt;
&lt;li&gt;initially, it seemed related to the events (syscall) frequency&lt;/li&gt;
&lt;li&gt;it was happening regardless of the specific syscall&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lorenzo and I first started &lt;strong&gt;bisecting&lt;/strong&gt; the commits of the Linux kernel 4.19.y.&lt;br&gt;
By doing so we discovered that the problem was introduced by commit &lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/kernel/bpf/verifier.c?h=linux-4.19.y&amp;amp;id=849fa50662fbc8b476d652f8a4e6bdda17b37859"&gt;849fa50662fb&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We found that the problem was affecting almost all 4.19.y series, from 4.19.19 to the long-term Linux kernel release 4.19.133. Thus we knew we need to responsibly disclose our findings to the BPF subsystem kernel maintainers.&lt;br&gt;
Thus we contacted Daniel Borkmann privately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wtF4DFcq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i5ui5uxp9st52lc10q1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wtF4DFcq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/i5ui5uxp9st52lc10q1n.png" alt="The commit introducing the issue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The commit 849fa50662fb (&lt;code&gt;"bpf/verifier: refine&lt;br&gt;
retval R0 state for bpf_get_stack helper"&lt;/code&gt;) introduced &lt;code&gt;do_refine_retval_range&lt;/code&gt; function in the BPF verifier. The original intent of such function was to fix a situation where the LLVM compiler optimizations were messing with registers &lt;code&gt;r2&lt;/code&gt; and &lt;code&gt;r1&lt;/code&gt; when testing the return value of &lt;code&gt;bpf_probe_read_str&lt;/code&gt; and of &lt;code&gt;bpf_get_stack&lt;/code&gt; helpers against the buffer size - ie., &lt;code&gt;retval &amp;gt; bufsize&lt;/code&gt;. In fact, both helpers return a negative error code or a length (equal or smaller than the buffer size).&lt;br&gt;
So, the &lt;code&gt;do_refine_retval_range&lt;/code&gt; goal was to check the return values against the correct boundaries (eg., &lt;code&gt;meta-&amp;gt;msize_*&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F1uu5o-9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tkjl8tt8kffyv08adgun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F1uu5o-9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tkjl8tt8kffyv08adgun.png" alt="do_refine_retval_range()"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the meantime, with another very long cycle of bisects, we also discovered that other Linux kernel major releases were affected (eg., 5.0 kernels). We prepared a gist containing a table of the affected kernels (which you can find &lt;a href="https://gist.github.com/fntlnz/06e1d19c27cbad2b20ae13190ff5d085"&gt;here&lt;/a&gt;) and sent it out to Daniel.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Until commit &lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/kernel/bpf/verifier.c?id=e2ae4ca266a1c9a0163738129506dbc63d5cca80"&gt;e2ae4ca2&lt;/a&gt;, which was indirectly solving the issue. Starting from it the problem was not present anymore...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--siDI0j6S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3p17qmhtrh28g0qjxg9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--siDI0j6S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3p17qmhtrh28g0qjxg9f.png" alt="Commit e2ae4ca2 indirectly solves the issue?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We continued debugging, debugging, and debugging 🔬. We created patches. Applied and tested them. Tested various commit reverts. Looked at the generated assembly, with JIT enabled or not. Generated &lt;code&gt;.dot&lt;/code&gt; files via &lt;code&gt;bpftool&lt;/code&gt;. For days and nights.&lt;br&gt;
In those days, uncovering the root cause was the only thing I cared about. 🔨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MVwG6U9Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6fic77i6rwsxqngybwo4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MVwG6U9Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6fic77i6rwsxqngybwo4.png" alt="Leo sending assembly instructions to Daniel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While talking with the BPF subsystem maintainers we quickly discovered they also were debugging hard to get to the bottom of the problem.&lt;br&gt;
We shared with them some self-explanatory images of the &lt;code&gt;xlated&lt;/code&gt; Falco eBPF driver, with and without the patch we drafted once we get close to fully understand the root cause.&lt;/p&gt;

&lt;p&gt;You can find some of the material (&lt;code&gt;.dot&lt;/code&gt; files, &lt;code&gt;xlated&lt;/code&gt; dumps) in this &lt;a href="https://gist.github.com/leodido/5eb59ffa31f1611305532f885d8e23dc"&gt;gist&lt;/a&gt;.&lt;br&gt;
But I think, the following image speaks for itself. 💡&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2r5WhM7D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2sy351ydpoxkswt4364u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2r5WhM7D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2sy351ydpoxkswt4364u.png" alt="The loop soft-locking the CPUs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;beautiful infinite loop&lt;/strong&gt; 🔄 in a branch consequent to the return value of &lt;code&gt;bpf_probe_read_str&lt;/code&gt;. A helper we use a lot in the Falco eBPF probe. We got it! 🔦&lt;/p&gt;

&lt;p&gt;Due to the mentioned commit, the eBPF verifier was buggy. It was marking portions of our eBPF probe as unreachable causing our probe to hit the sanitizing code (hence the misleading jump - 1). 🐛&lt;/p&gt;

&lt;p&gt;As soon as we got it, we patched the Falco eBPF probe (take a look at the &lt;a href="https://patch-diff.githubusercontent.com/raw/draios/sysdig/pull/1612.patch"&gt;patch here&lt;/a&gt;) to avoid the buggy branch analysis mechanism in the eBPF verifier to trigger. 🏅&lt;/p&gt;

&lt;p&gt;How? By checking the return value of the &lt;code&gt;bpf_probe_read_str&lt;/code&gt; function against &lt;code&gt;EFAULT&lt;/code&gt; (remember it returns either a negative error code or a length, equal or smaller than the buffer size).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9yA1Eok3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ezuwla8lsbbk70m356d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9yA1Eok3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ezuwla8lsbbk70m356d.png" alt="Check the return value of bpf_probe_read_str() against EFAULT"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/draios/sysdig/pull/1612"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        fix(driver/bpf): exact check on bpf_probe_read_str() return value
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#1612&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/leodido"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0gL0btA8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/120051%3Fv%3D4" alt="leodido avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/leodido"&gt;leodido&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/draios/sysdig/pull/1612"&gt;&lt;time&gt;Apr 06, 2020&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;The &lt;code&gt;bpf_probe_read_str&lt;/code&gt; returns a value &amp;gt;= 0 or &lt;code&gt;-EFAULT&lt;/code&gt; (-14) when there's a page fault.
To avoid issues with the BPF VM branch analysis we need to check for the negative case exactly.&lt;/p&gt;
&lt;p&gt;Fixes #1610
Ref &lt;a href="https://github.com/falcosecurity/falco/issues/896"&gt;https://github.com/falcosecurity/falco/issues/896&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Co-authored-by: Lorenzo Fontana &lt;a href="mailto:lo@linux.com"&gt;lo@linux.com&lt;/a&gt;
Signed-off-by: Leonardo Di Donato &lt;a href="mailto:leodidonato@gmail.com"&gt;leodidonato@gmail.com&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/draios/sysdig/pull/1612"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We also promptly updated the Falco driver version in the Falco core with pull-request &lt;a href="https://github.com/falcosecurity/falco/pull/1131"&gt;1131&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Easy peasy lemon squeezy. 🍋 Innit?&lt;/p&gt;

&lt;p&gt;Not exactly. The process was a month long. The real bug was still present in the Linux kernel.&lt;/p&gt;

&lt;p&gt;But we continued working side-by-side with the BPF subsystem maintainers that were preparing another patch slightly different from ours. We tested the new patch and confirmed it was fixing the issue.&lt;br&gt;
A week after a commit titled &lt;code&gt;"bpf: fix buggy r0 retval refinement for tracing helpers"&lt;/code&gt; ended up in various Linux kernel releases definitely solving the problem!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i2w9tMHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r7eitrcupbanvlnknh35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i2w9tMHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r7eitrcupbanvlnknh35.png" alt="Greg!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can take a look at the final patch by looking at &lt;a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e0b80b7d646646273af0770a2bd4d105719387e3"&gt;this commit&lt;/a&gt; in the Linux kernel 4.19.y series.&lt;/p&gt;

&lt;p&gt;The same was applied to 5.4.y and 5.6.y series too.&lt;/p&gt;

&lt;p&gt;It was a tough, long, and unique experience. But also very rewarding. &lt;strong&gt;Seeing my name in a Linux kernel commit made me cry&lt;/strong&gt;. 🤩&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lorenzo and I had a lot of fun, but also moments in which results were not coming and our will wavered&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Anyway, during that month we learnt a lot. For example, &lt;strong&gt;knowing how to effectively debug the eBPF VM in the Linux kernel is priceless&lt;/strong&gt; in my opinion, and that alone was worth the price.&lt;/p&gt;

&lt;p&gt;In case you also wanna know how to embark on such tasks, I suggest you watch Lorenzo's lightning talk &lt;a href="https://youtu.be/W6rgaghycFI"&gt;here&lt;/a&gt;. 📽&lt;/p&gt;
&lt;h2&gt;
  
  
  Podcasts, conferences, live streams
&lt;/h2&gt;

&lt;p&gt;I began 2020 by recording a podcast about &lt;a href="https://kubernetespodcast.com/episode/091-ebpf-and-falco/"&gt;eBPF and Falco&lt;/a&gt; for the &lt;a href="https://kubernetespodcast.com"&gt;Kubernetes Podcast&lt;/a&gt; from Google. 📼&lt;/p&gt;

&lt;p&gt;I suffer from impostor syndrome, thus initially the anxiety was overwhelming.&lt;/p&gt;

&lt;p&gt;I'm grateful I've been able to talk about two of my favorite topics in the world with people at Google: &lt;strong&gt;eBPF&lt;/strong&gt; and &lt;strong&gt;Falco&lt;/strong&gt;. Only today, after one year, I've completely realized &lt;strong&gt;how lucky I feel for that opportunity&lt;/strong&gt;. 🥠&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YpJZEnBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ptu4qjuwts82hzqn081.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YpJZEnBC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ptu4qjuwts82hzqn081.png" alt="eBPF and Falco with Leonardo Di Donato"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conferences: I always loved to get to meet peers in person. &lt;strong&gt;Conferences were that moment in my life&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We all know how 2020 took that privilege away from us.&lt;/p&gt;

&lt;p&gt;When COVID-19 came as a shock to all of us, some conferences were canceled.&lt;br&gt;
Other times I declined talks that got accepted.&lt;br&gt;
Too much uncertainty, too many changes. So there I was, sad for the flights I couldn’t take to run away for a bit, and for the friends I couldn't meet.&lt;/p&gt;

&lt;p&gt;After mid-2020, I was finally able to emotionally re-calibrate myself.&lt;br&gt;
I adapted and I started to participate in various virtual events and gave a bunch of talks.&lt;/p&gt;

&lt;p&gt;Here they are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/bsides-athens-leodido-falco-yt"&gt;Falco: runtime security analysis through syscalls&lt;/a&gt; @ BSides Athens 2020&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/kubecon-eu-2020-grpc-ebpf-leodido"&gt;Designing a gRPC Interface for Kernel Tracing with eBPF&lt;/a&gt; @ KubeCon EU 2020&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/kubecon-eu-2020-prow-leodido"&gt;Going Beyond CI/CD with Prow&lt;/a&gt; @ KubeCon EU 2020&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bit.ly/romhack-2020-leodido-falco"&gt;Falco, runtime security analysis through syscalls&lt;/a&gt; @ RomHack 2020&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/4jJaDf6BYJQ"&gt;Intro to Falco&lt;/a&gt; live stream @ &lt;a href="https://www.youtube.com/rawkode"&gt;Rawkode Live&lt;/a&gt; (thanks David!)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/nGqWskXRSmo"&gt;Bypass Falco&lt;/a&gt; @ &lt;a href="https://sched.co/ekE4"&gt;KubeCon NA 2020&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find the slides in the &lt;a href="https://github.com/leodido/presentations"&gt;leodido/presentations&lt;/a&gt; GitHub repository. Ping me over &lt;a href="https://twitter.com/leodido"&gt;Twitter&lt;/a&gt; in case of GitHub LFS rate-limits you. Or you can watch the &lt;a href="https://youtube.com/playlist?list=PL-YnLgW35W60wX9lhu6-a8ln4I9yfT1ug"&gt;recordings on YouTube&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/leodido"&gt;
        leodido
      &lt;/a&gt; / &lt;a href="https://github.com/leodido/presentations"&gt;
        presentations
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Collection of my talks
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
presentations&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Other talks may have gone lost&lt;/p&gt;
&lt;/blockquote&gt;
2020


&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Title&lt;/th&gt;
&lt;th&gt;Slides&lt;/th&gt;
&lt;th&gt;Video&lt;/th&gt;
&lt;th&gt;Conference&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2020.11.20&lt;/td&gt;
&lt;td&gt;&lt;a href="https://sched.co/ekE4" rel="nofollow"&gt;Bypass Falco&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://raw.githubusercontent.com/leodido/presentations/master/2020/11/20/kubecon-na/bypass-falco/slides.pdf"&gt;Slides&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://bit.ly/bypass-falco-kubecon-na-2020-yt" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;KubeCon + CloudNativeCon North America 2020 Virtual&lt;/td&gt;
&lt;td&gt;Talk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.10.29&lt;/td&gt;
&lt;td&gt;Intro to Falco&lt;/td&gt;
&lt;td&gt;✖️&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://youtu.be/4jJaDf6BYJQ" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;Rawkode Live&lt;/td&gt;
&lt;td&gt;Live stream&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.09.27&lt;/td&gt;
&lt;td&gt;&lt;a href="https://2020.romhack.io/speakers-2020.html#didonato" rel="nofollow"&gt;Falco, runtime security analysis through syscalls&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://raw.githubusercontent.com/leodido/presentations/master/2020/09/27/romhack/falco-runtime-security-analysis-through-syscalls/slides.pdf"&gt;Slides&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://bit.ly/romhack-2020-leodido-falco" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;RomHack Rome 2020&lt;/td&gt;
&lt;td&gt;Talk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.08.20&lt;/td&gt;
&lt;td&gt;&lt;a href="https://sched.co/ZenU" rel="nofollow"&gt;Going Beyond CI/CD with Prow&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://raw.githubusercontent.com/leodido/presentations/master/2020/08/20/kubecon-eu/going-beyond-cicd-with-prow/slides.pdf"&gt;Slides&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://bit.ly/kubecon-eu-2020-prow-leodido" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;KubeCon + CloudNativeCon Europe 2020 Virtual&lt;/td&gt;
&lt;td&gt;Talk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.08.19&lt;/td&gt;
&lt;td&gt;&lt;a href="https://sched.co/Zexb" rel="nofollow"&gt;Designing a gRPC Interface for Kernel Tracing with eBPF&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://raw.githubusercontent.com/leodido/presentations/master/2020/08/19/kubecon-eu/designing-a-grpc-interface-for-kernel-tracing-with-ebpf/slides.pdf"&gt;Slides&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://bit.ly/kubecon-eu-2020-grpc-ebpf-leodido" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;KubeCon + CloudNativeCon Europe 2020 Virtual&lt;/td&gt;
&lt;td&gt;Talk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.06.20&lt;/td&gt;
&lt;td&gt;Falco: runtime security analysis through syscalls&lt;/td&gt;
&lt;td&gt;&lt;a href="https://raw.githubusercontent.com/leodido/presentations/master/2020/06/20/bsides-athens/falco-runtime-security-analysis-through-syscalls/slides.pdf"&gt;Slides&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://bit.ly/bsides-athens-leodido-falco-yt" rel="nofollow"&gt;Watch&lt;/a&gt; 📼
&lt;/td&gt;
&lt;td&gt;BSides Athens 2020&lt;/td&gt;
&lt;td&gt;Talk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2020.02.18&lt;/td&gt;
&lt;td&gt;eBPF and Falco&lt;/td&gt;
&lt;td&gt;✖️&lt;/td&gt;
&lt;td&gt;
&lt;a href="http://bit.ly/k8s-falco-leodido-podcast" rel="nofollow"&gt;Listen&lt;/a&gt; 🔈
&lt;/td&gt;
&lt;td&gt;Kubernetes Podcast from Google&lt;/td&gt;
&lt;td&gt;Podcast&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



2019
&lt;p&gt;
TBD
&lt;/p&gt;





&lt;p&gt;&lt;a href="https://github.com/igrigorik/ga-beacon"&gt;&lt;img src="https://camo.githubusercontent.com/e86829277abf490c263d21eecde8b29ea910bb17192f1adc9d0c649224b25c49/68747470733a2f2f67612d626561636f6e2e61707073706f742e636f6d2f55412d34393635373137362d312f70726573656e746174696f6e733f666c6174" alt="Analytics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/leodido/presentations"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;I learnt how difficult it is to set-up the tooling for recording a good video. I discovered so badly how much I prefer to give in-person talks. Entering a room with other peeps, smiling at them, and going with the flow while talking about nerdy things is way better than sitting in front of my laptop, tweaking the way I present a topic countless times, wasting hours editing clunky recording videos. That is not my job.&lt;/p&gt;

&lt;p&gt;Yeah, I could have given more speeches. But I'm really proud of the quality I've been able to deliver in the talks I gave. They were a completely new format, in totally different conditions, and I now feel I did pretty well.&lt;/p&gt;

&lt;p&gt;Especially with my latest talk, &lt;strong&gt;Bypass Falco&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Back in July, while I was prepping the talks for KubeCon EU 2020, a thought flashed upon my mind.&lt;/p&gt;

&lt;p&gt;What if I can prepare a talk showing how to bypass the software I build?&lt;/p&gt;

&lt;p&gt;We all know that the scope of Falco is to detect unknowns and threats at runtime, right?&lt;/p&gt;

&lt;p&gt;In this world, it is very common to challenge things others do. It's very rare to challenge the tools we build, the decisions we take.&lt;br&gt;
Will the audience understand the reasoning behind my choice?&lt;/p&gt;

&lt;p&gt;In the end, I just wanted to be transparent, and to bypass Falco to later make it stronger. Also, I wanted to show people how to do the same, and help us fix the findings they found.&lt;/p&gt;

&lt;p&gt;Thus, I wrote an abstract and I submitted the talk for KubeCon NA 2020. The talk got accepted and I told my father: "Look Pa, I'm gonna teach people how to bypass the software I build".&lt;br&gt;
Boy, did you call that one...&lt;/p&gt;

&lt;p&gt;I'll spare you the details, but what ensued was a fairly predictable (and stereotypical) Italian family drama: he started yelling at me, and shouted that to do such a thing was a grave and unforgivable mistake. That Sysdig could have, nay - should have - fired me for even conceiving something as twisted as this. 😭&lt;br&gt;
Indeed, according to him, presenting in public the shortcomings of the software I contribute to creating amounted to admit some sort of failure, either mine or of my team or of my company as a whole. In his eyes, it was an admission of defeat, the product of a subversive attitude.&lt;/p&gt;

&lt;p&gt;I tried - in vain, as he was still shouting - to explain that &lt;strong&gt;a constructive attitude begins with a quest for our weaknesses&lt;/strong&gt;. It is the first, and necessary, step in gaining self-awareness. It is only by getting to really know our limits that we can hope to overcome them.&lt;/p&gt;

&lt;p&gt;Nothing. My father continued telling me that Sysdig was gonna fire me. That my idea was non-sense, and so on.&lt;br&gt;
I felt proud of my idea, initially. But at that moment, I was filled with doubts. And very very anxious and sad.&lt;/p&gt;

&lt;p&gt;Nevertheless, I prepared my talk. I put everything I had into uncovering bypasses for Falco, preparing the deck, and finally recording the video.&lt;/p&gt;

&lt;p&gt;The KubeCon NA 2020 started and my talk went on air.&lt;/p&gt;

&lt;p&gt;The feedback was astonishing! Beyond my dreams. People got my message... It meant a lot to me! 💌&lt;/p&gt;

&lt;p&gt;A huge flow of positive tweets hit me! 🙈&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--GaX67WEa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/921098012801228800/9llO051e_normal.jpg" alt="Joe Thompson profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Joe Thompson
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @caffeinepresent
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Dear &lt;a href="https://twitter.com/sysdig"&gt;@sysdig&lt;/a&gt;, &lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt;'s KubeCon talk on bypassing Falco is awesome, please don't take his father's advice :)
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:44 PM - 20 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1329888472350531585" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1329888472350531585" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      4
      &lt;a href="https://twitter.com/intent/like?tweet_id=1329888472350531585" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      19
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGK2G2ls--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1344920756736593920/mLCECXjZ_normal.jpg" alt="Ian Coldwater profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Ian Coldwater
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/iancoldwater"&gt;@iancoldwater&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt; Awesome presentation! Thank you for the /honk s and the learning!
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:12 PM - 20 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1329895469992951809" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1329895469992951809" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1329895469992951809" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      6
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FNeklj4J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/EnSy6LaUUAAs-99.png" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--nRRvLG1H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1335851245039337474/pl3YvKkJ_normal.jpg" alt="Duffie Cooley profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Duffie Cooley
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @mauilion
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Hacking around the syscall surface! 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:29 PM - 20 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1329884515532062720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1329884515532062720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1329884515532062720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      2
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MkpjRDDx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/EnS31rpVkAAgW8s.png" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--nRRvLG1H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1335851245039337474/pl3YvKkJ_normal.jpg" alt="Duffie Cooley profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Duffie Cooley
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @mauilion
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      I really enjoyed this presentation! &lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt; is awesome! 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:50 PM - 20 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1329889933436227584" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1329889933436227584" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1329889933436227584" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      4
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--8MHCZNC8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1338999814076440584/-2ODmLXo_normal.jpg" alt="Leonardo Murillo profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Leonardo Murillo
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @murillodigital
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      .&lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt; talk on &lt;a href="https://twitter.com/falco_org"&gt;@falco_org&lt;/a&gt; was awesome! Something as simple as a symlink can be used to bypass rules - combine rules so you get various perspectives to possible malicious behavior. &lt;a href="https://twitter.com/hashtag/cloudsecurity"&gt;#cloudsecurity&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/infosec"&gt;#infosec&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/kubeconNA"&gt;#kubeconNA&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:50 PM - 20 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1329889821590958081" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1329889821590958081" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1329889821590958081" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      1
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--H4haAEYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/3622777485/16facb613c1b1ed239e6db2406121560_normal.png" alt="Hiroki Suezawa profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Hiroki Suezawa
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="comment-mentioned-user" href="https://dev.to/rung"&gt;@rung&lt;/a&gt;

      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt; Thank you for your excellent presentation! I like your style to keep continuous improvement with understanding weaknesses.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      17:03 PM - 21 Nov 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1330195172664221702" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1330195172664221702" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1330195172664221702" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      1
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Also, my talk got mentioned (&lt;a href="https://metal.equinix.com/blog/kubecon-2020/"&gt;here by equinix&lt;/a&gt;, &lt;a href="https://www.stackrox.com/post/2020/11/kubecon-2020-highlights-and-key-takeaways/"&gt;here by stackrox&lt;/a&gt;) as one of the best KubeCon NA 2020 talks to watch! This completely blew my mind. 🤯&lt;/p&gt;

&lt;p&gt;Listen to the following video starting at 45:45 if you don't believe me!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/EvIjXCAfhoo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;More interesting than social mentions, &lt;strong&gt;people sent pull requests towards the Falco drivers, by looking at my talk, to support the missing syscalls that could be used to bypass it&lt;/strong&gt;! 👇&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/draios/sysdig/pull/1723"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        update(driver): execveat support
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#1723&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/jan0ski"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--8WCe3qI_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/16668493%3Fv%3D4" alt="jan0ski avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/jan0ski"&gt;jan0ski&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/draios/sysdig/pull/1723"&gt;&lt;time&gt;Dec 22, 2020&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;ul&gt;
&lt;li&gt;Inspired by guidance put forth in &lt;a class="comment-mentioned-user" href="https://dev.to/leodido"&gt;@leodido&lt;/a&gt;
 's Kubecon talk and @fntlnz 's PR for &lt;a href="https://github.com/draios/sysdig/pull/1654/files"&gt;renameat2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Implementation intends to follow some patterns of the already supported &lt;code&gt;execve&lt;/code&gt; syscall&lt;/li&gt;
&lt;li&gt;Manpage used: &lt;a href="https://man7.org/linux/man-pages/man2/execveat.2.html" rel="nofollow"&gt;https://man7.org/linux/man-pages/man2/execveat.2.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;sysdig-CLA-1.0-signed-off-by: Tommy McCormick &lt;a href="mailto:mccormickt9@gmail.com"&gt;mccormickt9@gmail.com&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/draios/sysdig/pull/1723"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/draios/sysdig/pull/1724"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        update(driver): add copy_file_range syscall support
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#1724&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/lumontec"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--vuck_0-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars1.githubusercontent.com/u/38809344%3Fv%3D4" alt="lumontec avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/lumontec"&gt;lumontec&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/draios/sysdig/pull/1724"&gt;&lt;time&gt;Dec 23, 2020&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Support copy_file_range syscall&lt;/h2&gt;
&lt;p&gt;Add support for &lt;a href="https://man7.org/linux/man-pages/man2/copy_file_range.2.html" rel="nofollow"&gt;&lt;strong&gt;copy_file_range&lt;/strong&gt;&lt;/a&gt; syscall&lt;/p&gt;
&lt;p&gt;Launch sysdig:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;sudo ./userspace/sysdig/sysdig proc.name=copy_file_range and evt.type=copy_file_range --bpf=./driver/bpf/probe.o&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Example output:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;21393 04:06:29.368028000 3 copy_file_range (76573) &lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt; copy_file_range fd_in=3(&lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;f&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;/home/crash/Documents/local/sysdig-repo/tests/src) off_in=0 fd_out=4(&lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;f&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;/home/crash/Documents/local/sysdig-repo/tests/dst) off_out=2 len=16 flags=0(O_NONE) &lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;For testing purposes&lt;/h3&gt;
&lt;div class="highlight highlight-source-c js-code-highlight"&gt;
&lt;pre&gt;#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;sys/types.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;define&lt;/span&gt; &lt;span class="pl-en"&gt;_GNU_SOURCE&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;fcntl.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;stdio.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;stdlib.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;sys/stat.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;sys/syscall.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
#&lt;span class="pl-k"&gt;include&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;&lt;/span&gt;unistd.h&lt;span class="pl-pds"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-k"&gt;int&lt;/span&gt; &lt;span class="pl-en"&gt;main&lt;/span&gt;(&lt;span class="pl-k"&gt;int&lt;/span&gt; argc, &lt;span class="pl-k"&gt;char&lt;/span&gt; **argv) {
  &lt;span class="pl-k"&gt;int&lt;/span&gt; fd_in, fd_out;
  &lt;span class="pl-k"&gt;struct&lt;/span&gt; stat stat;
  &lt;span class="pl-c1"&gt;loff_t&lt;/span&gt; len, ret;

  &lt;span class="pl-k"&gt;if&lt;/span&gt; (argc != &lt;span class="pl-c1"&gt;3&lt;/span&gt;) {
    &lt;span class="pl-c1"&gt;fprintf&lt;/span&gt;(stderr, &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Usage: &lt;span class="pl-c1"&gt;%s&lt;/span&gt; &amp;lt;source&amp;gt; &amp;lt;destination&amp;gt;&lt;span class="pl-cce"&gt;\n&lt;/span&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, argv[&lt;span class="pl-c1"&gt;0&lt;/span&gt;]);
    &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_FAILURE);
  }

  fd_in = &lt;span class="pl-c1"&gt;open&lt;/span&gt;(argv[&lt;span class="pl-c1"&gt;1&lt;/span&gt;], O_RDONLY);
  &lt;span class="pl-k"&gt;if&lt;/span&gt; (fd_in == -&lt;span class="pl-c1"&gt;1&lt;/span&gt;) {
    &lt;span class="pl-c1"&gt;perror&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;open (argv[1])&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;);
    &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_FAILURE);
  }

  &lt;span class="pl-k"&gt;if&lt;/span&gt; (&lt;span class="pl-c1"&gt;fstat&lt;/span&gt;(fd_in, &amp;amp;stat) == -&lt;span class="pl-c1"&gt;1&lt;/span&gt;) {
    &lt;span class="pl-c1"&gt;perror&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;fstat&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;);
    &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_FAILURE);
  }

  len = stat.&lt;span class="pl-smi"&gt;st_size&lt;/span&gt;;

  fd_out = &lt;span class="pl-c1"&gt;open&lt;/span&gt;(argv[&lt;span class="pl-c1"&gt;2&lt;/span&gt;], O_CREAT | O_WRONLY | O_TRUNC, &lt;span class="pl-c1"&gt;0644&lt;/span&gt;);
  &lt;span class="pl-k"&gt;if&lt;/span&gt; (fd_out == -&lt;span class="pl-c1"&gt;1&lt;/span&gt;) {
    &lt;span class="pl-c1"&gt;perror&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;open (argv[2])&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;);
    &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_FAILURE);
  }

  &lt;span class="pl-c1"&gt;loff_t&lt;/span&gt; buffin = &lt;span class="pl-c1"&gt;0&lt;/span&gt;;
  &lt;span class="pl-c1"&gt;loff_t&lt;/span&gt; buffout = &lt;span class="pl-c1"&gt;2&lt;/span&gt;;

  ret = &lt;span class="pl-bu"&gt;syscall&lt;/span&gt;(__NR_copy_file_range, fd_in, &amp;amp;buffin, fd_out, &amp;amp;buffout, len, &lt;span class="pl-c1"&gt;0&lt;/span&gt;);

  &lt;span class="pl-k"&gt;if&lt;/span&gt; (ret == -&lt;span class="pl-c1"&gt;1&lt;/span&gt;) {
    &lt;span class="pl-c1"&gt;perror&lt;/span&gt;(&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;copy_file_range&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;);
    &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_FAILURE);
  }

  &lt;span class="pl-c1"&gt;close&lt;/span&gt;(fd_in);
  &lt;span class="pl-c1"&gt;close&lt;/span&gt;(fd_out);
  &lt;span class="pl-c1"&gt;exit&lt;/span&gt;(EXIT_SUCCESS);
}&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Compile it&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;gcc -o copy_file_range.o copy_file_range.c&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Run it&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;./copy_file_range.o srcfile dstfile&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Implementation detail follows the line of preexisiting syscall &lt;a href="https://github.com/draios/sysdig/blob/ded615cd7e1f25e20b86e49878986afbdd29ea22/driver/ppm_fillers.c#L4215"&gt;&lt;strong&gt;sendfile()&lt;/strong&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Empty flag structure and loff_t type has been declared to comply with &lt;a href="https://man7.org/linux/man-pages/man2/copy_file_range.2.html" rel="nofollow"&gt;https://man7.org/linux/man-pages/man2/copy_file_range.2.html&lt;/a&gt; function parameters declaration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;sysdig-CLA-1.0-signed-off-by: Luca Montechiesi &lt;a href="mailto:lucamontechiesi@gmail.com"&gt;lucamontechiesi@gmail.com&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/draios/sysdig/pull/1724"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;It was so amazing to see people getting inspired by my talk!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I leave you the YouTube recording of my &lt;strong&gt;Bypass Falco&lt;/strong&gt; talk in case you wanna send some pull-request to the Falco drivers too! 😜&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nGqWskXRSmo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Falco
&lt;/h2&gt;

&lt;p&gt;&lt;del&gt;I will try to keep it compact, but Falco and its community, grown so much this year that I feel like this could be a separate blog post.&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;My feeling was very precise. I simply can't make this a mile long blog post.&lt;/p&gt;

&lt;p&gt;I moved my review of the year 2020 in Falco on its &lt;a href="https://falco.org/blog/falco-2020"&gt;blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can find it there. Just let me say I was impressed by the things we all (the Falco maintainers and the whole Falco community) did on Falco. And I'm only referring to the topics I remembered without any effort, not all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Family
&lt;/h2&gt;

&lt;p&gt;During this 2021, my little brother, &lt;a href="https://twitter.com/did0f"&gt;Francesco&lt;/a&gt;, found himself not able to work at the hostel where he was working in Milan, just like many other persons out there. 😰&lt;/p&gt;

&lt;p&gt;A really bad situation... I could have given him a fish and fed him, but I knew it wouldn't have worked in the long run.&lt;/p&gt;

&lt;p&gt;So we just started talking a lot to first identify how to use the new and unexpected free time, and what were his desires.&lt;/p&gt;

&lt;p&gt;While brainstorming, suddenly everything was crystal clear! 🔮&lt;/p&gt;

&lt;p&gt;He wanted to be back in tech. When he was 7 years old we used to code together some games in C++, others with Javascript engines and HTML5. Basically, we had fun together. 🕹&lt;/p&gt;

&lt;p&gt;But then he quit drastically. Because I was so stupid (also way younger) to push him to learn hard things he was not really passionate about.&lt;/p&gt;

&lt;p&gt;So this time I knew the mistakes to avoid.&lt;/p&gt;

&lt;p&gt;The only thing I needed to do was to help him by teaching him how to fish.&lt;br&gt;
How to discover &lt;strong&gt;by himself&lt;/strong&gt; the technologies, the frameworks, the programming languages, etc. he wanted to experiment with. How to approach them.&lt;/p&gt;

&lt;p&gt;And sit there, ready to help him when &lt;strong&gt;he&lt;/strong&gt; would have asked me some guidance.&lt;/p&gt;

&lt;p&gt;The process took the whole year, but as of today, it's complete and really successful.&lt;br&gt;
He did a lot of interviews. Cracked some of them, failed others. We both learned a lot!&lt;/p&gt;

&lt;p&gt;He now works as a Software Frontend Engineer at Chili TV during day time.&lt;/p&gt;

&lt;p&gt;But what's more important is that he spends his free time putting so much effort and passion into learning Linux, improving his coding skills, and playing with Arduino and Raspberry!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;His progress goes so fast that sometimes he scares the hell out of me&lt;/strong&gt;! 😱&lt;/p&gt;

&lt;p&gt;I consider helping him find his path as my top accomplishment of the year since every time I look at him playing and learning some new things he now knows he's passionate about, I can finally see he is happy. And this warms my heart more than anything! 🧡&lt;/p&gt;

&lt;p&gt;You can clearly see how happy he's with today's project: building a simple music tone recorder with Arduino.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XOx8slUG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1345483339176833026/pu/img/9mFhgNWI0fG4K-IS.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--cP_7xjsR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1291339510723289090/P_G1U3qd_normal.jpg" alt="Francesco Di Donato profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Francesco Di Donato
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @did0f
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4t6ys1m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/leodido"&gt;@leodido&lt;/a&gt;: what are you doing?&lt;br&gt;me: now it's gonna record&lt;br&gt;*&lt;a href="https://twitter.com/hashtag/Arduino"&gt;#Arduino&lt;/a&gt; bip-bip-bop*&lt;br&gt;*Pure joy clapping noises* 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:34 PM - 02 Jan 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1345483524586033152" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1345483524586033152" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      0
      &lt;a href="https://twitter.com/intent/like?tweet_id=1345483524586033152" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      1
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Who knows what will be the project he will choose tomorrow! I'll wait tomorrow morning to know more about it! 💫&lt;/p&gt;




&lt;p&gt;To new beginnings, happy 2021 everyone! 🥳&lt;/p&gt;

</description>
      <category>falco</category>
      <category>ebpf</category>
      <category>talks</category>
      <category>kernel</category>
    </item>
  </channel>
</rss>
