From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 380FA659; Wed, 29 Jun 2022 14:31:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656513114; x=1688049114; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=ovERUMxy5cHPu6k6hYcCFHDSxfmFe62BgY6RoX75pBU=; b=UjoO71xColZd8PA8WrId2tAtnpHl798SUXnTIXfM38XYj7l5MWInMJ3o WEIbOfDVlVpK6PdgCCTzsTJIBVa2j1z3Bg3M2mMoK4y8zEHEpXtOAX55d 7ejMHQ8Zn7O5EEHFFuLrY/S0nQdx4Jh7Zcwkx4o7XzWjEddiR8V2xI4Xf FL3/4hRLLGubdr03rA7H2XNlHJkDpQoU6T0HasLQJXN0hpvqefICwfpuP dok8Qb8bHGMpdAOAYXelC0AigRyR3joc2tCf6lmJitwRlC7WeJinKYOel 66H7Oj61golJXvL7onXX6zD6jCLq3QQQ+RL4NlvZxIlltV6oIrRmTD84C g==; X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="262448796" X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="262448796" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2022 07:31:23 -0700 X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="647415537" Received: from egolubev-mobl.amr.corp.intel.com (HELO spandruv-desk1.amr.corp.intel.com) ([10.209.68.9]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2022 07:31:09 -0700 Message-ID: Subject: Re: [PATCH 6/6] i2c: Make remove callback return void From: srinivas pandruvada To: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Wolfram Sang Cc: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Sekhar Nori , Bartosz Golaszewski , Russell King , Scott Wood , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , Robin van der Gracht , Miguel Ojeda , Corey Minyard , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Max Filippov , Michael Turquette , Stephen Boyd , Luca Ceresoli , Tudor Ambarus , Herbert Xu , "David S. Miller" , MyungJoo Ham , Chanwoo Choi , Michael Hennerich , Linus Walleij , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Benson Leung , Guenter Roeck , Phong LE , Adrien Grassein , Peter Senna Tschudin , Martin Donnelly , Martyn Welch , Douglas Anderson , Stefan Mavrodiev , Thierry Reding , Sam Ravnborg , Florian Fainelli , Broadcom internal kernel review list , Javier Martinez Canillas , Jiri Kosina , Benjamin Tissoires , Jean Delvare , George Joseph , Juerg Haefliger , Riku Voipio , Robert Marko , Luka Perkov , Marc Hulsman , Rudolf Marek , Peter Rosin , Jonathan Cameron , Lars-Peter Clausen , Dan Robertson , Rui Miguel Silva , Tomasz Duszynski , Kevin Tsai , Crt Mori , Dmitry Torokhov , Nick Dyer , Bastien Nocera , Hans de Goede , Maxime Coquelin , Alexandre Torgue , Sakari Ailus , Pavel Machek , Jan-Simon Moeller , Marek =?ISO-8859-1?Q?Beh=FAn?= , Colin Leroy , Joe Tessler , Hans Verkuil , Mauro Carvalho Chehab , Antti Palosaari , Jasmin Jessich , Matthias Schwarzott , Olli Salonen , Akihiro Tsukada , Kieran Bingham , Tianshu Qiu , Dongchun Zhu , Shawn Tu , Martin Kepplinger , Ricardo Ribalda , Dave Stevenson , Leon Luo , Manivannan Sadhasivam , Bingbu Cao , "Paul J. Murphy" , Daniele Alessandrelli , Michael Tretter , Pengutronix Kernel Team , Kyungmin Park , Heungjun Kim , Ramesh Shanmugasundaram , Jacopo Mondi , Niklas =?ISO-8859-1?Q?S=F6derlund?= , Jimmy Su , Arec Kao , "Lad, Prabhakar" , Shunqian Zheng , Steve Longerbeam , Chiranjeevi Rapolu , Daniel Scally , Wenyou Yang , Petr Cvek , Akinobu Mita , Sylwester Nawrocki , Benjamin Mugnier , Sylvain Petinot , Mats Randgaard , Tim Harvey , Matt Ranostay , Eduardo Valentin , "Daniel W. S. Almeida" , Lee Jones , Chen-Yu Tsai , Support Opensource , Robert Jones , Andy Shevchenko , Charles Keepax , Richard Fitzgerald , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Tony Lindgren , Jonathan =?ISO-8859-1?Q?Neusch=E4fer?= , Arnd Bergmann , Greg Kroah-Hartman , Eric Piel , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Andrew Lunn , Vivien Didelot , Vladimir Oltean , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Woojung Huh , UNGLinuxDriver@microchip.com, George McCollister , Ido Schimmel , Petr Machata , Jeremy Kerr , Matt Johnston , Charles Gorand , Krzysztof Opasiak , Rob Herring , Frank Rowand , Mark Gross , Maximilian Luz , Corentin Chary , Pali =?ISO-8859-1?Q?Roh=E1r?= , Sebastian Reichel , Tobias Schrammm , Liam Girdwood , Mark Brown , Alessandro Zummo , Jens Frederich , Jon Nettleton , Jiri Slaby , Felipe Balbi , Heikki Krogerus , Daniel Thompson , Jingoo Han , Helge Deller , Evgeniy Polyakov , Wim Van Sebroeck , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Johannes Berg , Jaroslav Kysela , Takashi Iwai , James Schulman , David Rhodes , Lucas Tanure , Nuno =?ISO-8859-1?Q?S=E1?= , Matthias Brugger , Oder Chiou , Fabio Estevam , Kevin Cernekee , Christophe Leroy , Maxime Ripard , Alvin =?UTF-8?Q?=C5=A0ipraga?= , Lucas Stach , Jagan Teki , Biju Das , Thomas Zimmermann , Alex Deucher , Lyude Paul , Xin Ji , Hsin-Yi Wang , =?ISO-8859-1?Q?Jos=E9_Exp=F3sito?= , Yang Li , Angela Czubak , Alistair Francis , Eddie James , Joel Stanley , Nathan Chancellor , Antoniu Miclaus , Alexandru Ardelean , Dmitry Rokosov , Stephan Gerhold , Miaoqian Lin , Gwendal Grignou , Yang Yingliang , Paul Cercueil , Daniel Palmer , Haibo Chen , Cai Huoqing , Marek Vasut , Jose Cazarin , Dan Carpenter , Jean-Baptiste Maneyrol , Michael Srba , Nikita Travkin , Maslov Dmitry , Jiri Valek - 2N , Arnaud Ferraris , Zheyu Ma , Marco Felsch , Oliver Graute , Zheng Yongjun , CGEL ZTE , Minghao Chi , Evgeny Novikov , Sean Young , Kirill Shilimanov , Moses Christopher Bollavarapu , Paul Kocialkowski , Janusz Krzysztofik , Dongliang Mu , Colin Ian King , lijian , Kees Cook , Yan Lei , Heiner Kallweit , Jonas Malaco , wengjianfeng , Rikard Falkeborn , Wei Yongjun , Tom Rix , Yizhuo , Martiros Shakhzadyan , Bjorn Andersson , Sven Peter , Alyssa Rosenzweig , Hector Martin , Saranya Gopal , Guido =?ISO-8859-1?Q?G=FCnther?= , Sing-Han Chen , Wayne Chang , Geert Uytterhoeven , Alexey Dobriyan , Masahiro Yamada , Vincent Knecht , Stephen Kitt , Pierre-Louis Bossart , Alexey Khoroshilov , Randy Dunlap , Alejandro Tafalla , Vijendar Mukunda , Seven Lee , Mac Chiang , David Lin , Daniel Beer , Ricard Wanderlof , Simon Trimmer , Shengjiu Wang , Viorel Suman , Nicola Lunghi , Adam Ford , linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, openipmi-developer@lists.sourceforge.net, linux-integrity@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-gpio@vger.kernel.org, dri-devel@lists.freedesktop.org, chrome-platform@lists.linux.dev, linux-rpi-kernel@lists.infradead.org, linux-input@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-leds@vger.kernel.org, linux-media@vger.kernel.org, patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, platform-driver-x86@vger.kernel.org, acpi4asus-user@lists.sourceforge.net, linux-pm@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-watchdog@vger.kernel.org, kasan-dev@googlegroups.com, linux-mediatek@lists.infradead.org Date: Wed, 29 Jun 2022 07:31:08 -0700 In-Reply-To: <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> References: <20220628140313.74984-1-u.kleine-koenig@pengutronix.de> <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.4 (3.42.4-2.fc35) Precedence: bulk X-Mailing-List: chrome-platform@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit On Tue, 2022-06-28 at 16:03 +0200, Uwe Kleine-König wrote: > From: Uwe Kleine-König > > The value returned by an i2c driver's remove function is mostly > ignored. > (Only an error message is printed if the value is non-zero that the > error is ignored.) > > So change the prototype of the remove function to return no value. > This > way driver authors are not tempted to assume that passing an error to > the upper layer is a good idea. All drivers are adapted accordingly. > There is no intended change of behaviour, all callbacks were prepared > to > return 0 before. > > Signed-off-by: Uwe Kleine-König For drivers/iio/accel/bmc150-accel-i2c.c | 4 +--- drivers/iio/accel/kxcjk-1013.c | 4 +--- Acked-by: Srinivas Pandruvada Thanks, Srinivas > --- >  Documentation/i2c/writing-clients.rst                     | 2 +- >  arch/arm/mach-davinci/board-dm644x-evm.c                  | 3 +-- >  arch/arm/mach-davinci/board-dm646x-evm.c                  | 3 +-- >  arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c            | 3 +-- >  drivers/auxdisplay/ht16k33.c                              | 4 +--- >  drivers/auxdisplay/lcd2s.c                                | 3 +-- >  drivers/char/ipmi/ipmb_dev_int.c                          | 4 +--- >  drivers/char/ipmi/ipmi_ipmb.c                             | 4 +--- >  drivers/char/ipmi/ipmi_ssif.c                             | 6 ++---- >  drivers/char/tpm/st33zp24/i2c.c                           | 4 +--- >  drivers/char/tpm/tpm_i2c_atmel.c                          | 3 +-- >  drivers/char/tpm/tpm_i2c_infineon.c                       | 4 +--- >  drivers/char/tpm/tpm_i2c_nuvoton.c                        | 3 +-- >  drivers/char/tpm/tpm_tis_i2c_cr50.c                       | 6 ++---- >  drivers/clk/clk-cdce706.c                                 | 3 +-- >  drivers/clk/clk-cs2000-cp.c                               | 4 +--- >  drivers/clk/clk-si514.c                                   | 3 +-- >  drivers/clk/clk-si5341.c                                  | 4 +--- >  drivers/clk/clk-si5351.c                                  | 4 +--- >  drivers/clk/clk-si570.c                                   | 3 +-- >  drivers/clk/clk-versaclock5.c                             | 4 +--- >  drivers/crypto/atmel-ecc.c                                | 6 ++---- >  drivers/crypto/atmel-sha204a.c                            | 6 ++---- >  drivers/extcon/extcon-rt8973a.c                           | 4 +--- >  drivers/gpio/gpio-adp5588.c                               | 4 +--- >  drivers/gpio/gpio-max7300.c                               | 4 +--- >  drivers/gpio/gpio-pca953x.c                               | 4 +--- >  drivers/gpio/gpio-pcf857x.c                               | 4 +--- >  drivers/gpio/gpio-tpic2810.c                              | 4 +--- >  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c              | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/anx7625.c                 | 4 +--- >  drivers/gpu/drm/bridge/chrontel-ch7033.c                  | 4 +--- >  drivers/gpu/drm/bridge/cros-ec-anx7688.c                  | 4 +--- >  drivers/gpu/drm/bridge/ite-it6505.c                       | 4 +--- >  drivers/gpu/drm/bridge/ite-it66121.c                      | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt8912b.c                  | 3 +-- >  drivers/gpu/drm/bridge/lontium-lt9211.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611uxc.c                | 4 +--- >  drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c  | 8 ++---- > -- >  drivers/gpu/drm/bridge/nxp-ptn3460.c                      | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8622.c                    | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8640.c                    | 4 +--- >  drivers/gpu/drm/bridge/sii902x.c                          | 4 +--- >  drivers/gpu/drm/bridge/sii9234.c                          | 4 +--- >  drivers/gpu/drm/bridge/sil-sii8620.c                      | 4 +--- >  drivers/gpu/drm/bridge/tc358767.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358768.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358775.c                         | 4 +--- >  drivers/gpu/drm/bridge/ti-sn65dsi83.c                     | 4 +--- >  drivers/gpu/drm/bridge/ti-tfp410.c                        | 4 +--- >  drivers/gpu/drm/i2c/ch7006_drv.c                          | 4 +--- >  drivers/gpu/drm/i2c/tda9950.c                             | 4 +--- >  drivers/gpu/drm/i2c/tda998x_drv.c                         | 3 +-- >  drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c        | 4 +--- >  drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c     | 4 +--- >  drivers/gpu/drm/solomon/ssd130x-i2c.c                     | 4 +--- >  drivers/hid/i2c-hid/i2c-hid-core.c                        | 4 +--- >  drivers/hid/i2c-hid/i2c-hid.h                             | 2 +- >  drivers/hwmon/adc128d818.c                                | 4 +--- >  drivers/hwmon/adt7470.c                                   | 3 +-- >  drivers/hwmon/asb100.c                                    | 6 ++---- >  drivers/hwmon/asc7621.c                                   | 4 +--- >  drivers/hwmon/dme1737.c                                   | 4 +--- >  drivers/hwmon/f75375s.c                                   | 5 ++--- >  drivers/hwmon/fschmd.c                                    | 6 ++---- >  drivers/hwmon/ftsteutates.c                               | 3 +-- >  drivers/hwmon/ina209.c                                    | 4 +--- >  drivers/hwmon/ina3221.c                                   | 4 +--- >  drivers/hwmon/jc42.c                                      | 3 +-- >  drivers/hwmon/mcp3021.c                                   | 4 +--- >  drivers/hwmon/occ/p8_i2c.c                                | 4 +--- >  drivers/hwmon/pcf8591.c                                   | 3 +-- >  drivers/hwmon/smm665.c                                    | 3 +-- >  drivers/hwmon/tps23861.c                                  | 4 +--- >  drivers/hwmon/w83781d.c                                   | 4 +--- >  drivers/hwmon/w83791d.c                                   | 6 ++---- >  drivers/hwmon/w83792d.c                                   | 6 ++---- >  drivers/hwmon/w83793.c                                    | 6 ++---- >  drivers/hwmon/w83795.c                                    | 4 +--- >  drivers/hwmon/w83l785ts.c                                 | 6 ++---- >  drivers/i2c/i2c-core-base.c                               | 6 +----- >  drivers/i2c/i2c-slave-eeprom.c                            | 4 +--- >  drivers/i2c/i2c-slave-testunit.c                          | 3 +-- >  drivers/i2c/i2c-smbus.c                                   | 3 +-- >  drivers/i2c/muxes/i2c-mux-ltc4306.c                       | 4 +--- >  drivers/i2c/muxes/i2c-mux-pca9541.c                       | 3 +-- >  drivers/i2c/muxes/i2c-mux-pca954x.c                       | 3 +-- >  drivers/iio/accel/bma180.c                                | 4 +--- >  drivers/iio/accel/bma400_i2c.c                            | 4 +--- >  drivers/iio/accel/bmc150-accel-i2c.c                      | 4 +--- >  drivers/iio/accel/kxcjk-1013.c                            | 4 +--- >  drivers/iio/accel/kxsd9-i2c.c                             | 4 +--- >  drivers/iio/accel/mc3230.c                                | 4 +--- >  drivers/iio/accel/mma7455_i2c.c                           | 4 +--- >  drivers/iio/accel/mma7660.c                               | 4 +--- >  drivers/iio/accel/mma8452.c                               | 4 +--- >  drivers/iio/accel/mma9551.c                               | 4 +--- >  drivers/iio/accel/mma9553.c                               | 4 +--- >  drivers/iio/accel/stk8312.c                               | 4 +--- >  drivers/iio/accel/stk8ba50.c                              | 4 +--- >  drivers/iio/adc/ad799x.c                                  | 4 +--- >  drivers/iio/adc/ina2xx-adc.c                              | 4 +--- >  drivers/iio/adc/ltc2497.c                                 | 4 +--- >  drivers/iio/adc/ti-ads1015.c                              | 4 +--- >  drivers/iio/chemical/atlas-sensor.c                       | 4 +--- >  drivers/iio/chemical/ccs811.c                             | 4 +--- >  drivers/iio/chemical/sgp30.c                              | 4 +--- >  drivers/iio/dac/ad5380.c                                  | 4 +--- >  drivers/iio/dac/ad5446.c                                  | 4 +--- >  drivers/iio/dac/ad5593r.c                                 | 4 +--- >  drivers/iio/dac/ad5696-i2c.c                              | 4 +--- >  drivers/iio/dac/ds4424.c                                  | 4 +--- >  drivers/iio/dac/m62332.c                                  | 4 +--- >  drivers/iio/dac/mcp4725.c                                 | 4 +--- >  drivers/iio/dac/ti-dac5571.c                              | 4 +--- >  drivers/iio/gyro/bmg160_i2c.c                             | 4 +--- >  drivers/iio/gyro/fxas21002c_i2c.c                         | 4 +--- >  drivers/iio/gyro/itg3200_core.c                           | 4 +--- >  drivers/iio/gyro/mpu3050-i2c.c                            | 4 +--- >  drivers/iio/health/afe4404.c                              | 4 +--- >  drivers/iio/health/max30100.c                             | 4 +--- >  drivers/iio/health/max30102.c                             | 4 +--- >  drivers/iio/humidity/hdc2010.c                            | 4 +--- >  drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 4 +--- >  drivers/iio/imu/kmx61.c                                   | 4 +--- >  drivers/iio/light/apds9300.c                              | 4 +--- >  drivers/iio/light/apds9960.c                              | 4 +--- >  drivers/iio/light/bh1750.c                                | 4 +--- >  drivers/iio/light/bh1780.c                                | 4 +--- >  drivers/iio/light/cm3232.c                                | 4 +--- >  drivers/iio/light/cm36651.c                               | 4 +--- >  drivers/iio/light/gp2ap002.c                              | 4 +--- >  drivers/iio/light/gp2ap020a00f.c                          | 4 +--- >  drivers/iio/light/isl29028.c                              | 4 +--- >  drivers/iio/light/isl29125.c                              | 4 +--- >  drivers/iio/light/jsa1212.c                               | 4 +--- >  drivers/iio/light/ltr501.c                                | 4 +--- >  drivers/iio/light/opt3001.c                               | 6 ++---- >  drivers/iio/light/pa12203001.c                            | 4 +--- >  drivers/iio/light/rpr0521.c                               | 4 +--- >  drivers/iio/light/stk3310.c                               | 4 +--- >  drivers/iio/light/tcs3472.c                               | 4 +--- >  drivers/iio/light/tsl2563.c                               | 4 +--- >  drivers/iio/light/tsl2583.c                               | 4 +--- >  drivers/iio/light/tsl4531.c                               | 4 +--- >  drivers/iio/light/us5182d.c                               | 4 +--- >  drivers/iio/light/vcnl4000.c                              | 4 +--- >  drivers/iio/light/vcnl4035.c                              | 4 +--- >  drivers/iio/light/veml6070.c                              | 4 +--- >  drivers/iio/magnetometer/ak8974.c                         | 4 +--- >  drivers/iio/magnetometer/ak8975.c                         | 4 +--- >  drivers/iio/magnetometer/bmc150_magn_i2c.c                | 4 +--- >  drivers/iio/magnetometer/hmc5843_i2c.c                    | 4 +--- >  drivers/iio/magnetometer/mag3110.c                        | 4 +--- >  drivers/iio/magnetometer/yamaha-yas530.c                  | 4 +--- >  drivers/iio/potentiostat/lmp91000.c                       | 4 +--- >  drivers/iio/pressure/mpl3115.c                            | 4 +--- >  drivers/iio/pressure/ms5611_i2c.c                         | 4 +--- >  drivers/iio/pressure/zpa2326_i2c.c                        | 4 +--- >  drivers/iio/proximity/pulsedlight-lidar-lite-v2.c         | 4 +--- >  drivers/iio/proximity/sx9500.c                            | 4 +--- >  drivers/iio/temperature/mlx90614.c                        | 4 +--- >  drivers/iio/temperature/mlx90632.c                        | 4 +--- >  drivers/input/joystick/as5011.c                           | 4 +--- >  drivers/input/keyboard/adp5588-keys.c                     | 4 +--- >  drivers/input/keyboard/lm8323.c                           | 4 +--- >  drivers/input/keyboard/lm8333.c                           | 4 +--- >  drivers/input/keyboard/mcs_touchkey.c                     | 4 +--- >  drivers/input/keyboard/qt1070.c                           | 4 +--- >  drivers/input/keyboard/qt2160.c                           | 4 +--- >  drivers/input/keyboard/tca6416-keypad.c                   | 4 +--- >  drivers/input/misc/adxl34x-i2c.c                          | 4 +--- >  drivers/input/misc/bma150.c                               | 4 +--- >  drivers/input/misc/cma3000_d0x_i2c.c                      | 4 +--- >  drivers/input/misc/pcf8574_keypad.c                       | 4 +--- >  drivers/input/mouse/synaptics_i2c.c                       | 4 +--- >  drivers/input/rmi4/rmi_smbus.c                            | 4 +--- >  drivers/input/touchscreen/atmel_mxt_ts.c                  | 4 +--- >  drivers/input/touchscreen/bu21013_ts.c                    | 4 +--- >  drivers/input/touchscreen/cyttsp4_i2c.c                   | 4 +--- >  drivers/input/touchscreen/edt-ft5x06.c                    | 4 +--- >  drivers/input/touchscreen/goodix.c                        | 4 +--- >  drivers/input/touchscreen/migor_ts.c                      | 4 +--- >  drivers/input/touchscreen/s6sy761.c                       | 4 +--- >  drivers/input/touchscreen/stmfts.c                        | 4 +--- >  drivers/input/touchscreen/tsc2004.c                       | 4 +--- >  drivers/leds/flash/leds-as3645a.c                         | 4 +--- >  drivers/leds/flash/leds-lm3601x.c                         | 4 +--- >  drivers/leds/flash/leds-rt4505.c                          | 3 +-- >  drivers/leds/leds-an30259a.c                              | 4 +--- >  drivers/leds/leds-aw2013.c                                | 4 +--- >  drivers/leds/leds-bd2802.c                                | 4 +--- >  drivers/leds/leds-blinkm.c                                | 3 +-- >  drivers/leds/leds-is31fl319x.c                            | 3 +-- >  drivers/leds/leds-is31fl32xx.c                            | 4 +--- >  drivers/leds/leds-lm3530.c                                | 3 +-- >  drivers/leds/leds-lm3532.c                                | 4 +--- >  drivers/leds/leds-lm355x.c                                | 4 +--- >  drivers/leds/leds-lm3642.c                                | 3 +-- >  drivers/leds/leds-lm3692x.c                               | 4 +--- >  drivers/leds/leds-lm3697.c                                | 4 +--- >  drivers/leds/leds-lp3944.c                                | 4 +--- >  drivers/leds/leds-lp3952.c                                | 4 +--- >  drivers/leds/leds-lp50xx.c                                | 4 +--- >  drivers/leds/leds-lp5521.c                                | 4 +--- >  drivers/leds/leds-lp5523.c                                | 4 +--- >  drivers/leds/leds-lp5562.c                                | 4 +--- >  drivers/leds/leds-lp8501.c                                | 4 +--- >  drivers/leds/leds-lp8860.c                                | 4 +--- >  drivers/leds/leds-pca9532.c                               | 6 ++---- >  drivers/leds/leds-tca6507.c                               | 4 +--- >  drivers/leds/leds-turris-omnia.c                          | 4 +--- >  drivers/macintosh/ams/ams-i2c.c                           | 4 +--- >  drivers/macintosh/therm_adt746x.c                         | 4 +--- >  drivers/macintosh/therm_windtunnel.c                      | 4 +--- >  drivers/macintosh/windfarm_ad7417_sensor.c                | 4 +--- >  drivers/macintosh/windfarm_fcu_controls.c                 | 3 +-- >  drivers/macintosh/windfarm_lm75_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_lm87_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_max6690_sensor.c               | 4 +--- >  drivers/macintosh/windfarm_smu_sat.c                      | 4 +--- >  drivers/media/cec/i2c/ch7322.c                            | 4 +--- >  drivers/media/dvb-frontends/a8293.c                       | 3 +-- >  drivers/media/dvb-frontends/af9013.c                      | 4 +--- >  drivers/media/dvb-frontends/af9033.c                      | 4 +--- >  drivers/media/dvb-frontends/au8522_decoder.c              | 3 +-- >  drivers/media/dvb-frontends/cxd2099.c                     | 4 +--- >  drivers/media/dvb-frontends/cxd2820r_core.c               | 4 +--- >  drivers/media/dvb-frontends/dvb-pll.c                     | 3 +-- >  drivers/media/dvb-frontends/lgdt3306a.c                   | 4 +--- >  drivers/media/dvb-frontends/lgdt330x.c                    | 4 +--- >  drivers/media/dvb-frontends/m88ds3103.c                   | 3 +-- >  drivers/media/dvb-frontends/mn88443x.c                    | 4 +--- >  drivers/media/dvb-frontends/mn88472.c                     | 4 +--- >  drivers/media/dvb-frontends/mn88473.c                     | 4 +--- >  drivers/media/dvb-frontends/mxl692.c                      | 4 +--- >  drivers/media/dvb-frontends/rtl2830.c                     | 4 +--- >  drivers/media/dvb-frontends/rtl2832.c                     | 4 +--- >  drivers/media/dvb-frontends/si2165.c                      | 3 +-- >  drivers/media/dvb-frontends/si2168.c                      | 4 +--- >  drivers/media/dvb-frontends/sp2.c                         | 3 +-- >  drivers/media/dvb-frontends/stv090x.c                     | 3 +-- >  drivers/media/dvb-frontends/stv6110x.c                    | 3 +-- >  drivers/media/dvb-frontends/tc90522.c                     | 3 +-- >  drivers/media/dvb-frontends/tda10071.c                    | 3 +-- >  drivers/media/dvb-frontends/ts2020.c                      | 3 +-- >  drivers/media/i2c/ad5820.c                                | 3 +-- >  drivers/media/i2c/ad9389b.c                               | 3 +-- >  drivers/media/i2c/adp1653.c                               | 4 +--- >  drivers/media/i2c/adv7170.c                               | 3 +-- >  drivers/media/i2c/adv7175.c                               | 3 +-- >  drivers/media/i2c/adv7180.c                               | 4 +--- >  drivers/media/i2c/adv7183.c                               | 3 +-- >  drivers/media/i2c/adv7343.c                               | 4 +--- >  drivers/media/i2c/adv7393.c                               | 4 +--- >  drivers/media/i2c/adv748x/adv748x-core.c                  | 4 +--- >  drivers/media/i2c/adv7511-v4l2.c                          | 3 +-- >  drivers/media/i2c/adv7604.c                               | 3 +-- >  drivers/media/i2c/adv7842.c                               | 3 +-- >  drivers/media/i2c/ak7375.c                                | 4 +--- >  drivers/media/i2c/ak881x.c                                | 4 +--- >  drivers/media/i2c/bt819.c                                 | 3 +-- >  drivers/media/i2c/bt856.c                                 | 3 +-- >  drivers/media/i2c/bt866.c                                 | 3 +-- >  drivers/media/i2c/ccs/ccs-core.c                          | 4 +--- >  drivers/media/i2c/cs3308.c                                | 3 +-- >  drivers/media/i2c/cs5345.c                                | 3 +-- >  drivers/media/i2c/cs53l32a.c                              | 3 +-- >  drivers/media/i2c/cx25840/cx25840-core.c                  | 3 +-- >  drivers/media/i2c/dw9714.c                                | 4 +--- >  drivers/media/i2c/dw9768.c                                | 4 +--- >  drivers/media/i2c/dw9807-vcm.c                            | 4 +--- >  drivers/media/i2c/et8ek8/et8ek8_driver.c                  | 4 +--- >  drivers/media/i2c/hi556.c                                 | 4 +--- >  drivers/media/i2c/hi846.c                                 | 4 +--- >  drivers/media/i2c/hi847.c                                 | 4 +--- >  drivers/media/i2c/imx208.c                                | 4 +--- >  drivers/media/i2c/imx214.c                                | 4 +--- >  drivers/media/i2c/imx219.c                                | 4 +--- >  drivers/media/i2c/imx258.c                                | 4 +--- >  drivers/media/i2c/imx274.c                                | 3 +-- >  drivers/media/i2c/imx290.c                                | 4 +--- >  drivers/media/i2c/imx319.c                                | 4 +--- >  drivers/media/i2c/imx334.c                                | 4 +--- >  drivers/media/i2c/imx335.c                                | 4 +--- >  drivers/media/i2c/imx355.c                                | 4 +--- >  drivers/media/i2c/imx412.c                                | 4 +--- >  drivers/media/i2c/ir-kbd-i2c.c                            | 4 +--- >  drivers/media/i2c/isl7998x.c                              | 4 +--- >  drivers/media/i2c/ks0127.c                                | 3 +-- >  drivers/media/i2c/lm3560.c                                | 4 +--- >  drivers/media/i2c/lm3646.c                                | 4 +--- >  drivers/media/i2c/m52790.c                                | 3 +-- >  drivers/media/i2c/m5mols/m5mols_core.c                    | 4 +--- >  drivers/media/i2c/max2175.c                               | 4 +--- >  drivers/media/i2c/max9286.c                               | 4 +--- >  drivers/media/i2c/ml86v7667.c                             | 4 +--- >  drivers/media/i2c/msp3400-driver.c                        | 3 +-- >  drivers/media/i2c/mt9m001.c                               | 4 +--- >  drivers/media/i2c/mt9m032.c                               | 3 +-- >  drivers/media/i2c/mt9m111.c                               | 4 +--- >  drivers/media/i2c/mt9p031.c                               | 4 +--- >  drivers/media/i2c/mt9t001.c                               | 3 +-- >  drivers/media/i2c/mt9t112.c                               | 4 +--- >  drivers/media/i2c/mt9v011.c                               | 4 +--- >  drivers/media/i2c/mt9v032.c                               | 4 +--- >  drivers/media/i2c/mt9v111.c                               | 4 +--- >  drivers/media/i2c/noon010pc30.c                           | 4 +--- >  drivers/media/i2c/og01a1b.c                               | 4 +--- >  drivers/media/i2c/ov02a10.c                               | 4 +--- >  drivers/media/i2c/ov08d10.c                               | 4 +--- >  drivers/media/i2c/ov13858.c                               | 4 +--- >  drivers/media/i2c/ov13b10.c                               | 4 +--- >  drivers/media/i2c/ov2640.c                                | 3 +-- >  drivers/media/i2c/ov2659.c                                | 4 +--- >  drivers/media/i2c/ov2680.c                                | 4 +--- >  drivers/media/i2c/ov2685.c                                | 4 +--- >  drivers/media/i2c/ov2740.c                                | 4 +--- >  drivers/media/i2c/ov5640.c                                | 4 +--- >  drivers/media/i2c/ov5645.c                                | 4 +--- >  drivers/media/i2c/ov5647.c                                | 4 +--- >  drivers/media/i2c/ov5648.c                                | 4 +--- >  drivers/media/i2c/ov5670.c                                | 4 +--- >  drivers/media/i2c/ov5675.c                                | 4 +--- >  drivers/media/i2c/ov5693.c                                | 4 +--- >  drivers/media/i2c/ov5695.c                                | 4 +--- >  drivers/media/i2c/ov6650.c                                | 3 +-- >  drivers/media/i2c/ov7251.c                                | 4 +--- >  drivers/media/i2c/ov7640.c                                | 4 +--- >  drivers/media/i2c/ov7670.c                                | 3 +-- >  drivers/media/i2c/ov772x.c                                | 4 +--- >  drivers/media/i2c/ov7740.c                                | 3 +-- >  drivers/media/i2c/ov8856.c                                | 4 +--- >  drivers/media/i2c/ov8865.c                                | 4 +--- >  drivers/media/i2c/ov9282.c                                | 4 +--- >  drivers/media/i2c/ov9640.c                                | 4 +--- >  drivers/media/i2c/ov9650.c                                | 4 +--- >  drivers/media/i2c/ov9734.c                                | 4 +--- >  drivers/media/i2c/rdacm20.c                               | 4 +--- >  drivers/media/i2c/rdacm21.c                               | 4 +--- >  drivers/media/i2c/rj54n1cb0c.c                            | 4 +--- >  drivers/media/i2c/s5c73m3/s5c73m3-core.c                  | 4 +--- >  drivers/media/i2c/s5k4ecgx.c                              | 4 +--- >  drivers/media/i2c/s5k5baf.c                               | 4 +--- >  drivers/media/i2c/s5k6a3.c                                | 3 +-- >  drivers/media/i2c/s5k6aa.c                                | 4 +--- >  drivers/media/i2c/saa6588.c                               | 4 +--- >  drivers/media/i2c/saa6752hs.c                             | 3 +-- >  drivers/media/i2c/saa7110.c                               | 3 +-- >  drivers/media/i2c/saa7115.c                               | 3 +-- >  drivers/media/i2c/saa7127.c                               | 3 +-- >  drivers/media/i2c/saa717x.c                               | 3 +-- >  drivers/media/i2c/saa7185.c                               | 3 +-- >  drivers/media/i2c/sony-btf-mpx.c                          | 4 +--- >  drivers/media/i2c/sr030pc30.c                             | 3 +-- >  drivers/media/i2c/st-mipid02.c                            | 4 +--- >  drivers/media/i2c/tc358743.c                              | 4 +--- >  drivers/media/i2c/tda1997x.c                              | 4 +--- >  drivers/media/i2c/tda7432.c                               | 3 +-- >  drivers/media/i2c/tda9840.c                               | 3 +-- >  drivers/media/i2c/tea6415c.c                              | 3 +-- >  drivers/media/i2c/tea6420.c                               | 3 +-- >  drivers/media/i2c/ths7303.c                               | 4 +--- >  drivers/media/i2c/ths8200.c                               | 4 +--- >  drivers/media/i2c/tlv320aic23b.c                          | 3 +-- >  drivers/media/i2c/tvaudio.c                               | 3 +-- >  drivers/media/i2c/tvp514x.c                               | 3 +-- >  drivers/media/i2c/tvp5150.c                               | 4 +--- >  drivers/media/i2c/tvp7002.c                               | 3 +-- >  drivers/media/i2c/tw2804.c                                | 3 +-- >  drivers/media/i2c/tw9903.c                                | 3 +-- >  drivers/media/i2c/tw9906.c                                | 3 +-- >  drivers/media/i2c/tw9910.c                                | 4 +--- >  drivers/media/i2c/uda1342.c                               | 3 +-- >  drivers/media/i2c/upd64031a.c                             | 3 +-- >  drivers/media/i2c/upd64083.c                              | 3 +-- >  drivers/media/i2c/video-i2c.c                             | 4 +--- >  drivers/media/i2c/vp27smpx.c                              | 3 +-- >  drivers/media/i2c/vpx3220.c                               | 4 +--- >  drivers/media/i2c/vs6624.c                                | 3 +-- >  drivers/media/i2c/wm8739.c                                | 3 +-- >  drivers/media/i2c/wm8775.c                                | 3 +-- >  drivers/media/radio/radio-tea5764.c                       | 3 +-- >  drivers/media/radio/saa7706h.c                            | 3 +-- >  drivers/media/radio/si470x/radio-si470x-i2c.c             | 3 +-- >  drivers/media/radio/si4713/si4713.c                       | 4 +--- >  drivers/media/radio/tef6862.c                             | 3 +-- >  drivers/media/test-drivers/vidtv/vidtv_demod.c            | 4 +--- >  drivers/media/test-drivers/vidtv/vidtv_tuner.c            | 4 +--- >  drivers/media/tuners/e4000.c                              | 4 +--- >  drivers/media/tuners/fc2580.c                             | 3 +-- >  drivers/media/tuners/m88rs6000t.c                         | 4 +--- >  drivers/media/tuners/mt2060.c                             | 4 +--- >  drivers/media/tuners/mxl301rf.c                           | 3 +-- >  drivers/media/tuners/qm1d1b0004.c                         | 3 +-- >  drivers/media/tuners/qm1d1c0042.c                         | 3 +-- >  drivers/media/tuners/si2157.c                             | 4 +--- >  drivers/media/tuners/tda18212.c                           | 4 +--- >  drivers/media/tuners/tda18250.c                           | 4 +--- >  drivers/media/tuners/tua9001.c                            | 3 +-- >  drivers/media/usb/go7007/s2250-board.c                    | 3 +-- >  drivers/media/v4l2-core/tuner-core.c                      | 3 +-- >  drivers/mfd/88pm800.c                                     | 4 +--- >  drivers/mfd/88pm805.c                                     | 4 +--- >  drivers/mfd/88pm860x-core.c                               | 3 +-- >  drivers/mfd/acer-ec-a500.c                                | 4 +--- >  drivers/mfd/arizona-i2c.c                                 | 4 +--- >  drivers/mfd/axp20x-i2c.c                                  | 4 +--- >  drivers/mfd/da903x.c                                      | 3 +-- >  drivers/mfd/da9052-i2c.c                                  | 3 +-- >  drivers/mfd/da9055-i2c.c                                  | 4 +--- >  drivers/mfd/da9062-core.c                                 | 4 +--- >  drivers/mfd/da9150-core.c                                 | 4 +--- >  drivers/mfd/dm355evm_msp.c                                | 3 +-- >  drivers/mfd/ene-kb3930.c                                  | 4 +--- >  drivers/mfd/gateworks-gsc.c                               | 4 +--- >  drivers/mfd/intel_soc_pmic_core.c                         | 4 +--- >  drivers/mfd/iqs62x.c                                      | 4 +--- >  drivers/mfd/lm3533-core.c                                 | 4 +--- >  drivers/mfd/lp8788.c                                      | 3 +-- >  drivers/mfd/madera-i2c.c                                  | 4 +--- >  drivers/mfd/max14577.c                                    | 4 +--- >  drivers/mfd/max77693.c                                    | 4 +--- >  drivers/mfd/max8907.c                                     | 4 +--- >  drivers/mfd/max8925-i2c.c                                 | 3 +-- >  drivers/mfd/mc13xxx-i2c.c                                 | 3 +-- >  drivers/mfd/menelaus.c                                    | 3 +-- >  drivers/mfd/ntxec.c                                       | 4 +--- >  drivers/mfd/palmas.c                                      | 4 +--- >  drivers/mfd/pcf50633-core.c                               | 4 +--- >  drivers/mfd/retu-mfd.c                                    | 4 +--- >  drivers/mfd/rk808.c                                       | 4 +--- >  drivers/mfd/rn5t618.c                                     | 4 +--- >  drivers/mfd/rsmu_i2c.c                                    | 4 +--- >  drivers/mfd/rt4831.c                                      | 4 +--- >  drivers/mfd/si476x-i2c.c                                  | 4 +--- >  drivers/mfd/stmfx.c                                       | 4 +--- >  drivers/mfd/stmpe-i2c.c                                   | 4 +--- >  drivers/mfd/tc3589x.c                                     | 4 +--- >  drivers/mfd/tps6105x.c                                    | 4 +--- >  drivers/mfd/tps65010.c                                    | 3 +-- >  drivers/mfd/tps65086.c                                    | 4 +--- >  drivers/mfd/tps65217.c                                    | 4 +--- >  drivers/mfd/tps6586x.c                                    | 3 +-- >  drivers/mfd/tps65912-i2c.c                                | 4 +--- >  drivers/mfd/twl-core.c                                    | 3 +-- >  drivers/mfd/twl6040.c                                     | 4 +--- >  drivers/mfd/wm8994-core.c                                 | 4 +--- >  drivers/misc/ad525x_dpot-i2c.c                            | 3 +-- >  drivers/misc/apds9802als.c                                | 3 +-- >  drivers/misc/apds990x.c                                   | 3 +-- >  drivers/misc/bh1770glc.c                                  | 4 +--- >  drivers/misc/ds1682.c                                     | 3 +-- >  drivers/misc/eeprom/at24.c                                | 4 +--- >  drivers/misc/eeprom/ee1004.c                              | 4 +--- >  drivers/misc/eeprom/eeprom.c                              | 4 +--- >  drivers/misc/eeprom/idt_89hpesx.c                         | 4 +--- >  drivers/misc/eeprom/max6875.c                             | 4 +--- >  drivers/misc/hmc6352.c                                    | 3 +-- >  drivers/misc/ics932s401.c                                 | 5 ++--- >  drivers/misc/isl29003.c                                   | 3 +-- >  drivers/misc/isl29020.c                                   | 3 +-- >  drivers/misc/lis3lv02d/lis3lv02d_i2c.c                    | 3 +-- >  drivers/misc/tsl2550.c                                    | 4 +--- >  drivers/mtd/maps/pismo.c                                  | 4 +--- >  drivers/net/dsa/lan9303_i2c.c                             | 6 ++---- >  drivers/net/dsa/microchip/ksz9477_i2c.c                   | 4 +--- >  drivers/net/dsa/xrs700x/xrs700x_i2c.c                     | 6 ++---- >  drivers/net/ethernet/mellanox/mlxsw/i2c.c                 | 4 +--- >  drivers/net/mctp/mctp-i2c.c                               | 3 +-- >  drivers/nfc/fdp/i2c.c                                     | 4 +--- >  drivers/nfc/microread/i2c.c                               | 4 +--- >  drivers/nfc/nfcmrvl/i2c.c                                 | 4 +--- >  drivers/nfc/nxp-nci/i2c.c                                 | 4 +--- >  drivers/nfc/pn533/i2c.c                                   | 4 +--- >  drivers/nfc/pn544/i2c.c                                   | 4 +--- >  drivers/nfc/s3fwrn5/i2c.c                                 | 4 +--- >  drivers/nfc/st-nci/i2c.c                                  | 4 +--- >  drivers/nfc/st21nfca/i2c.c                                | 4 +--- >  drivers/of/unittest.c                                     | 6 ++---- >  drivers/platform/chrome/cros_ec_i2c.c                     | 4 +--- >  drivers/platform/surface/surface3_power.c                 | 4 +--- >  drivers/platform/x86/asus-tf103c-dock.c                   | 4 +--- >  drivers/platform/x86/intel/int3472/tps68470.c             | 4 +--- >  drivers/power/supply/bq2415x_charger.c                    | 4 +--- >  drivers/power/supply/bq24190_charger.c                    | 4 +--- >  drivers/power/supply/bq24257_charger.c                    | 4 +--- >  drivers/power/supply/bq25890_charger.c                    | 4 +--- >  drivers/power/supply/bq27xxx_battery_i2c.c                | 4 +--- >  drivers/power/supply/cw2015_battery.c                     | 3 +-- >  drivers/power/supply/ds2782_battery.c                     | 4 +--- >  drivers/power/supply/lp8727_charger.c                     | 3 +-- >  drivers/power/supply/rt5033_battery.c                     | 4 +--- >  drivers/power/supply/rt9455_charger.c                     | 4 +--- >  drivers/power/supply/smb347-charger.c                     | 4 +--- >  drivers/power/supply/z2_battery.c                         | 4 +--- >  drivers/pwm/pwm-pca9685.c                                 | 4 +--- >  drivers/regulator/da9121-regulator.c                      | 3 +-- >  drivers/regulator/lp8755.c                                | 4 +--- >  drivers/regulator/rpi-panel-attiny-regulator.c            | 4 +--- >  drivers/rtc/rtc-bq32k.c                                   | 4 +--- >  drivers/rtc/rtc-ds1374.c                                  | 4 +--- >  drivers/rtc/rtc-isl12026.c                                | 3 +-- >  drivers/rtc/rtc-m41t80.c                                  | 4 +--- >  drivers/rtc/rtc-rs5c372.c                                 | 3 +-- >  drivers/rtc/rtc-x1205.c                                   | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-gc0310.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-gc2235.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-lm3554.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c       | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-ov2680.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-ov2722.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c | 4 +--- >  drivers/staging/media/max96712/max96712.c                 | 4 +--- >  drivers/staging/most/i2c/i2c.c                            | 4 +--- >  drivers/staging/olpc_dcon/olpc_dcon.c                     | 4 +--- >  drivers/tty/serial/sc16is7xx.c                            | 4 +--- >  drivers/usb/misc/usb3503.c                                | 4 +--- >  drivers/usb/phy/phy-isp1301-omap.c                        | 4 +--- >  drivers/usb/phy/phy-isp1301.c                             | 4 +--- >  drivers/usb/typec/hd3ss3220.c                             | 4 +--- >  drivers/usb/typec/mux/fsa4480.c                           | 4 +--- >  drivers/usb/typec/mux/pi3usb30532.c                       | 3 +-- >  drivers/usb/typec/rt1719.c                                | 4 +--- >  drivers/usb/typec/stusb160x.c                             | 4 +--- >  drivers/usb/typec/tcpm/fusb302.c                          | 4 +--- >  drivers/usb/typec/tcpm/tcpci.c                            | 4 +--- >  drivers/usb/typec/tcpm/tcpci_maxim.c                      | 4 +--- >  drivers/usb/typec/tcpm/tcpci_rt1711h.c                    | 3 +-- >  drivers/usb/typec/tipd/core.c                             | 4 +--- >  drivers/usb/typec/ucsi/ucsi_ccg.c                         | 4 +--- >  drivers/usb/typec/wusb3801.c                              | 4 +--- >  drivers/video/backlight/adp8860_bl.c                      | 4 +--- >  drivers/video/backlight/adp8870_bl.c                      | 4 +--- >  drivers/video/backlight/arcxcnn_bl.c                      | 4 +--- >  drivers/video/backlight/bd6107.c                          | 4 +--- >  drivers/video/backlight/lm3630a_bl.c                      | 3 +-- >  drivers/video/backlight/lm3639_bl.c                       | 3 +-- >  drivers/video/backlight/lp855x_bl.c                       | 4 +--- >  drivers/video/backlight/lv5207lp.c                        | 4 +--- >  drivers/video/backlight/tosa_bl.c                         | 3 +-- >  drivers/video/fbdev/matrox/matroxfb_maven.c               | 3 +-- >  drivers/video/fbdev/ssd1307fb.c                           | 4 +--- >  drivers/w1/masters/ds2482.c                               | 3 +-- >  drivers/watchdog/ziirave_wdt.c                            | 4 +--- >  include/linux/i2c.h                                       | 2 +- >  lib/Kconfig.kasan                                         | 1 + >  sound/aoa/codecs/onyx.c                                   | 3 +-- >  sound/aoa/codecs/tas.c                                    | 3 +-- >  sound/pci/hda/cs35l41_hda_i2c.c                           | 4 +--- >  sound/ppc/keywest.c                                       | 6 ++---- >  sound/soc/codecs/adau1761-i2c.c                           | 3 +-- >  sound/soc/codecs/adau1781-i2c.c                           | 3 +-- >  sound/soc/codecs/ak4375.c                                 | 4 +--- >  sound/soc/codecs/ak4458.c                                 | 4 +--- >  sound/soc/codecs/ak4641.c                                 | 4 +--- >  sound/soc/codecs/ak5558.c                                 | 4 +--- >  sound/soc/codecs/cs35l32.c                                | 4 +--- >  sound/soc/codecs/cs35l33.c                                | 4 +--- >  sound/soc/codecs/cs35l34.c                                | 4 +--- >  sound/soc/codecs/cs35l35.c                                | 4 +--- >  sound/soc/codecs/cs35l36.c                                | 4 +--- >  sound/soc/codecs/cs35l41-i2c.c                            | 4 +--- >  sound/soc/codecs/cs35l45-i2c.c                            | 4 +--- >  sound/soc/codecs/cs4234.c                                 | 4 +--- >  sound/soc/codecs/cs4265.c                                 | 4 +--- >  sound/soc/codecs/cs4270.c                                 | 4 +--- >  sound/soc/codecs/cs42l42.c                                | 4 +--- >  sound/soc/codecs/cs42l51-i2c.c                            | 4 +--- >  sound/soc/codecs/cs42l56.c                                | 3 +-- >  sound/soc/codecs/cs42xx8-i2c.c                            | 4 +--- >  sound/soc/codecs/cs43130.c                                | 4 +--- >  sound/soc/codecs/cs4349.c                                 | 4 +--- >  sound/soc/codecs/cs53l30.c                                | 4 +--- >  sound/soc/codecs/cx2072x.c                                | 3 +-- >  sound/soc/codecs/max98090.c                               | 4 +--- >  sound/soc/codecs/max9860.c                                | 3 +-- >  sound/soc/codecs/max98927.c                               | 4 +--- >  sound/soc/codecs/mt6660.c                                 | 3 +-- >  sound/soc/codecs/nau8821.c                                | 4 +--- >  sound/soc/codecs/nau8825.c                                | 6 ++---- >  sound/soc/codecs/pcm1789-i2c.c                            | 4 +--- >  sound/soc/codecs/pcm3168a-i2c.c                           | 4 +--- >  sound/soc/codecs/pcm512x-i2c.c                            | 3 +-- >  sound/soc/codecs/rt274.c                                  | 4 +--- >  sound/soc/codecs/rt286.c                                  | 4 +--- >  sound/soc/codecs/rt298.c                                  | 4 +--- >  sound/soc/codecs/rt5616.c                                 | 6 ++---- >  sound/soc/codecs/rt5631.c                                 | 6 ++---- >  sound/soc/codecs/rt5645.c                                 | 4 +--- >  sound/soc/codecs/rt5663.c                                 | 4 +--- >  sound/soc/codecs/rt5670.c                                 | 4 +--- >  sound/soc/codecs/rt5677.c                                 | 4 +--- >  sound/soc/codecs/rt5682-i2c.c                             | 4 +--- >  sound/soc/codecs/rt5682s.c                                | 4 +--- >  sound/soc/codecs/rt9120.c                                 | 3 +-- >  sound/soc/codecs/sgtl5000.c                               | 4 +--- >  sound/soc/codecs/sta350.c                                 | 6 ++---- >  sound/soc/codecs/tas2552.c                                | 3 +-- >  sound/soc/codecs/tas5086.c                                | 6 ++---- >  sound/soc/codecs/tas571x.c                                | 4 +--- >  sound/soc/codecs/tas5805m.c                               | 3 +-- >  sound/soc/codecs/tas6424.c                                | 4 +--- >  sound/soc/codecs/tlv320adc3xxx.c                          | 3 +-- >  sound/soc/codecs/tlv320aic32x4-i2c.c                      | 4 +--- >  sound/soc/codecs/tlv320aic3x-i2c.c                        | 4 +--- >  sound/soc/codecs/tlv320dac33.c                            | 4 +--- >  sound/soc/codecs/wm1250-ev1.c                             | 4 +--- >  sound/soc/codecs/wm2200.c                                 | 4 +--- >  sound/soc/codecs/wm5100.c                                 | 4 +--- >  sound/soc/codecs/wm8804-i2c.c                             | 3 +-- >  sound/soc/codecs/wm8900.c                                 | 6 ++---- >  sound/soc/codecs/wm8903.c                                 | 4 +--- >  sound/soc/codecs/wm8960.c                                 | 6 ++---- >  sound/soc/codecs/wm8962.c                                 | 3 +-- >  sound/soc/codecs/wm8993.c                                 | 4 +--- >  sound/soc/codecs/wm8996.c                                 | 4 +--- >  sound/soc/codecs/wm9081.c                                 | 6 ++---- >  621 files changed, 648 insertions(+), 1735 deletions(-) > > diff --git a/Documentation/i2c/writing-clients.rst > b/Documentation/i2c/writing-clients.rst > index e3b126cf4a3b..c1b46844b0fb 100644 > --- a/Documentation/i2c/writing-clients.rst > +++ b/Documentation/i2c/writing-clients.rst > @@ -156,7 +156,7 @@ those devices, and a remove() method to unbind. >  :: >   >         static int foo_probe(struct i2c_client *client); > -       static int foo_remove(struct i2c_client *client); > +       static void foo_remove(struct i2c_client *client); >   >  Remember that the i2c_driver does not create those client handles.  > The >  handle may be used during foo_probe().  If foo_probe() reports > success > diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c > b/arch/arm/mach-davinci/board-dm644x-evm.c > index 9f405af36a6f..9055da325a3f 100644 > --- a/arch/arm/mach-davinci/board-dm644x-evm.c > +++ b/arch/arm/mach-davinci/board-dm644x-evm.c > @@ -554,10 +554,9 @@ static int dm6446evm_msp_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int dm6446evm_msp_remove(struct i2c_client *client) > +static void dm6446evm_msp_remove(struct i2c_client *client) >  { >         dm6446evm_msp = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id dm6446evm_msp_ids[] = { > diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c > b/arch/arm/mach-davinci/board-dm646x-evm.c > index 84ad065e98c2..287bb5833ec0 100644 > --- a/arch/arm/mach-davinci/board-dm646x-evm.c > +++ b/arch/arm/mach-davinci/board-dm646x-evm.c > @@ -403,10 +403,9 @@ static int cpld_video_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int cpld_video_remove(struct i2c_client *client) > +static void cpld_video_remove(struct i2c_client *client) >  { >         cpld_client = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id cpld_video_id[] = { > diff --git a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > index abb62fa630ef..77ed61306a73 100644 > --- a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > +++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > @@ -178,7 +178,7 @@ static int mcu_probe(struct i2c_client *client) >         return ret; >  } >   > -static int mcu_remove(struct i2c_client *client) > +static void mcu_remove(struct i2c_client *client) >  { >         struct mcu *mcu = i2c_get_clientdata(client); >   > @@ -193,7 +193,6 @@ static int mcu_remove(struct i2c_client *client) >   >         mcu_gpiochip_remove(mcu); >         kfree(mcu); > -       return 0; >  } >   >  static const struct i2c_device_id mcu_ids[] = { > diff --git a/drivers/auxdisplay/ht16k33.c > b/drivers/auxdisplay/ht16k33.c > index 4fab3b2c7023..02425991c159 100644 > --- a/drivers/auxdisplay/ht16k33.c > +++ b/drivers/auxdisplay/ht16k33.c > @@ -775,7 +775,7 @@ static int ht16k33_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ht16k33_remove(struct i2c_client *client) > +static void ht16k33_remove(struct i2c_client *client) >  { >         struct ht16k33_priv *priv = i2c_get_clientdata(client); >         struct ht16k33_fbdev *fbdev = &priv->fbdev; > @@ -796,8 +796,6 @@ static int ht16k33_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, > &dev_attr_map_seg14); >                 break; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ht16k33_i2c_match[] = { > diff --git a/drivers/auxdisplay/lcd2s.c b/drivers/auxdisplay/lcd2s.c > index e465108d9998..135831a16514 100644 > --- a/drivers/auxdisplay/lcd2s.c > +++ b/drivers/auxdisplay/lcd2s.c > @@ -340,13 +340,12 @@ static int lcd2s_i2c_probe(struct i2c_client > *i2c) >         return err; >  } >   > -static int lcd2s_i2c_remove(struct i2c_client *i2c) > +static void lcd2s_i2c_remove(struct i2c_client *i2c) >  { >         struct lcd2s_data *lcd2s = i2c_get_clientdata(i2c); >   >         charlcd_unregister(lcd2s->charlcd); >         charlcd_free(lcd2s->charlcd); > -       return 0; >  } >   >  static const struct i2c_device_id lcd2s_i2c_id[] = { > diff --git a/drivers/char/ipmi/ipmb_dev_int.c > b/drivers/char/ipmi/ipmb_dev_int.c > index db40037eb347..a0e9e80d92ee 100644 > --- a/drivers/char/ipmi/ipmb_dev_int.c > +++ b/drivers/char/ipmi/ipmb_dev_int.c > @@ -341,14 +341,12 @@ static int ipmb_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ipmb_remove(struct i2c_client *client) > +static void ipmb_remove(struct i2c_client *client) >  { >         struct ipmb_dev *ipmb_dev = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         misc_deregister(&ipmb_dev->miscdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ipmb_id[] = { > diff --git a/drivers/char/ipmi/ipmi_ipmb.c > b/drivers/char/ipmi/ipmi_ipmb.c > index ab19b4b3317e..25c010c9ec25 100644 > --- a/drivers/char/ipmi/ipmi_ipmb.c > +++ b/drivers/char/ipmi/ipmi_ipmb.c > @@ -424,7 +424,7 @@ static void ipmi_ipmb_request_events(void > *send_info) >         /* We don't fetch events here. */ >  } >   > -static int ipmi_ipmb_remove(struct i2c_client *client) > +static void ipmi_ipmb_remove(struct i2c_client *client) >  { >         struct ipmi_ipmb_dev *iidev = i2c_get_clientdata(client); >   > @@ -438,8 +438,6 @@ static int ipmi_ipmb_remove(struct i2c_client > *client) >         ipmi_ipmb_stop_thread(iidev); >   >         ipmi_unregister_smi(iidev->intf); > - > -       return 0; >  } >   >  static int ipmi_ipmb_probe(struct i2c_client *client) > diff --git a/drivers/char/ipmi/ipmi_ssif.c > b/drivers/char/ipmi/ipmi_ssif.c > index fc742ee9c046..13da021e7c6b 100644 > --- a/drivers/char/ipmi/ipmi_ssif.c > +++ b/drivers/char/ipmi/ipmi_ssif.c > @@ -1281,13 +1281,13 @@ static void shutdown_ssif(void *send_info) >         } >  } >   > -static int ssif_remove(struct i2c_client *client) > +static void ssif_remove(struct i2c_client *client) >  { >         struct ssif_info *ssif_info = i2c_get_clientdata(client); >         struct ssif_addr_info *addr_info; >   >         if (!ssif_info) > -               return 0; > +               return; >   >         /* >          * After this point, we won't deliver anything asychronously > @@ -1303,8 +1303,6 @@ static int ssif_remove(struct i2c_client > *client) >         } >   >         kfree(ssif_info); > - > -       return 0; >  } >   >  static int read_response(struct i2c_client *client, unsigned char > *resp) > diff --git a/drivers/char/tpm/st33zp24/i2c.c > b/drivers/char/tpm/st33zp24/i2c.c > index 3170d59d660c..a3aa411389e7 100644 > --- a/drivers/char/tpm/st33zp24/i2c.c > +++ b/drivers/char/tpm/st33zp24/i2c.c > @@ -264,13 +264,11 @@ static int st33zp24_i2c_probe(struct i2c_client > *client, >   * @param: client, the i2c_client description (TPM I2C description). >   * @return: 0 in case of success. >   */ > -static int st33zp24_i2c_remove(struct i2c_client *client) > +static void st33zp24_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         st33zp24_remove(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id st33zp24_i2c_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_atmel.c > b/drivers/char/tpm/tpm_i2c_atmel.c > index d5ac85558214..4be3677c1463 100644 > --- a/drivers/char/tpm/tpm_i2c_atmel.c > +++ b/drivers/char/tpm/tpm_i2c_atmel.c > @@ -179,12 +179,11 @@ static int i2c_atmel_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_atmel_remove(struct i2c_client *client) > +static void i2c_atmel_remove(struct i2c_client *client) >  { >         struct device *dev = &(client->dev); >         struct tpm_chip *chip = dev_get_drvdata(dev); >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_atmel_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_infineon.c > b/drivers/char/tpm/tpm_i2c_infineon.c > index a19d32cb4e94..fd3c3661e646 100644 > --- a/drivers/char/tpm/tpm_i2c_infineon.c > +++ b/drivers/char/tpm/tpm_i2c_infineon.c > @@ -706,15 +706,13 @@ static int tpm_tis_i2c_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int tpm_tis_i2c_remove(struct i2c_client *client) > +static void tpm_tis_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = tpm_dev.chip; >   >         tpm_chip_unregister(chip); >         release_locality(chip, tpm_dev.locality, 1); >         tpm_dev.client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver tpm_tis_i2c_driver = { > diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c > b/drivers/char/tpm/tpm_i2c_nuvoton.c > index b77c18e38662..95c37350cc8e 100644 > --- a/drivers/char/tpm/tpm_i2c_nuvoton.c > +++ b/drivers/char/tpm/tpm_i2c_nuvoton.c > @@ -622,12 +622,11 @@ static int i2c_nuvoton_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_nuvoton_remove(struct i2c_client *client) > +static void i2c_nuvoton_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_nuvoton_id[] = { > diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c > b/drivers/char/tpm/tpm_tis_i2c_cr50.c > index 974479a1ec5a..77cea5b31c6e 100644 > --- a/drivers/char/tpm/tpm_tis_i2c_cr50.c > +++ b/drivers/char/tpm/tpm_tis_i2c_cr50.c > @@ -763,20 +763,18 @@ static int tpm_cr50_i2c_probe(struct i2c_client > *client) >   * - 0:                Success. >   * - -errno:   A POSIX error code. >   */ > -static int tpm_cr50_i2c_remove(struct i2c_client *client) > +static void tpm_cr50_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >         struct device *dev = &client->dev; >   >         if (!chip) { >                 dev_crit(dev, "Could not get client data at remove, > memory corruption ahead\n"); > -               return 0; > +               return; >         } >   >         tpm_chip_unregister(chip); >         tpm_cr50_release_locality(chip, true); > - > -       return 0; >  } >   >  static SIMPLE_DEV_PM_OPS(cr50_i2c_pm, tpm_pm_suspend, > tpm_pm_resume); > diff --git a/drivers/clk/clk-cdce706.c b/drivers/clk/clk-cdce706.c > index 5467d941ddfd..1449d0537674 100644 > --- a/drivers/clk/clk-cdce706.c > +++ b/drivers/clk/clk-cdce706.c > @@ -665,10 +665,9 @@ static int cdce706_probe(struct i2c_client > *client) >                                       cdce); >  } >   > -static int cdce706_remove(struct i2c_client *client) > +static void cdce706_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >   > diff --git a/drivers/clk/clk-cs2000-cp.c b/drivers/clk/clk-cs2000- > cp.c > index aa5c72bab83e..320d39922206 100644 > --- a/drivers/clk/clk-cs2000-cp.c > +++ b/drivers/clk/clk-cs2000-cp.c > @@ -557,7 +557,7 @@ static int cs2000_version_print(struct > cs2000_priv *priv) >         return 0; >  } >   > -static int cs2000_remove(struct i2c_client *client) > +static void cs2000_remove(struct i2c_client *client) >  { >         struct cs2000_priv *priv = i2c_get_clientdata(client); >         struct device *dev = priv_to_dev(priv); > @@ -566,8 +566,6 @@ static int cs2000_remove(struct i2c_client > *client) >         of_clk_del_provider(np); >   >         clk_hw_unregister(&priv->hw); > - > -       return 0; >  } >   >  static int cs2000_probe(struct i2c_client *client) > diff --git a/drivers/clk/clk-si514.c b/drivers/clk/clk-si514.c > index 4481c4303534..c028fa103bed 100644 > --- a/drivers/clk/clk-si514.c > +++ b/drivers/clk/clk-si514.c > @@ -370,10 +370,9 @@ static int si514_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si514_remove(struct i2c_client *client) > +static void si514_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct i2c_device_id si514_id[] = { > diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c > index 4bca73212662..0e528d7ba656 100644 > --- a/drivers/clk/clk-si5341.c > +++ b/drivers/clk/clk-si5341.c > @@ -1796,7 +1796,7 @@ static int si5341_probe(struct i2c_client > *client) >         return err; >  } >   > -static int si5341_remove(struct i2c_client *client) > +static void si5341_remove(struct i2c_client *client) >  { >         struct clk_si5341 *data = i2c_get_clientdata(client); >         int i; > @@ -1807,8 +1807,6 @@ static int si5341_remove(struct i2c_client > *client) >                 if (data->clk[i].vddo_reg) >                         regulator_disable(data->clk[i].vddo_reg); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id si5341_id[] = { > diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c > index b9f088c4ba2f..9e939c98a455 100644 > --- a/drivers/clk/clk-si5351.c > +++ b/drivers/clk/clk-si5351.c > @@ -1651,11 +1651,9 @@ static int si5351_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si5351_i2c_remove(struct i2c_client *client) > +static void si5351_i2c_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > - > -       return 0; >  } >   >  static struct i2c_driver si5351_driver = { > diff --git a/drivers/clk/clk-si570.c b/drivers/clk/clk-si570.c > index 1ff8f32f734d..0a6d70c49726 100644 > --- a/drivers/clk/clk-si570.c > +++ b/drivers/clk/clk-si570.c > @@ -498,10 +498,9 @@ static int si570_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si570_remove(struct i2c_client *client) > +static void si570_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct of_device_id clk_si570_of_match[] = { > diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk- > versaclock5.c > index e7be3e54b9be..657493ecce4c 100644 > --- a/drivers/clk/clk-versaclock5.c > +++ b/drivers/clk/clk-versaclock5.c > @@ -1138,7 +1138,7 @@ static int vc5_probe(struct i2c_client *client) >         return ret; >  } >   > -static int vc5_remove(struct i2c_client *client) > +static void vc5_remove(struct i2c_client *client) >  { >         struct vc5_driver_data *vc5 = i2c_get_clientdata(client); >   > @@ -1146,8 +1146,6 @@ static int vc5_remove(struct i2c_client > *client) >   >         if (vc5->chip_info->flags & VC5_HAS_INTERNAL_XTAL) >                 clk_unregister_fixed_rate(vc5->pin_xin); > - > -       return 0; >  } >   >  static int __maybe_unused vc5_suspend(struct device *dev) > diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c > index a4b13d326cfc..82bf15d49561 100644 > --- a/drivers/crypto/atmel-ecc.c > +++ b/drivers/crypto/atmel-ecc.c > @@ -343,7 +343,7 @@ static int atmel_ecc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int atmel_ecc_remove(struct i2c_client *client) > +static void atmel_ecc_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   > @@ -358,7 +358,7 @@ static int atmel_ecc_remove(struct i2c_client > *client) >                  * accessing the freed memory. >                  */ >                 dev_emerg(&client->dev, "Device is busy, expect > memory corruption.\n"); > -               return 0; > +               return; >         } >   >         crypto_unregister_kpp(&atmel_ecdh_nist_p256); > @@ -366,8 +366,6 @@ static int atmel_ecc_remove(struct i2c_client > *client) >         spin_lock(&driver_data.i2c_list_lock); >         list_del(&i2c_priv->i2c_client_list_node); >         spin_unlock(&driver_data.i2c_list_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel- > sha204a.c > index e4087bdd2475..a84b657598c6 100644 > --- a/drivers/crypto/atmel-sha204a.c > +++ b/drivers/crypto/atmel-sha204a.c > @@ -116,18 +116,16 @@ static int atmel_sha204a_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int atmel_sha204a_remove(struct i2c_client *client) > +static void atmel_sha204a_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   >         if (atomic_read(&i2c_priv->tfm_count)) { >                 dev_emerg(&client->dev, "Device is busy, will remove > it anyhow\n"); > -               return 0; > +               return; >         } >   >         kfree((void *)i2c_priv->hwrng.priv); > - > -       return 0; >  } >   >  static const struct of_device_id atmel_sha204a_dt_ids[] = { > diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon- > rt8973a.c > index 40c07f4d656e..d1c674f3f2b9 100644 > --- a/drivers/extcon/extcon-rt8973a.c > +++ b/drivers/extcon/extcon-rt8973a.c > @@ -647,13 +647,11 @@ static int rt8973a_muic_i2c_probe(struct > i2c_client *i2c, >         return 0; >  } >   > -static int rt8973a_muic_i2c_remove(struct i2c_client *i2c) > +static void rt8973a_muic_i2c_remove(struct i2c_client *i2c) >  { >         struct rt8973a_muic_info *info = i2c_get_clientdata(i2c); >   >         regmap_del_irq_chip(info->irq, info->irq_data); > - > -       return 0; >  } >   >  static const struct of_device_id rt8973a_dt_match[] = { > diff --git a/drivers/gpio/gpio-adp5588.c b/drivers/gpio/gpio- > adp5588.c > index e388e75103f4..acb673dc9005 100644 > --- a/drivers/gpio/gpio-adp5588.c > +++ b/drivers/gpio/gpio-adp5588.c > @@ -411,14 +411,12 @@ static int adp5588_gpio_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adp5588_gpio_remove(struct i2c_client *client) > +static void adp5588_gpio_remove(struct i2c_client *client) >  { >         struct adp5588_gpio *dev = i2c_get_clientdata(client); >   >         if (dev->client->irq) >                 free_irq(dev->client->irq, dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp5588_gpio_id[] = { > diff --git a/drivers/gpio/gpio-max7300.c b/drivers/gpio/gpio- > max7300.c > index b2b547dd6e84..43da381a4d7e 100644 > --- a/drivers/gpio/gpio-max7300.c > +++ b/drivers/gpio/gpio-max7300.c > @@ -48,11 +48,9 @@ static int max7300_probe(struct i2c_client > *client, >         return __max730x_probe(ts); >  } >   > -static int max7300_remove(struct i2c_client *client) > +static void max7300_remove(struct i2c_client *client) >  { >         __max730x_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id max7300_id[] = { > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio- > pca953x.c > index 3eedeac9ec8d..fc5f037aaf64 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -1095,7 +1095,7 @@ static int pca953x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca953x_remove(struct i2c_client *client) > +static void pca953x_remove(struct i2c_client *client) >  { >         struct pca953x_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct pca953x_chip *chip = i2c_get_clientdata(client); > @@ -1106,8 +1106,6 @@ static int pca953x_remove(struct i2c_client > *client) >         } >   >         regulator_disable(chip->regulator); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio- > pcf857x.c > index 59cc27e4de51..e98ea47d7237 100644 > --- a/drivers/gpio/gpio-pcf857x.c > +++ b/drivers/gpio/gpio-pcf857x.c > @@ -399,7 +399,7 @@ static int pcf857x_probe(struct i2c_client > *client, >         return status; >  } >   > -static int pcf857x_remove(struct i2c_client *client) > +static void pcf857x_remove(struct i2c_client *client) >  { >         struct pcf857x_platform_data    *pdata = > dev_get_platdata(&client->dev); >         struct pcf857x                  *gpio = > i2c_get_clientdata(client); > @@ -407,8 +407,6 @@ static int pcf857x_remove(struct i2c_client > *client) >         if (pdata && pdata->teardown) >                 pdata->teardown(client, gpio->chip.base, gpio- > >chip.ngpio, >                                 pdata->context); > - > -       return 0; >  } >   >  static void pcf857x_shutdown(struct i2c_client *client) > diff --git a/drivers/gpio/gpio-tpic2810.c b/drivers/gpio/gpio- > tpic2810.c > index 99d5a84a9129..8d8290f36c8a 100644 > --- a/drivers/gpio/gpio-tpic2810.c > +++ b/drivers/gpio/gpio-tpic2810.c > @@ -134,13 +134,11 @@ static int tpic2810_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tpic2810_remove(struct i2c_client *client) > +static void tpic2810_remove(struct i2c_client *client) >  { >         struct tpic2810 *gpio = i2c_get_clientdata(client); >   >         gpiochip_remove(&gpio->chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id tpic2810_id_table[] = { > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 5bb9300040dd..06107b01e169 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -1335,7 +1335,7 @@ static int adv7511_probe(struct i2c_client > *i2c, const struct i2c_device_id *id) >         return ret; >  } >   > -static int adv7511_remove(struct i2c_client *i2c) > +static void adv7511_remove(struct i2c_client *i2c) >  { >         struct adv7511 *adv7511 = i2c_get_clientdata(i2c); >   > @@ -1352,8 +1352,6 @@ static int adv7511_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(adv7511->i2c_packet); >         i2c_unregister_device(adv7511->i2c_edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7511_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > index ae3d6e9a606c..660a54857929 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > @@ -787,7 +787,7 @@ static int anx6345_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx6345_i2c_remove(struct i2c_client *client) > +static void anx6345_i2c_remove(struct i2c_client *client) >  { >         struct anx6345 *anx6345 = i2c_get_clientdata(client); >   > @@ -798,8 +798,6 @@ static int anx6345_i2c_remove(struct i2c_client > *client) >         kfree(anx6345->edid); >   >         mutex_destroy(&anx6345->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx6345_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > index d2fc8676fab6..5997049fde5b 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > @@ -1357,7 +1357,7 @@ static int anx78xx_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx78xx_i2c_remove(struct i2c_client *client) > +static void anx78xx_i2c_remove(struct i2c_client *client) >  { >         struct anx78xx *anx78xx = i2c_get_clientdata(client); >   > @@ -1366,8 +1366,6 @@ static int anx78xx_i2c_remove(struct i2c_client > *client) >         unregister_i2c_dummy_clients(anx78xx); >   >         kfree(anx78xx->edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx78xx_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c > b/drivers/gpu/drm/bridge/analogix/anx7625.c > index 53a5da6c49dd..73f1d3338c81 100644 > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c > @@ -2733,7 +2733,7 @@ static int anx7625_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int anx7625_i2c_remove(struct i2c_client *client) > +static void anx7625_i2c_remove(struct i2c_client *client) >  { >         struct anx7625_data *platform = i2c_get_clientdata(client); >   > @@ -2755,8 +2755,6 @@ static int anx7625_i2c_remove(struct i2c_client > *client) >   >         if (platform->pdata.audio_en) >                 anx7625_unregister_audio(platform); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx7625_id[] = { > diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c > b/drivers/gpu/drm/bridge/chrontel-ch7033.c > index 486f405c2e16..efd587d2075f 100644 > --- a/drivers/gpu/drm/bridge/chrontel-ch7033.c > +++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c > @@ -582,14 +582,12 @@ static int ch7033_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ch7033_remove(struct i2c_client *client) > +static void ch7033_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct ch7033_priv *priv = dev_get_drvdata(dev); >   >         drm_bridge_remove(&priv->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ch7033_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > index 0f6d907432e3..fa91bdeddef0 100644 > --- a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > +++ b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > @@ -159,13 +159,11 @@ static int cros_ec_anx7688_bridge_probe(struct > i2c_client *client) >         return 0; >  } >   > -static int cros_ec_anx7688_bridge_remove(struct i2c_client *client) > +static void cros_ec_anx7688_bridge_remove(struct i2c_client *client) >  { >         struct cros_ec_anx7688 *anx7688 = i2c_get_clientdata(client); >   >         drm_bridge_remove(&anx7688->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id > cros_ec_anx7688_bridge_match_table[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it6505.c > b/drivers/gpu/drm/bridge/ite-it6505.c > index 4b673c4792d7..547e0c9d3bdc 100644 > --- a/drivers/gpu/drm/bridge/ite-it6505.c > +++ b/drivers/gpu/drm/bridge/ite-it6505.c > @@ -3316,7 +3316,7 @@ static int it6505_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it6505_i2c_remove(struct i2c_client *client) > +static void it6505_i2c_remove(struct i2c_client *client) >  { >         struct it6505 *it6505 = i2c_get_clientdata(client); >   > @@ -3324,8 +3324,6 @@ static int it6505_i2c_remove(struct i2c_client > *client) >         drm_dp_aux_unregister(&it6505->aux); >         it6505_debugfs_remove(it6505); >         it6505_poweroff(it6505); > - > -       return 0; >  } >   >  static const struct i2c_device_id it6505_id[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it66121.c > b/drivers/gpu/drm/bridge/ite-it66121.c > index 448c58e60c11..8d05ac2192f2 100644 > --- a/drivers/gpu/drm/bridge/ite-it66121.c > +++ b/drivers/gpu/drm/bridge/ite-it66121.c > @@ -1622,15 +1622,13 @@ static int it66121_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it66121_remove(struct i2c_client *client) > +static void it66121_remove(struct i2c_client *client) >  { >         struct it66121_ctx *ctx = i2c_get_clientdata(client); >   >         ite66121_power_off(ctx); >         drm_bridge_remove(&ctx->bridge); >         mutex_destroy(&ctx->lock); > - > -       return 0; >  } >   >  static const struct of_device_id it66121_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c > b/drivers/gpu/drm/bridge/lontium-lt8912b.c > index c642d1e02b2f..2f5c9ea46e93 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt8912b.c > +++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c > @@ -717,7 +717,7 @@ static int lt8912_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt8912_remove(struct i2c_client *client) > +static void lt8912_remove(struct i2c_client *client) >  { >         struct lt8912 *lt = i2c_get_clientdata(client); >   > @@ -725,7 +725,6 @@ static int lt8912_remove(struct i2c_client > *client) >         drm_bridge_remove(<->bridge); >         lt8912_free_i2c(lt); >         lt8912_put_dt(lt); > -       return 0; >  } >   >  static const struct of_device_id lt8912_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c > b/drivers/gpu/drm/bridge/lontium-lt9211.c > index e92821fbc639..0646ec28ad17 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9211.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c > @@ -765,13 +765,11 @@ static int lt9211_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9211_remove(struct i2c_client *client) > +static void lt9211_remove(struct i2c_client *client) >  { >         struct lt9211 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9211_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c > b/drivers/gpu/drm/bridge/lontium-lt9611.c > index 7ef8fe5abc12..492e948d624f 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c > @@ -1220,7 +1220,7 @@ static int lt9611_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611_remove(struct i2c_client *client) > +static void lt9611_remove(struct i2c_client *client) >  { >         struct lt9611 *lt9611 = i2c_get_clientdata(client); >   > @@ -1232,8 +1232,6 @@ static int lt9611_remove(struct i2c_client > *client) >   >         of_node_put(lt9611->dsi1_node); >         of_node_put(lt9611->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > index 3d62e6bf6892..b5a58106c328 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > @@ -977,7 +977,7 @@ static int lt9611uxc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611uxc_remove(struct i2c_client *client) > +static void lt9611uxc_remove(struct i2c_client *client) >  { >         struct lt9611uxc *lt9611uxc = i2c_get_clientdata(client); >   > @@ -992,8 +992,6 @@ static int lt9611uxc_remove(struct i2c_client > *client) >   >         of_node_put(lt9611uxc->dsi1_node); >         of_node_put(lt9611uxc->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611uxc_id[] = { > diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > index cce98bf2a4e7..9f175df11581 100644 > --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > @@ -355,11 +355,9 @@ static int stdp4028_ge_b850v3_fw_probe(struct > i2c_client *stdp4028_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) > +static void stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp4028_ge_b850v3_fw_i2c_table[] > = { > @@ -405,11 +403,9 @@ static int stdp2690_ge_b850v3_fw_probe(struct > i2c_client *stdp2690_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) > +static void stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp2690_ge_b850v3_fw_i2c_table[] > = { > diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c > b/drivers/gpu/drm/bridge/nxp-ptn3460.c > index 1ab91f4e057b..0851101a8c72 100644 > --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c > +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c > @@ -315,13 +315,11 @@ static int ptn3460_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ptn3460_remove(struct i2c_client *client) > +static void ptn3460_remove(struct i2c_client *client) >  { >         struct ptn3460_bridge *ptn_bridge = > i2c_get_clientdata(client); >   >         drm_bridge_remove(&ptn_bridge->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ptn3460_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c > b/drivers/gpu/drm/bridge/parade-ps8622.c > index 37b308850b4e..b54f418d2b7b 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8622.c > +++ b/drivers/gpu/drm/bridge/parade-ps8622.c > @@ -524,14 +524,12 @@ static int ps8622_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ps8622_remove(struct i2c_client *client) > +static void ps8622_remove(struct i2c_client *client) >  { >         struct ps8622_bridge *ps8622 = i2c_get_clientdata(client); >   >         backlight_device_unregister(ps8622->bl); >         drm_bridge_remove(&ps8622->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ps8622_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c > b/drivers/gpu/drm/bridge/parade-ps8640.c > index edb939b14c04..a09d1828d8e1 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -690,13 +690,11 @@ static int ps8640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ps8640_remove(struct i2c_client *client) > +static void ps8640_remove(struct i2c_client *client) >  { >         struct ps8640 *ps_bridge = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ps_bridge->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ps8640_match[] = { > diff --git a/drivers/gpu/drm/bridge/sii902x.c > b/drivers/gpu/drm/bridge/sii902x.c > index 65549fbfdc87..c5e5f83b97ce 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -1143,7 +1143,7 @@ static int sii902x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sii902x_remove(struct i2c_client *client) > +static void sii902x_remove(struct i2c_client *client) >   >  { >         struct sii902x *sii902x = i2c_get_clientdata(client); > @@ -1152,8 +1152,6 @@ static int sii902x_remove(struct i2c_client > *client) >         drm_bridge_remove(&sii902x->bridge); >         regulator_bulk_disable(ARRAY_SIZE(sii902x->supplies), >                                sii902x->supplies); > - > -       return 0; >  } >   >  static const struct of_device_id sii902x_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/sii9234.c > b/drivers/gpu/drm/bridge/sii9234.c > index 15c98a7bd81c..5b3061d4b5c3 100644 > --- a/drivers/gpu/drm/bridge/sii9234.c > +++ b/drivers/gpu/drm/bridge/sii9234.c > @@ -936,14 +936,12 @@ static int sii9234_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii9234_remove(struct i2c_client *client) > +static void sii9234_remove(struct i2c_client *client) >  { >         struct sii9234 *ctx = i2c_get_clientdata(client); >   >         sii9234_cable_out(ctx); >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii9234_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c > b/drivers/gpu/drm/bridge/sil-sii8620.c > index ec7745c31da0..eabd3e09adfa 100644 > --- a/drivers/gpu/drm/bridge/sil-sii8620.c > +++ b/drivers/gpu/drm/bridge/sil-sii8620.c > @@ -2346,7 +2346,7 @@ static int sii8620_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii8620_remove(struct i2c_client *client) > +static void sii8620_remove(struct i2c_client *client) >  { >         struct sii8620 *ctx = i2c_get_clientdata(client); >   > @@ -2360,8 +2360,6 @@ static int sii8620_remove(struct i2c_client > *client) >                 sii8620_cable_out(ctx); >         } >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii8620_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/tc358767.c > b/drivers/gpu/drm/bridge/tc358767.c > index 485717c8f0b4..a50316538a9b 100644 > --- a/drivers/gpu/drm/bridge/tc358767.c > +++ b/drivers/gpu/drm/bridge/tc358767.c > @@ -2148,13 +2148,11 @@ static int tc_probe(struct i2c_client > *client, const struct i2c_device_id *id) >         return 0; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358767_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/tc358768.c > b/drivers/gpu/drm/bridge/tc358768.c > index fd585bf925fe..4c4b77ce8aba 100644 > --- a/drivers/gpu/drm/bridge/tc358768.c > +++ b/drivers/gpu/drm/bridge/tc358768.c > @@ -1072,13 +1072,11 @@ static int tc358768_i2c_probe(struct > i2c_client *client, >         return mipi_dsi_host_register(&priv->dsi_host); >  } >   > -static int tc358768_i2c_remove(struct i2c_client *client) > +static void tc358768_i2c_remove(struct i2c_client *client) >  { >         struct tc358768_priv *priv = i2c_get_clientdata(client); >   >         mipi_dsi_host_unregister(&priv->dsi_host); > - > -       return 0; >  } >   >  static struct i2c_driver tc358768_driver = { > diff --git a/drivers/gpu/drm/bridge/tc358775.c > b/drivers/gpu/drm/bridge/tc358775.c > index 62a7ef352daa..1d097717b47b 100644 > --- a/drivers/gpu/drm/bridge/tc358775.c > +++ b/drivers/gpu/drm/bridge/tc358775.c > @@ -713,13 +713,11 @@ static int tc_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358775_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > index ac66f408b40c..8f93e374848c 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > @@ -726,14 +726,12 @@ static int sn65dsi83_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sn65dsi83_remove(struct i2c_client *client) > +static void sn65dsi83_remove(struct i2c_client *client) >  { >         struct sn65dsi83 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); >         of_node_put(ctx->host_node); > - > -       return 0; >  } >   >  static struct i2c_device_id sn65dsi83_id[] = { > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c > b/drivers/gpu/drm/bridge/ti-tfp410.c > index 756b3e6e776b..281ceb7b9840 100644 > --- a/drivers/gpu/drm/bridge/ti-tfp410.c > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c > @@ -392,11 +392,9 @@ static int tfp410_i2c_probe(struct i2c_client > *client, >         return tfp410_init(&client->dev, true); >  } >   > -static int tfp410_i2c_remove(struct i2c_client *client) > +static void tfp410_i2c_remove(struct i2c_client *client) >  { >         tfp410_fini(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tfp410_i2c_ids[] = { > diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c > b/drivers/gpu/drm/i2c/ch7006_drv.c > index b91e48d2190d..578b738859b9 100644 > --- a/drivers/gpu/drm/i2c/ch7006_drv.c > +++ b/drivers/gpu/drm/i2c/ch7006_drv.c > @@ -417,11 +417,9 @@ static int ch7006_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return -ENODEV; >  } >   > -static int ch7006_remove(struct i2c_client *client) > +static void ch7006_remove(struct i2c_client *client) >  { >         ch7006_dbg(client, "\n"); > - > -       return 0; >  } >   >  static int ch7006_resume(struct device *dev) > diff --git a/drivers/gpu/drm/i2c/tda9950.c > b/drivers/gpu/drm/i2c/tda9950.c > index 5b03fdd1eaa4..9ed54e7ccff2 100644 > --- a/drivers/gpu/drm/i2c/tda9950.c > +++ b/drivers/gpu/drm/i2c/tda9950.c > @@ -478,14 +478,12 @@ static int tda9950_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9950_remove(struct i2c_client *client) > +static void tda9950_remove(struct i2c_client *client) >  { >         struct tda9950_priv *priv = i2c_get_clientdata(client); >   >         cec_notifier_cec_adap_unregister(priv->notify, priv->adap); >         cec_unregister_adapter(priv->adap); > - > -       return 0; >  } >   >  static struct i2c_device_id tda9950_ids[] = { > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c > b/drivers/gpu/drm/i2c/tda998x_drv.c > index b7ec6c374fbd..1f5ce292f5b1 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -2075,11 +2075,10 @@ tda998x_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tda998x_remove(struct i2c_client *client) > +static void tda998x_remove(struct i2c_client *client) >  { >         component_del(&client->dev, &tda998x_ops); >         tda998x_destroy(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > index cb5cb27462df..36a46cb7fe1c 100644 > --- a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > +++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > @@ -288,7 +288,7 @@ static int lcd_olinuxino_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lcd_olinuxino_remove(struct i2c_client *client) > +static void lcd_olinuxino_remove(struct i2c_client *client) >  { >         struct lcd_olinuxino *panel = i2c_get_clientdata(client); >   > @@ -296,8 +296,6 @@ static int lcd_olinuxino_remove(struct i2c_client > *client) >   >         drm_panel_disable(&panel->panel); >         drm_panel_unprepare(&panel->panel); > - > -       return 0; >  } >   >  static const struct of_device_id lcd_olinuxino_of_ids[] = { > diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > index 145047e19394..6dc67b609873 100644 > --- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > +++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > @@ -445,7 +445,7 @@ static int rpi_touchscreen_probe(struct > i2c_client *i2c, >         return -ENODEV; >  } >   > -static int rpi_touchscreen_remove(struct i2c_client *i2c) > +static void rpi_touchscreen_remove(struct i2c_client *i2c) >  { >         struct rpi_touchscreen *ts = i2c_get_clientdata(i2c); >   > @@ -454,8 +454,6 @@ static int rpi_touchscreen_remove(struct > i2c_client *i2c) >         drm_panel_remove(&ts->base); >   >         mipi_dsi_device_unregister(ts->dsi); > - > -       return 0; >  } >   >  static int rpi_touchscreen_dsi_probe(struct mipi_dsi_device *dsi) > diff --git a/drivers/gpu/drm/solomon/ssd130x-i2c.c > b/drivers/gpu/drm/solomon/ssd130x-i2c.c > index 1e0fcec7be47..ddfa0bb5d9c9 100644 > --- a/drivers/gpu/drm/solomon/ssd130x-i2c.c > +++ b/drivers/gpu/drm/solomon/ssd130x-i2c.c > @@ -39,13 +39,11 @@ static int ssd130x_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ssd130x_i2c_remove(struct i2c_client *client) > +static void ssd130x_i2c_remove(struct i2c_client *client) >  { >         struct ssd130x_device *ssd130x = i2c_get_clientdata(client); >   >         ssd130x_remove(ssd130x); > - > -       return 0; >  } >   >  static void ssd130x_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c- > hid/i2c-hid-core.c > index c078f09a2318..95cefae47adf 100644 > --- a/drivers/hid/i2c-hid/i2c-hid-core.c > +++ b/drivers/hid/i2c-hid/i2c-hid-core.c > @@ -1064,7 +1064,7 @@ int i2c_hid_core_probe(struct i2c_client > *client, struct i2chid_ops *ops, >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_probe); >   > -int i2c_hid_core_remove(struct i2c_client *client) > +void i2c_hid_core_remove(struct i2c_client *client) >  { >         struct i2c_hid *ihid = i2c_get_clientdata(client); >         struct hid_device *hid; > @@ -1078,8 +1078,6 @@ int i2c_hid_core_remove(struct i2c_client > *client) >                 i2c_hid_free_buffers(ihid); >   >         i2c_hid_core_power_down(ihid); > - > -       return 0; >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_remove); >   > diff --git a/drivers/hid/i2c-hid/i2c-hid.h b/drivers/hid/i2c-hid/i2c- > hid.h > index 236cc062d5ef..96c75510ad3f 100644 > --- a/drivers/hid/i2c-hid/i2c-hid.h > +++ b/drivers/hid/i2c-hid/i2c-hid.h > @@ -33,7 +33,7 @@ struct i2chid_ops { >   >  int i2c_hid_core_probe(struct i2c_client *client, struct i2chid_ops > *ops, >                        u16 hid_descriptor_address, u32 quirks); > -int i2c_hid_core_remove(struct i2c_client *client); > +void i2c_hid_core_remove(struct i2c_client *client); >   >  void i2c_hid_core_shutdown(struct i2c_client *client); >   > diff --git a/drivers/hwmon/adc128d818.c b/drivers/hwmon/adc128d818.c > index fd938c70293f..299160543b35 100644 > --- a/drivers/hwmon/adc128d818.c > +++ b/drivers/hwmon/adc128d818.c > @@ -495,14 +495,12 @@ static int adc128_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adc128_remove(struct i2c_client *client) > +static void adc128_remove(struct i2c_client *client) >  { >         struct adc128_data *data = i2c_get_clientdata(client); >   >         if (data->regulator) >                 regulator_disable(data->regulator); > - > -       return 0; >  } >   >  static const struct i2c_device_id adc128_id[] = { > diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c > index c67cd037a93f..927f8df05b7c 100644 > --- a/drivers/hwmon/adt7470.c > +++ b/drivers/hwmon/adt7470.c > @@ -1296,12 +1296,11 @@ static int adt7470_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adt7470_remove(struct i2c_client *client) > +static void adt7470_remove(struct i2c_client *client) >  { >         struct adt7470_data *data = i2c_get_clientdata(client); >   >         kthread_stop(data->auto_update); > -       return 0; >  } >   >  static const struct i2c_device_id adt7470_id[] = { > diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c > index 8cf0bcb85eb4..a9166c8555c5 100644 > --- a/drivers/hwmon/asb100.c > +++ b/drivers/hwmon/asb100.c > @@ -208,7 +208,7 @@ static void asb100_write_value(struct i2c_client > *client, u16 reg, u16 val); >  static int asb100_probe(struct i2c_client *client); >  static int asb100_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int asb100_remove(struct i2c_client *client); > +static void asb100_remove(struct i2c_client *client); >  static struct asb100_data *asb100_update_device(struct device *dev); >  static void asb100_init_client(struct i2c_client *client); >   > @@ -822,7 +822,7 @@ static int asb100_probe(struct i2c_client > *client) >         return err; >  } >   > -static int asb100_remove(struct i2c_client *client) > +static void asb100_remove(struct i2c_client *client) >  { >         struct asb100_data *data = i2c_get_clientdata(client); >   > @@ -831,8 +831,6 @@ static int asb100_remove(struct i2c_client > *client) >   >         i2c_unregister_device(data->lm75[1]); >         i2c_unregister_device(data->lm75[0]); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/hwmon/asc7621.c b/drivers/hwmon/asc7621.c > index e835605a7456..4f90fdee9cc7 100644 > --- a/drivers/hwmon/asc7621.c > +++ b/drivers/hwmon/asc7621.c > @@ -1165,7 +1165,7 @@ static int asc7621_detect(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int asc7621_remove(struct i2c_client *client) > +static void asc7621_remove(struct i2c_client *client) >  { >         struct asc7621_data *data = i2c_get_clientdata(client); >         int i; > @@ -1176,8 +1176,6 @@ static int asc7621_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, >                                    > &(asc7621_params[i].sda.dev_attr)); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id asc7621_id[] = { > diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c > index e3ad4c2d0038..b1cd028c8277 100644 > --- a/drivers/hwmon/dme1737.c > +++ b/drivers/hwmon/dme1737.c > @@ -2508,14 +2508,12 @@ static int dme1737_i2c_probe(struct > i2c_client *client) >         return err; >  } >   > -static int dme1737_i2c_remove(struct i2c_client *client) > +static void dme1737_i2c_remove(struct i2c_client *client) >  { >         struct dme1737_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         dme1737_remove_files(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id dme1737_id[] = { > diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c > index 57c8a473698d..ffeed6c1e20b 100644 > --- a/drivers/hwmon/f75375s.c > +++ b/drivers/hwmon/f75375s.c > @@ -114,7 +114,7 @@ struct f75375_data { >  static int f75375_detect(struct i2c_client *client, >                          struct i2c_board_info *info); >  static int f75375_probe(struct i2c_client *client); > -static int f75375_remove(struct i2c_client *client); > +static void f75375_remove(struct i2c_client *client); >   >  static const struct i2c_device_id f75375_id[] = { >         { "f75373", f75373 }, > @@ -864,12 +864,11 @@ static int f75375_probe(struct i2c_client > *client) >         return err; >  } >   > -static int f75375_remove(struct i2c_client *client) > +static void f75375_remove(struct i2c_client *client) >  { >         struct f75375_data *data = i2c_get_clientdata(client); >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &f75375_group); > -       return 0; >  } >   >  /* Return 0 if detection is successful, -ENODEV otherwise */ > diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c > index c26195e3aad7..343e227ca38a 100644 > --- a/drivers/hwmon/fschmd.c > +++ b/drivers/hwmon/fschmd.c > @@ -217,7 +217,7 @@ static const int FSCHMD_NO_TEMP_SENSORS[7] = { 3, > 3, 4, 3, 5, 5, 11 }; >  static int fschmd_probe(struct i2c_client *client); >  static int fschmd_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int fschmd_remove(struct i2c_client *client); > +static void fschmd_remove(struct i2c_client *client); >  static struct fschmd_data *fschmd_update_device(struct device *dev); >   >  /* > @@ -1248,7 +1248,7 @@ static int fschmd_probe(struct i2c_client > *client) >         return err; >  } >   > -static int fschmd_remove(struct i2c_client *client) > +static void fschmd_remove(struct i2c_client *client) >  { >         struct fschmd_data *data = i2c_get_clientdata(client); >         int i; > @@ -1291,8 +1291,6 @@ static int fschmd_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, fschmd_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static struct fschmd_data *fschmd_update_device(struct device *dev) > diff --git a/drivers/hwmon/ftsteutates.c > b/drivers/hwmon/ftsteutates.c > index ceffc76a0c51..918763832432 100644 > --- a/drivers/hwmon/ftsteutates.c > +++ b/drivers/hwmon/ftsteutates.c > @@ -744,12 +744,11 @@ static int fts_detect(struct i2c_client > *client, >         return 0; >  } >   > -static int fts_remove(struct i2c_client *client) > +static void fts_remove(struct i2c_client *client) >  { >         struct fts_data *data = dev_get_drvdata(&client->dev); >   >         watchdog_unregister_device(&data->wdd); > -       return 0; >  } >   >  static int fts_probe(struct i2c_client *client) > diff --git a/drivers/hwmon/ina209.c b/drivers/hwmon/ina209.c > index fc3007c3e85c..9b58655d2de4 100644 > --- a/drivers/hwmon/ina209.c > +++ b/drivers/hwmon/ina209.c > @@ -568,13 +568,11 @@ static int ina209_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina209_remove(struct i2c_client *client) > +static void ina209_remove(struct i2c_client *client) >  { >         struct ina209_data *data = i2c_get_clientdata(client); >   >         ina209_restore_conf(client, data); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina209_id[] = { > diff --git a/drivers/hwmon/ina3221.c b/drivers/hwmon/ina3221.c > index 58d3828e2ec0..f89bac19bd73 100644 > --- a/drivers/hwmon/ina3221.c > +++ b/drivers/hwmon/ina3221.c > @@ -913,7 +913,7 @@ static int ina3221_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina3221_remove(struct i2c_client *client) > +static void ina3221_remove(struct i2c_client *client) >  { >         struct ina3221_data *ina = dev_get_drvdata(&client->dev); >         int i; > @@ -926,8 +926,6 @@ static int ina3221_remove(struct i2c_client > *client) >                 pm_runtime_put_noidle(ina->pm_dev); >   >         mutex_destroy(&ina->lock); > - > -       return 0; >  } >   >  static int __maybe_unused ina3221_suspend(struct device *dev) > diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c > index 07f7f8b5b73d..7b3c190959d3 100644 > --- a/drivers/hwmon/jc42.c > +++ b/drivers/hwmon/jc42.c > @@ -524,7 +524,7 @@ static int jc42_probe(struct i2c_client *client) >         return PTR_ERR_OR_ZERO(hwmon_dev); >  } >   > -static int jc42_remove(struct i2c_client *client) > +static void jc42_remove(struct i2c_client *client) >  { >         struct jc42_data *data = i2c_get_clientdata(client); >   > @@ -537,7 +537,6 @@ static int jc42_remove(struct i2c_client *client) >                   | (data->config & JC42_CFG_HYST_MASK); >                 i2c_smbus_write_word_swapped(client, JC42_REG_CONFIG, > config); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/hwmon/mcp3021.c b/drivers/hwmon/mcp3021.c > index ce2780768074..99c29ced084c 100644 > --- a/drivers/hwmon/mcp3021.c > +++ b/drivers/hwmon/mcp3021.c > @@ -167,14 +167,12 @@ static int mcp3021_probe(struct i2c_client > *client) >         return err; >  } >   > -static int mcp3021_remove(struct i2c_client *client) > +static void mcp3021_remove(struct i2c_client *client) >  { >         struct mcp3021_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_file(&client->dev.kobj, > &dev_attr_in0_input.attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp3021_id[] = { > diff --git a/drivers/hwmon/occ/p8_i2c.c b/drivers/hwmon/occ/p8_i2c.c > index da39ea28df31..d82a4873a0c6 100644 > --- a/drivers/hwmon/occ/p8_i2c.c > +++ b/drivers/hwmon/occ/p8_i2c.c > @@ -226,13 +226,11 @@ static int p8_i2c_occ_probe(struct i2c_client > *client) >         return occ_setup(occ); >  } >   > -static int p8_i2c_occ_remove(struct i2c_client *client) > +static void p8_i2c_occ_remove(struct i2c_client *client) >  { >         struct occ *occ = dev_get_drvdata(&client->dev); >   >         occ_shutdown(occ); > - > -       return 0; >  } >   >  static const struct of_device_id p8_i2c_occ_of_match[] = { > diff --git a/drivers/hwmon/pcf8591.c b/drivers/hwmon/pcf8591.c > index a97a51005c61..af9614e918a4 100644 > --- a/drivers/hwmon/pcf8591.c > +++ b/drivers/hwmon/pcf8591.c > @@ -228,14 +228,13 @@ static int pcf8591_probe(struct i2c_client > *client) >         return err; >  } >   > -static int pcf8591_remove(struct i2c_client *client) > +static void pcf8591_remove(struct i2c_client *client) >  { >         struct pcf8591_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, > &pcf8591_attr_group_opt); >         sysfs_remove_group(&client->dev.kobj, &pcf8591_attr_group); > -       return 0; >  } >   >  /* Called when we have found a new PCF8591. */ > diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c > index 8c4ed72e5d68..c36bdbe423de 100644 > --- a/drivers/hwmon/smm665.c > +++ b/drivers/hwmon/smm665.c > @@ -671,12 +671,11 @@ static int smm665_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int smm665_remove(struct i2c_client *client) > +static void smm665_remove(struct i2c_client *client) >  { >         struct smm665_data *data = i2c_get_clientdata(client); >   >         i2c_unregister_device(data->cmdreg); > -       return 0; >  } >   >  static const struct i2c_device_id smm665_id[] = { > diff --git a/drivers/hwmon/tps23861.c b/drivers/hwmon/tps23861.c > index 8bd6435c13e8..9cf693287235 100644 > --- a/drivers/hwmon/tps23861.c > +++ b/drivers/hwmon/tps23861.c > @@ -584,13 +584,11 @@ static int tps23861_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps23861_remove(struct i2c_client *client) > +static void tps23861_remove(struct i2c_client *client) >  { >         struct tps23861_data *data = i2c_get_clientdata(client); >   >         debugfs_remove_recursive(data->debugfs_dir); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused tps23861_of_match[] > = { > diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c > index b3579721265f..55c78e12bbbe 100644 > --- a/drivers/hwmon/w83781d.c > +++ b/drivers/hwmon/w83781d.c > @@ -1239,7 +1239,7 @@ static int w83781d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int > +static void >  w83781d_remove(struct i2c_client *client) >  { >         struct w83781d_data *data = i2c_get_clientdata(client); > @@ -1250,8 +1250,6 @@ w83781d_remove(struct i2c_client *client) >   >         i2c_unregister_device(data->lm75[0]); >         i2c_unregister_device(data->lm75[1]); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c > index 80a9a78d7ce9..5fe5c93856af 100644 > --- a/drivers/hwmon/w83791d.c > +++ b/drivers/hwmon/w83791d.c > @@ -315,7 +315,7 @@ struct w83791d_data { >  static int w83791d_probe(struct i2c_client *client); >  static int w83791d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83791d_remove(struct i2c_client *client); > +static void w83791d_remove(struct i2c_client *client); >   >  static int w83791d_read(struct i2c_client *client, u8 reg); >  static int w83791d_write(struct i2c_client *client, u8 reg, u8 > value); > @@ -1405,14 +1405,12 @@ static int w83791d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83791d_remove(struct i2c_client *client) > +static void w83791d_remove(struct i2c_client *client) >  { >         struct w83791d_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &w83791d_group); > - > -       return 0; >  } >   >  static void w83791d_init_client(struct i2c_client *client) > diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c > index 31a1cdc30877..2ee8ee4f0f1c 100644 > --- a/drivers/hwmon/w83792d.c > +++ b/drivers/hwmon/w83792d.c > @@ -286,7 +286,7 @@ struct w83792d_data { >  static int w83792d_probe(struct i2c_client *client); >  static int w83792d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83792d_remove(struct i2c_client *client); > +static void w83792d_remove(struct i2c_client *client); >  static struct w83792d_data *w83792d_update_device(struct device > *dev); >   >  #ifdef DEBUG > @@ -1429,7 +1429,7 @@ w83792d_probe(struct i2c_client *client) >         return err; >  } >   > -static int > +static void >  w83792d_remove(struct i2c_client *client) >  { >         struct w83792d_data *data = i2c_get_clientdata(client); > @@ -1440,8 +1440,6 @@ w83792d_remove(struct i2c_client *client) >         for (i = 0; i < ARRAY_SIZE(w83792d_group_fan); i++) >                 sysfs_remove_group(&client->dev.kobj, >                                    &w83792d_group_fan[i]); > - > -       return 0; >  } >   >  static void > diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c > index 0a65d164c8f0..daeaaded6b76 100644 > --- a/drivers/hwmon/w83793.c > +++ b/drivers/hwmon/w83793.c > @@ -285,7 +285,7 @@ static int w83793_write_value(struct i2c_client > *client, u16 reg, u8 value); >  static int w83793_probe(struct i2c_client *client); >  static int w83793_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int w83793_remove(struct i2c_client *client); > +static void w83793_remove(struct i2c_client *client); >  static void w83793_init_client(struct i2c_client *client); >  static void w83793_update_nonvolatile(struct device *dev); >  static struct w83793_data *w83793_update_device(struct device *dev); > @@ -1495,7 +1495,7 @@ static struct notifier_block watchdog_notifier > = { >   * Init / remove routines >   */ >   > -static int w83793_remove(struct i2c_client *client) > +static void w83793_remove(struct i2c_client *client) >  { >         struct w83793_data *data = i2c_get_clientdata(client); >         struct device *dev = &client->dev; > @@ -1554,8 +1554,6 @@ static int w83793_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, w83793_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c > index 45b12c4287df..b170cdf3c2be 100644 > --- a/drivers/hwmon/w83795.c > +++ b/drivers/hwmon/w83795.c > @@ -2235,14 +2235,12 @@ static int w83795_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83795_remove(struct i2c_client *client) > +static void w83795_remove(struct i2c_client *client) >  { >         struct w83795_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         w83795_handle_files(&client->dev, > device_remove_file_wrapper); > - > -       return 0; >  } >   >   > diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c > index a41f989d66e2..99f68358378b 100644 > --- a/drivers/hwmon/w83l785ts.c > +++ b/drivers/hwmon/w83l785ts.c > @@ -65,7 +65,7 @@ static const unsigned short normal_i2c[] = { 0x2e, > I2C_CLIENT_END }; >  static int w83l785ts_probe(struct i2c_client *client); >  static int w83l785ts_detect(struct i2c_client *client, >                             struct i2c_board_info *info); > -static int w83l785ts_remove(struct i2c_client *client); > +static void w83l785ts_remove(struct i2c_client *client); >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval); >  static struct w83l785ts_data *w83l785ts_update_device(struct device > *dev); >   > @@ -203,7 +203,7 @@ static int w83l785ts_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83l785ts_remove(struct i2c_client *client) > +static void w83l785ts_remove(struct i2c_client *client) >  { >         struct w83l785ts_data *data = i2c_get_clientdata(client); >   > @@ -212,8 +212,6 @@ static int w83l785ts_remove(struct i2c_client > *client) >                            &sensor_dev_attr_temp1_input.dev_attr); >         device_remove_file(&client->dev, >                            &sensor_dev_attr_temp1_max.dev_attr); > - > -       return 0; >  } >   >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval) > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core- > base.c > index 8ae47e0bbd67..68fc66a424ef 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -599,13 +599,9 @@ static void i2c_device_remove(struct device > *dev) >   >         driver = to_i2c_driver(dev->driver); >         if (driver->remove) { > -               int status; > - >                 dev_dbg(dev, "remove\n"); >   > -               status = driver->remove(client); > -               if (status) > -                       dev_warn(dev, "remove failed (%pe), will be > ignored\n", ERR_PTR(status)); > +               driver->remove(client); >         } >   >         devres_release_group(&client->dev, client->devres_group_id); > diff --git a/drivers/i2c/i2c-slave-eeprom.c b/drivers/i2c/i2c-slave- > eeprom.c > index 5c7ae421cacf..4abc2d919881 100644 > --- a/drivers/i2c/i2c-slave-eeprom.c > +++ b/drivers/i2c/i2c-slave-eeprom.c > @@ -181,14 +181,12 @@ static int i2c_slave_eeprom_probe(struct > i2c_client *client, const struct i2c_de >         return 0; >  }; >   > -static int i2c_slave_eeprom_remove(struct i2c_client *client) > +static void i2c_slave_eeprom_remove(struct i2c_client *client) >  { >         struct eeprom_data *eeprom = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_eeprom_id[] = { > diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c- > slave-testunit.c > index 56dae08dfd48..75ee7ebdb614 100644 > --- a/drivers/i2c/i2c-slave-testunit.c > +++ b/drivers/i2c/i2c-slave-testunit.c > @@ -153,13 +153,12 @@ static int i2c_slave_testunit_probe(struct > i2c_client *client) >         return i2c_slave_register(client, > i2c_slave_testunit_slave_cb); >  }; >   > -static int i2c_slave_testunit_remove(struct i2c_client *client) > +static void i2c_slave_testunit_remove(struct i2c_client *client) >  { >         struct testunit_data *tu = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&tu->worker); >         i2c_slave_unregister(client); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_testunit_id[] = { > diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c > index 775332945ad0..b0f1da7ec0f2 100644 > --- a/drivers/i2c/i2c-smbus.c > +++ b/drivers/i2c/i2c-smbus.c > @@ -153,12 +153,11 @@ static int smbalert_probe(struct i2c_client > *ara, >  } >   >  /* IRQ and memory resources are managed so they are freed > automatically */ > -static int smbalert_remove(struct i2c_client *ara) > +static void smbalert_remove(struct i2c_client *ara) >  { >         struct i2c_smbus_alert *alert = i2c_get_clientdata(ara); >   >         cancel_work_sync(&alert->alert); > -       return 0; >  } >   >  static const struct i2c_device_id smbalert_ids[] = { > diff --git a/drivers/i2c/muxes/i2c-mux-ltc4306.c > b/drivers/i2c/muxes/i2c-mux-ltc4306.c > index 704f1e50f6f4..70835825083f 100644 > --- a/drivers/i2c/muxes/i2c-mux-ltc4306.c > +++ b/drivers/i2c/muxes/i2c-mux-ltc4306.c > @@ -294,13 +294,11 @@ static int ltc4306_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ltc4306_remove(struct i2c_client *client) > +static void ltc4306_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > - > -       return 0; >  } >   >  static struct i2c_driver ltc4306_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca9541.c > b/drivers/i2c/muxes/i2c-mux-pca9541.c > index 6daec8d3d331..ea83de78f52d 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca9541.c > +++ b/drivers/i2c/muxes/i2c-mux-pca9541.c > @@ -325,12 +325,11 @@ static int pca9541_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9541_remove(struct i2c_client *client) > +static void pca9541_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static struct i2c_driver pca9541_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c > b/drivers/i2c/muxes/i2c-mux-pca954x.c > index 4ad665757dd8..a5f458b635df 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca954x.c > +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c > @@ -521,14 +521,13 @@ static int pca954x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca954x_remove(struct i2c_client *client) > +static void pca954x_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         device_remove_file(&client->dev, &dev_attr_idle_state); >   >         pca954x_cleanup(muxc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c > index 9c9e98578667..d03fc3400f94 100644 > --- a/drivers/iio/accel/bma180.c > +++ b/drivers/iio/accel/bma180.c > @@ -1045,7 +1045,7 @@ static int bma180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bma180_remove(struct i2c_client *client) > +static void bma180_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bma180_data *data = iio_priv(indio_dev); > @@ -1062,8 +1062,6 @@ static int bma180_remove(struct i2c_client > *client) >         mutex_unlock(&data->mutex); >         regulator_disable(data->vddio_supply); >         regulator_disable(data->vdd_supply); > - > -       return 0; >  } >   >  static int bma180_suspend(struct device *dev) > diff --git a/drivers/iio/accel/bma400_i2c.c > b/drivers/iio/accel/bma400_i2c.c > index da104ffd3fe0..90c99ab8c8f2 100644 > --- a/drivers/iio/accel/bma400_i2c.c > +++ b/drivers/iio/accel/bma400_i2c.c > @@ -27,11 +27,9 @@ static int bma400_i2c_probe(struct i2c_client > *client, >         return bma400_probe(&client->dev, regmap, id->name); >  } >   > -static int bma400_i2c_remove(struct i2c_client *client) > +static void bma400_i2c_remove(struct i2c_client *client) >  { >         bma400_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bma400_i2c_ids[] = { > diff --git a/drivers/iio/accel/bmc150-accel-i2c.c > b/drivers/iio/accel/bmc150-accel-i2c.c > index dff4d7dd101c..be8cc598b88e 100644 > --- a/drivers/iio/accel/bmc150-accel-i2c.c > +++ b/drivers/iio/accel/bmc150-accel-i2c.c > @@ -209,13 +209,11 @@ static int bmc150_accel_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bmc150_accel_remove(struct i2c_client *client) > +static void bmc150_accel_remove(struct i2c_client *client) >  { >         bmc150_acpi_dual_accel_remove(client); >   >         bmc150_accel_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_accel_acpi_match[] = { > diff --git a/drivers/iio/accel/kxcjk-1013.c > b/drivers/iio/accel/kxcjk-1013.c > index 748b35c2f0c3..94f7b6ac5c87 100644 > --- a/drivers/iio/accel/kxcjk-1013.c > +++ b/drivers/iio/accel/kxcjk-1013.c > @@ -1611,7 +1611,7 @@ static int kxcjk1013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kxcjk1013_remove(struct i2c_client *client) > +static void kxcjk1013_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct kxcjk1013_data *data = iio_priv(indio_dev); > @@ -1630,8 +1630,6 @@ static int kxcjk1013_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         kxcjk1013_set_mode(data, STANDBY); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9- > i2c.c > index c8dc52f11037..86c0d70d0da7 100644 > --- a/drivers/iio/accel/kxsd9-i2c.c > +++ b/drivers/iio/accel/kxsd9-i2c.c > @@ -32,11 +32,9 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c, >                                   i2c->name); >  } >   > -static int kxsd9_i2c_remove(struct i2c_client *client) > +static void kxsd9_i2c_remove(struct i2c_client *client) >  { >         kxsd9_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id kxsd9_of_match[] = { > diff --git a/drivers/iio/accel/mc3230.c b/drivers/iio/accel/mc3230.c > index c15d16e7f1da..2462000e0519 100644 > --- a/drivers/iio/accel/mc3230.c > +++ b/drivers/iio/accel/mc3230.c > @@ -151,15 +151,13 @@ static int mc3230_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mc3230_remove(struct i2c_client *client) > +static void mc3230_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >   >         mc3230_set_opcon(iio_priv(indio_dev), > MC3230_MODE_OPCON_STANDBY); > - > -       return 0; >  } >   >  static int mc3230_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma7455_i2c.c > b/drivers/iio/accel/mma7455_i2c.c > index a3b84e8a3ea8..c63b321b01cd 100644 > --- a/drivers/iio/accel/mma7455_i2c.c > +++ b/drivers/iio/accel/mma7455_i2c.c > @@ -26,11 +26,9 @@ static int mma7455_i2c_probe(struct i2c_client > *i2c, >         return mma7455_core_probe(&i2c->dev, regmap, name); >  } >   > -static int mma7455_i2c_remove(struct i2c_client *i2c) > +static void mma7455_i2c_remove(struct i2c_client *i2c) >  { >         mma7455_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mma7455_i2c_ids[] = { > diff --git a/drivers/iio/accel/mma7660.c > b/drivers/iio/accel/mma7660.c > index 112a5a33c29f..ad2aac0ec1d4 100644 > --- a/drivers/iio/accel/mma7660.c > +++ b/drivers/iio/accel/mma7660.c > @@ -207,7 +207,7 @@ static int mma7660_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma7660_remove(struct i2c_client *client) > +static void mma7660_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -218,8 +218,6 @@ static int mma7660_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device in > stand-by mode (%pe), ignoring\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int mma7660_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma8452.c > b/drivers/iio/accel/mma8452.c > index c7d9ca96dbaa..3ba28c2ff68a 100644 > --- a/drivers/iio/accel/mma8452.c > +++ b/drivers/iio/accel/mma8452.c > @@ -1735,7 +1735,7 @@ static int mma8452_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma8452_remove(struct i2c_client *client) > +static void mma8452_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma8452_data *data = iio_priv(indio_dev); > @@ -1751,8 +1751,6 @@ static int mma8452_remove(struct i2c_client > *client) >   >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/accel/mma9551.c > b/drivers/iio/accel/mma9551.c > index 123cdbbb265c..f7a793f4a8e3 100644 > --- a/drivers/iio/accel/mma9551.c > +++ b/drivers/iio/accel/mma9551.c > @@ -509,7 +509,7 @@ static int mma9551_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9551_remove(struct i2c_client *client) > +static void mma9551_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9551_data *data = iio_priv(indio_dev); > @@ -522,8 +522,6 @@ static int mma9551_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9551_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma9553.c > b/drivers/iio/accel/mma9553.c > index 09df58d4be33..2da0e005b13e 100644 > --- a/drivers/iio/accel/mma9553.c > +++ b/drivers/iio/accel/mma9553.c > @@ -1148,7 +1148,7 @@ static int mma9553_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9553_remove(struct i2c_client *client) > +static void mma9553_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9553_data *data = iio_priv(indio_dev); > @@ -1161,8 +1161,6 @@ static int mma9553_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9553_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8312.c > b/drivers/iio/accel/stk8312.c > index ceca28913355..7b1d6fb692b3 100644 > --- a/drivers/iio/accel/stk8312.c > +++ b/drivers/iio/accel/stk8312.c > @@ -597,7 +597,7 @@ static int stk8312_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8312_remove(struct i2c_client *client) > +static void stk8312_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8312_data *data = iio_priv(indio_dev); > @@ -609,8 +609,6 @@ static int stk8312_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8312_set_mode(data, STK8312_MODE_STANDBY); > - > -       return 0; >  } >   >  static int stk8312_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8ba50.c > b/drivers/iio/accel/stk8ba50.c > index 7d59efb41e22..2f5e4ab2a6e7 100644 > --- a/drivers/iio/accel/stk8ba50.c > +++ b/drivers/iio/accel/stk8ba50.c > @@ -490,7 +490,7 @@ static int stk8ba50_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8ba50_remove(struct i2c_client *client) > +static void stk8ba50_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8ba50_data *data = iio_priv(indio_dev); > @@ -502,8 +502,6 @@ static int stk8ba50_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8ba50_set_power(data, STK8BA50_MODE_SUSPEND); > - > -       return 0; >  } >   >  static int stk8ba50_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c > index 220228c375d3..746bf9a01c25 100644 > --- a/drivers/iio/adc/ad799x.c > +++ b/drivers/iio/adc/ad799x.c > @@ -880,7 +880,7 @@ static int ad799x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad799x_remove(struct i2c_client *client) > +static void ad799x_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ad799x_state *st = iio_priv(indio_dev); > @@ -892,8 +892,6 @@ static int ad799x_remove(struct i2c_client > *client) >                 regulator_disable(st->vref); >         regulator_disable(st->reg); >         kfree(st->rx_buf); > - > -       return 0; >  } >   >  static int __maybe_unused ad799x_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx- > adc.c > index 240e6c420701..910e7e965fc4 100644 > --- a/drivers/iio/adc/ina2xx-adc.c > +++ b/drivers/iio/adc/ina2xx-adc.c > @@ -1034,7 +1034,7 @@ static int ina2xx_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int ina2xx_remove(struct i2c_client *client) > +static void ina2xx_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ina2xx_chip_info *chip = iio_priv(indio_dev); > @@ -1048,8 +1048,6 @@ static int ina2xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina2xx_id[] = { > diff --git a/drivers/iio/adc/ltc2497.c b/drivers/iio/adc/ltc2497.c > index 1adddf5a88a9..be57f1157796 100644 > --- a/drivers/iio/adc/ltc2497.c > +++ b/drivers/iio/adc/ltc2497.c > @@ -74,13 +74,11 @@ static int ltc2497_probe(struct i2c_client > *client, >         return ltc2497core_probe(dev, indio_dev); >  } >   > -static int ltc2497_remove(struct i2c_client *client) > +static void ltc2497_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         ltc2497core_remove(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ltc2497_id[] = { > diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti- > ads1015.c > index e3dfc155fbe2..8bceba694026 100644 > --- a/drivers/iio/adc/ti-ads1015.c > +++ b/drivers/iio/adc/ti-ads1015.c > @@ -1094,7 +1094,7 @@ static int ads1015_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ads1015_remove(struct i2c_client *client) > +static void ads1015_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ads1015_data *data = iio_priv(indio_dev); > @@ -1110,8 +1110,6 @@ static int ads1015_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/chemical/atlas-sensor.c > b/drivers/iio/chemical/atlas-sensor.c > index 8378c00fa2ff..7cac77a931c7 100644 > --- a/drivers/iio/chemical/atlas-sensor.c > +++ b/drivers/iio/chemical/atlas-sensor.c > @@ -722,7 +722,7 @@ static int atlas_probe(struct i2c_client *client, >         return ret; >  } >   > -static int atlas_remove(struct i2c_client *client) > +static void atlas_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct atlas_data *data = iio_priv(indio_dev); > @@ -739,8 +739,6 @@ static int atlas_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to power down device > (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int atlas_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/chemical/ccs811.c > b/drivers/iio/chemical/ccs811.c > index 560183efb36f..ba4045e20303 100644 > --- a/drivers/iio/chemical/ccs811.c > +++ b/drivers/iio/chemical/ccs811.c > @@ -532,7 +532,7 @@ static int ccs811_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ccs811_remove(struct i2c_client *client) > +static void ccs811_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ccs811_data *data = iio_priv(indio_dev); > @@ -548,8 +548,6 @@ static int ccs811_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ccs811_id[] = { > diff --git a/drivers/iio/chemical/sgp30.c > b/drivers/iio/chemical/sgp30.c > index 2343d444604d..e2c13c78c7e0 100644 > --- a/drivers/iio/chemical/sgp30.c > +++ b/drivers/iio/chemical/sgp30.c > @@ -552,15 +552,13 @@ static int sgp_probe(struct i2c_client *client, >         return 0; >  } >   > -static int sgp_remove(struct i2c_client *client) > +static void sgp_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sgp_data *data = iio_priv(indio_dev); >   >         if (data->iaq_thread) >                 kthread_stop(data->iaq_thread); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgp_id[] = { > diff --git a/drivers/iio/dac/ad5380.c b/drivers/iio/dac/ad5380.c > index a44c83242fb1..62d7fc53c7f4 100644 > --- a/drivers/iio/dac/ad5380.c > +++ b/drivers/iio/dac/ad5380.c > @@ -561,11 +561,9 @@ static int ad5380_i2c_probe(struct i2c_client > *i2c, >         return ad5380_probe(&i2c->dev, regmap, id->driver_data, id- > >name); >  } >   > -static int ad5380_i2c_remove(struct i2c_client *i2c) > +static void ad5380_i2c_remove(struct i2c_client *i2c) >  { >         ad5380_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5380_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c > index 09e242949cd0..7324065d3782 100644 > --- a/drivers/iio/dac/ad5446.c > +++ b/drivers/iio/dac/ad5446.c > @@ -575,11 +575,9 @@ static int ad5446_i2c_probe(struct i2c_client > *i2c, >                 &ad5446_i2c_chip_info[id->driver_data]); >  } >   > -static int ad5446_i2c_remove(struct i2c_client *i2c) > +static void ad5446_i2c_remove(struct i2c_client *i2c) >  { >         ad5446_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5446_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5593r.c b/drivers/iio/dac/ad5593r.c > index 34e1319a9712..92be661034a6 100644 > --- a/drivers/iio/dac/ad5593r.c > +++ b/drivers/iio/dac/ad5593r.c > @@ -97,11 +97,9 @@ static int ad5593r_i2c_probe(struct i2c_client > *i2c, >         return ad5592r_probe(&i2c->dev, id->name, &ad5593r_rw_ops); >  } >   > -static int ad5593r_i2c_remove(struct i2c_client *i2c) > +static void ad5593r_i2c_remove(struct i2c_client *i2c) >  { >         ad5592r_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5593r_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696- > i2c.c > index 762503c1901b..aa36cbf0137c 100644 > --- a/drivers/iio/dac/ad5696-i2c.c > +++ b/drivers/iio/dac/ad5696-i2c.c > @@ -65,11 +65,9 @@ static int ad5686_i2c_probe(struct i2c_client > *i2c, >                             ad5686_i2c_write, ad5686_i2c_read); >  } >   > -static int ad5686_i2c_remove(struct i2c_client *i2c) > +static void ad5686_i2c_remove(struct i2c_client *i2c) >  { >         ad5686_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5686_i2c_id[] = { > diff --git a/drivers/iio/dac/ds4424.c b/drivers/iio/dac/ds4424.c > index 5a5e967b0be4..e3dcf1efb7fa 100644 > --- a/drivers/iio/dac/ds4424.c > +++ b/drivers/iio/dac/ds4424.c > @@ -281,15 +281,13 @@ static int ds4424_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ds4424_remove(struct i2c_client *client) > +static void ds4424_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ds4424_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vcc_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id ds4424_id[] = { > diff --git a/drivers/iio/dac/m62332.c b/drivers/iio/dac/m62332.c > index 22b02f50fe41..5a812f87970c 100644 > --- a/drivers/iio/dac/m62332.c > +++ b/drivers/iio/dac/m62332.c > @@ -218,7 +218,7 @@ static int m62332_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m62332_remove(struct i2c_client *client) > +static void m62332_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -226,8 +226,6 @@ static int m62332_remove(struct i2c_client > *client) >         iio_map_array_unregister(indio_dev); >         m62332_set_value(indio_dev, 0, 0); >         m62332_set_value(indio_dev, 0, 1); > - > -       return 0; >  } >   >  static const struct i2c_device_id m62332_id[] = { > diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c > index 7fcb86288823..29ab21904aca 100644 > --- a/drivers/iio/dac/mcp4725.c > +++ b/drivers/iio/dac/mcp4725.c > @@ -485,7 +485,7 @@ static int mcp4725_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mcp4725_remove(struct i2c_client *client) > +static void mcp4725_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mcp4725_data *data = iio_priv(indio_dev); > @@ -495,8 +495,6 @@ static int mcp4725_remove(struct i2c_client > *client) >         if (data->vref_reg) >                 regulator_disable(data->vref_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp4725_id[] = { > diff --git a/drivers/iio/dac/ti-dac5571.c b/drivers/iio/dac/ti- > dac5571.c > index 4b6b04038e94..96b8d80b72a0 100644 > --- a/drivers/iio/dac/ti-dac5571.c > +++ b/drivers/iio/dac/ti-dac5571.c > @@ -381,15 +381,13 @@ static int dac5571_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int dac5571_remove(struct i2c_client *i2c) > +static void dac5571_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct dac5571_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vref); > - > -       return 0; >  } >   >  static const struct of_device_id dac5571_of_id[] = { > diff --git a/drivers/iio/gyro/bmg160_i2c.c > b/drivers/iio/gyro/bmg160_i2c.c > index b3fa46bd02cb..908ccc385254 100644 > --- a/drivers/iio/gyro/bmg160_i2c.c > +++ b/drivers/iio/gyro/bmg160_i2c.c > @@ -32,11 +32,9 @@ static int bmg160_i2c_probe(struct i2c_client > *client, >         return bmg160_core_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmg160_i2c_remove(struct i2c_client *client) > +static void bmg160_i2c_remove(struct i2c_client *client) >  { >         bmg160_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmg160_acpi_match[] = { > diff --git a/drivers/iio/gyro/fxas21002c_i2c.c > b/drivers/iio/gyro/fxas21002c_i2c.c > index a7807fd97483..13bb52c594d1 100644 > --- a/drivers/iio/gyro/fxas21002c_i2c.c > +++ b/drivers/iio/gyro/fxas21002c_i2c.c > @@ -33,11 +33,9 @@ static int fxas21002c_i2c_probe(struct i2c_client > *i2c) >         return fxas21002c_core_probe(&i2c->dev, regmap, i2c->irq, > i2c->name); >  } >   > -static int fxas21002c_i2c_remove(struct i2c_client *i2c) > +static void fxas21002c_i2c_remove(struct i2c_client *i2c) >  { >         fxas21002c_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id fxas21002c_i2c_id[] = { > diff --git a/drivers/iio/gyro/itg3200_core.c > b/drivers/iio/gyro/itg3200_core.c > index a7f1bbb5f289..8b3758e3b9e8 100644 > --- a/drivers/iio/gyro/itg3200_core.c > +++ b/drivers/iio/gyro/itg3200_core.c > @@ -350,7 +350,7 @@ static int itg3200_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int itg3200_remove(struct i2c_client *client) > +static void itg3200_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -360,8 +360,6 @@ static int itg3200_remove(struct i2c_client > *client) >                 itg3200_remove_trigger(indio_dev); >   >         itg3200_buffer_unconfigure(indio_dev); > - > -       return 0; >  } >   >  static int __maybe_unused itg3200_suspend(struct device *dev) > diff --git a/drivers/iio/gyro/mpu3050-i2c.c > b/drivers/iio/gyro/mpu3050-i2c.c > index 5b5f58baaf7f..4d5e4b04745d 100644 > --- a/drivers/iio/gyro/mpu3050-i2c.c > +++ b/drivers/iio/gyro/mpu3050-i2c.c > @@ -78,7 +78,7 @@ static int mpu3050_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mpu3050_i2c_remove(struct i2c_client *client) > +static void mpu3050_i2c_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = dev_get_drvdata(&client->dev); >         struct mpu3050 *mpu3050 = iio_priv(indio_dev); > @@ -87,8 +87,6 @@ static int mpu3050_i2c_remove(struct i2c_client > *client) >                 i2c_mux_del_adapters(mpu3050->i2cmux); >   >         mpu3050_common_remove(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/health/afe4404.c > b/drivers/iio/health/afe4404.c > index 1bb7de60f8ca..a87337453824 100644 > --- a/drivers/iio/health/afe4404.c > +++ b/drivers/iio/health/afe4404.c > @@ -577,7 +577,7 @@ static int afe4404_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int afe4404_remove(struct i2c_client *client) > +static void afe4404_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct afe4404_data *afe = iio_priv(indio_dev); > @@ -593,8 +593,6 @@ static int afe4404_remove(struct i2c_client > *client) >         ret = regulator_disable(afe->regulator); >         if (ret) >                 dev_err(afe->dev, "Unable to disable regulator\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id afe4404_ids[] = { > diff --git a/drivers/iio/health/max30100.c > b/drivers/iio/health/max30100.c > index ad5717965223..2cca5e0519f8 100644 > --- a/drivers/iio/health/max30100.c > +++ b/drivers/iio/health/max30100.c > @@ -471,15 +471,13 @@ static int max30100_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30100_remove(struct i2c_client *client) > +static void max30100_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30100_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30100_set_powermode(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30100_id[] = { > diff --git a/drivers/iio/health/max30102.c > b/drivers/iio/health/max30102.c > index abbcef563807..437298a29f2d 100644 > --- a/drivers/iio/health/max30102.c > +++ b/drivers/iio/health/max30102.c > @@ -592,15 +592,13 @@ static int max30102_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30102_remove(struct i2c_client *client) > +static void max30102_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30102_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30102_set_power(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30102_id[] = { > diff --git a/drivers/iio/humidity/hdc2010.c > b/drivers/iio/humidity/hdc2010.c > index 1381df46187c..d6858ccb056e 100644 > --- a/drivers/iio/humidity/hdc2010.c > +++ b/drivers/iio/humidity/hdc2010.c > @@ -308,7 +308,7 @@ static int hdc2010_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int hdc2010_remove(struct i2c_client *client) > +static void hdc2010_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct hdc2010_data *data = iio_priv(indio_dev); > @@ -318,8 +318,6 @@ static int hdc2010_remove(struct i2c_client > *client) >         /* Disable Automatic Measurement Mode */ >         if (hdc2010_update_drdy_config(data, HDC2010_AMM, 0)) >                 dev_warn(&client->dev, "Unable to restore default > AMM\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id hdc2010_id[] = { > diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > index 2aa647704a79..14255a918eb1 100644 > --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > @@ -157,7 +157,7 @@ static int inv_mpu_probe(struct i2c_client > *client, >         return result; >  } >   > -static int inv_mpu_remove(struct i2c_client *client) > +static void inv_mpu_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct inv_mpu6050_state *st = iio_priv(indio_dev); > @@ -166,8 +166,6 @@ static int inv_mpu_remove(struct i2c_client > *client) >                 inv_mpu_acpi_delete_mux_client(client); >                 i2c_mux_del_adapters(st->muxc); >         } > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c > index ec23b1ee472b..b10c0dcac0bb 100644 > --- a/drivers/iio/imu/kmx61.c > +++ b/drivers/iio/imu/kmx61.c > @@ -1418,7 +1418,7 @@ static int kmx61_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kmx61_remove(struct i2c_client *client) > +static void kmx61_remove(struct i2c_client *client) >  { >         struct kmx61_data *data = i2c_get_clientdata(client); >   > @@ -1439,8 +1439,6 @@ static int kmx61_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, > true); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int kmx61_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9300.c > b/drivers/iio/light/apds9300.c > index 0f9d77598997..b70f2681bcb3 100644 > --- a/drivers/iio/light/apds9300.c > +++ b/drivers/iio/light/apds9300.c > @@ -452,7 +452,7 @@ static int apds9300_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9300_remove(struct i2c_client *client) > +static void apds9300_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9300_data *data = iio_priv(indio_dev); > @@ -462,8 +462,6 @@ static int apds9300_remove(struct i2c_client > *client) >         /* Ensure that power off and interrupts are disabled */ >         apds9300_set_intr_state(data, 0); >         apds9300_set_power_state(data, 0); > - > -       return 0; >  } >   >  static int apds9300_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9960.c > b/drivers/iio/light/apds9960.c > index 09b831f9f40b..b62c139baf41 100644 > --- a/drivers/iio/light/apds9960.c > +++ b/drivers/iio/light/apds9960.c > @@ -1067,7 +1067,7 @@ static int apds9960_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9960_remove(struct i2c_client *client) > +static void apds9960_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9960_data *data = iio_priv(indio_dev); > @@ -1076,8 +1076,6 @@ static int apds9960_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         apds9960_set_powermode(data, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/light/bh1750.c b/drivers/iio/light/bh1750.c > index 48484b9401b9..034c47ef6e33 100644 > --- a/drivers/iio/light/bh1750.c > +++ b/drivers/iio/light/bh1750.c > @@ -263,7 +263,7 @@ static int bh1750_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int bh1750_remove(struct i2c_client *client) > +static void bh1750_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1750_data *data = iio_priv(indio_dev); > @@ -273,8 +273,6 @@ static int bh1750_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         i2c_smbus_write_byte(client, BH1750_POWER_DOWN); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int __maybe_unused bh1750_suspend(struct device *dev) > diff --git a/drivers/iio/light/bh1780.c b/drivers/iio/light/bh1780.c > index fc7141390117..90bca392b262 100644 > --- a/drivers/iio/light/bh1780.c > +++ b/drivers/iio/light/bh1780.c > @@ -202,7 +202,7 @@ static int bh1780_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bh1780_remove(struct i2c_client *client) > +static void bh1780_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1780_data *bh1780 = iio_priv(indio_dev); > @@ -216,8 +216,6 @@ static int bh1780_remove(struct i2c_client > *client) >         if (ret < 0) >                 dev_err(&client->dev, "failed to power off (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int bh1780_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/cm3232.c b/drivers/iio/light/cm3232.c > index 2c80a0535d2c..5214cd014cf8 100644 > --- a/drivers/iio/light/cm3232.c > +++ b/drivers/iio/light/cm3232.c > @@ -357,7 +357,7 @@ static int cm3232_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int cm3232_remove(struct i2c_client *client) > +static void cm3232_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -365,8 +365,6 @@ static int cm3232_remove(struct i2c_client > *client) >                 CM3232_CMD_ALS_DISABLE); >   >         iio_device_unregister(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm3232_id[] = { > diff --git a/drivers/iio/light/cm36651.c > b/drivers/iio/light/cm36651.c > index 89f5e48a6642..6615c98b601c 100644 > --- a/drivers/iio/light/cm36651.c > +++ b/drivers/iio/light/cm36651.c > @@ -700,7 +700,7 @@ static int cm36651_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cm36651_remove(struct i2c_client *client) > +static void cm36651_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct cm36651_data *cm36651 = iio_priv(indio_dev); > @@ -710,8 +710,6 @@ static int cm36651_remove(struct i2c_client > *client) >         free_irq(client->irq, indio_dev); >         i2c_unregister_device(cm36651->ps_client); >         i2c_unregister_device(cm36651->ara_client); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm36651_id[] = { > diff --git a/drivers/iio/light/gp2ap002.c > b/drivers/iio/light/gp2ap002.c > index c6d1d88d3775..855dc63fb0a5 100644 > --- a/drivers/iio/light/gp2ap002.c > +++ b/drivers/iio/light/gp2ap002.c > @@ -619,7 +619,7 @@ static int gp2ap002_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int gp2ap002_remove(struct i2c_client *client) > +static void gp2ap002_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap002 *gp2ap002 = iio_priv(indio_dev); > @@ -631,8 +631,6 @@ static int gp2ap002_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >         regulator_disable(gp2ap002->vio); >         regulator_disable(gp2ap002->vdd); > - > -       return 0; >  } >   >  static int __maybe_unused gp2ap002_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/gp2ap020a00f.c > b/drivers/iio/light/gp2ap020a00f.c > index b820041159f7..826439299e8b 100644 > --- a/drivers/iio/light/gp2ap020a00f.c > +++ b/drivers/iio/light/gp2ap020a00f.c > @@ -1573,7 +1573,7 @@ static int gp2ap020a00f_probe(struct i2c_client > *client, >         return err; >  } >   > -static int gp2ap020a00f_remove(struct i2c_client *client) > +static void gp2ap020a00f_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap020a00f_data *data = iio_priv(indio_dev); > @@ -1589,8 +1589,6 @@ static int gp2ap020a00f_remove(struct > i2c_client *client) >         free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         regulator_disable(data->vled_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id gp2ap020a00f_id[] = { > diff --git a/drivers/iio/light/isl29028.c > b/drivers/iio/light/isl29028.c > index 720fa83d44e0..6c344875c791 100644 > --- a/drivers/iio/light/isl29028.c > +++ b/drivers/iio/light/isl29028.c > @@ -636,7 +636,7 @@ static int isl29028_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isl29028_remove(struct i2c_client *client) > +static void isl29028_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct isl29028_chip *chip = iio_priv(indio_dev); > @@ -647,8 +647,6 @@ static int isl29028_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         isl29028_clear_configure_reg(chip); > - > -       return 0; >  } >   >  static int __maybe_unused isl29028_suspend(struct device *dev) > diff --git a/drivers/iio/light/isl29125.c > b/drivers/iio/light/isl29125.c > index eb68a52aab82..c199e63cce82 100644 > --- a/drivers/iio/light/isl29125.c > +++ b/drivers/iio/light/isl29125.c > @@ -300,15 +300,13 @@ static int isl29125_powerdown(struct > isl29125_data *data) >                 (data->conf1 & ~ISL29125_MODE_MASK) | > ISL29125_MODE_PD); >  } >   > -static int isl29125_remove(struct i2c_client *client) > +static void isl29125_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         isl29125_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int isl29125_suspend(struct device *dev) > diff --git a/drivers/iio/light/jsa1212.c > b/drivers/iio/light/jsa1212.c > index 5387c12231cf..57ce6d75966c 100644 > --- a/drivers/iio/light/jsa1212.c > +++ b/drivers/iio/light/jsa1212.c > @@ -373,7 +373,7 @@ static int jsa1212_power_off(struct jsa1212_data > *data) >         return ret; >  } >   > -static int jsa1212_remove(struct i2c_client *client) > +static void jsa1212_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct jsa1212_data *data = iio_priv(indio_dev); > @@ -381,8 +381,6 @@ static int jsa1212_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >   >         jsa1212_power_off(data); > - > -       return 0; >  } >   >  static int jsa1212_suspend(struct device *dev) > diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c > index 679a1e1086ae..74a1ccda8b9c 100644 > --- a/drivers/iio/light/ltr501.c > +++ b/drivers/iio/light/ltr501.c > @@ -1600,15 +1600,13 @@ static int ltr501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ltr501_remove(struct i2c_client *client) > +static void ltr501_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         ltr501_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int ltr501_suspend(struct device *dev) > diff --git a/drivers/iio/light/opt3001.c > b/drivers/iio/light/opt3001.c > index a326d47afc9b..a26d1c3f9543 100644 > --- a/drivers/iio/light/opt3001.c > +++ b/drivers/iio/light/opt3001.c > @@ -794,7 +794,7 @@ static int opt3001_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int opt3001_remove(struct i2c_client *client) > +static void opt3001_remove(struct i2c_client *client) >  { >         struct iio_dev *iio = i2c_get_clientdata(client); >         struct opt3001 *opt = iio_priv(iio); > @@ -808,7 +808,7 @@ static int opt3001_remove(struct i2c_client > *client) >         if (ret < 0) { >                 dev_err(opt->dev, "failed to read register %02x\n", >                                 OPT3001_CONFIGURATION); > -               return 0; > +               return; >         } >   >         reg = ret; > @@ -820,8 +820,6 @@ static int opt3001_remove(struct i2c_client > *client) >                 dev_err(opt->dev, "failed to write register %02x\n", >                                 OPT3001_CONFIGURATION); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id opt3001_id[] = { > diff --git a/drivers/iio/light/pa12203001.c > b/drivers/iio/light/pa12203001.c > index 772874e707ae..3cb2de51f4aa 100644 > --- a/drivers/iio/light/pa12203001.c > +++ b/drivers/iio/light/pa12203001.c > @@ -394,7 +394,7 @@ static int pa12203001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pa12203001_remove(struct i2c_client *client) > +static void pa12203001_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -408,8 +408,6 @@ static int pa12203001_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/rpr0521.c > b/drivers/iio/light/rpr0521.c > index dabdd05f0e2c..d1c16dd76058 100644 > --- a/drivers/iio/light/rpr0521.c > +++ b/drivers/iio/light/rpr0521.c > @@ -1041,7 +1041,7 @@ static int rpr0521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rpr0521_remove(struct i2c_client *client) > +static void rpr0521_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -1051,8 +1051,6 @@ static int rpr0521_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         rpr0521_poweroff(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int rpr0521_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/stk3310.c > b/drivers/iio/light/stk3310.c > index f7cc7a6c0c8d..7b8e0da6aabc 100644 > --- a/drivers/iio/light/stk3310.c > +++ b/drivers/iio/light/stk3310.c > @@ -649,14 +649,12 @@ static int stk3310_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk3310_remove(struct i2c_client *client) > +static void stk3310_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         stk3310_set_state(iio_priv(indio_dev), > STK3310_STATE_STANDBY); > - > -       return 0; >  } >   >  static int stk3310_suspend(struct device *dev) > diff --git a/drivers/iio/light/tcs3472.c > b/drivers/iio/light/tcs3472.c > index 823435f59bb6..db17fec634be 100644 > --- a/drivers/iio/light/tcs3472.c > +++ b/drivers/iio/light/tcs3472.c > @@ -559,7 +559,7 @@ static int tcs3472_powerdown(struct tcs3472_data > *data) >         return ret; >  } >   > -static int tcs3472_remove(struct i2c_client *client) > +static void tcs3472_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -568,8 +568,6 @@ static int tcs3472_remove(struct i2c_client > *client) >                 free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         tcs3472_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int tcs3472_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2563.c > b/drivers/iio/light/tsl2563.c > index 0a278eea36ca..1fa189fe6eb6 100644 > --- a/drivers/iio/light/tsl2563.c > +++ b/drivers/iio/light/tsl2563.c > @@ -796,7 +796,7 @@ static int tsl2563_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2563_remove(struct i2c_client *client) > +static void tsl2563_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2563_chip *chip = iio_priv(indio_dev); > @@ -810,8 +810,6 @@ static int tsl2563_remove(struct i2c_client > *client) >                                   chip->intr); >         flush_scheduled_work(); >         tsl2563_set_power(chip, 0); > - > -       return 0; >  } >   >  static int tsl2563_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2583.c > b/drivers/iio/light/tsl2583.c > index efb3c13cfc87..59e7ef624283 100644 > --- a/drivers/iio/light/tsl2583.c > +++ b/drivers/iio/light/tsl2583.c > @@ -873,7 +873,7 @@ static int tsl2583_probe(struct i2c_client > *clientp, >         return 0; >  } >   > -static int tsl2583_remove(struct i2c_client *client) > +static void tsl2583_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2583_chip *chip = iio_priv(indio_dev); > @@ -884,8 +884,6 @@ static int tsl2583_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF); > - > -       return 0; >  } >   >  static int __maybe_unused tsl2583_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl4531.c > b/drivers/iio/light/tsl4531.c > index 6ae1b27e50b6..090038fed889 100644 > --- a/drivers/iio/light/tsl4531.c > +++ b/drivers/iio/light/tsl4531.c > @@ -207,12 +207,10 @@ static int tsl4531_powerdown(struct i2c_client > *client) >                 TSL4531_MODE_POWERDOWN); >  } >   > -static int tsl4531_remove(struct i2c_client *client) > +static void tsl4531_remove(struct i2c_client *client) >  { >         iio_device_unregister(i2c_get_clientdata(client)); >         tsl4531_powerdown(client); > - > -       return 0; >  } >   >  static int tsl4531_suspend(struct device *dev) > diff --git a/drivers/iio/light/us5182d.c > b/drivers/iio/light/us5182d.c > index cbd9978540fa..ca6a03933e2e 100644 > --- a/drivers/iio/light/us5182d.c > +++ b/drivers/iio/light/us5182d.c > @@ -904,7 +904,7 @@ static int us5182d_probe(struct i2c_client > *client, >   >  } >   > -static int us5182d_remove(struct i2c_client *client) > +static void us5182d_remove(struct i2c_client *client) >  { >         struct us5182d_data *data = > iio_priv(i2c_get_clientdata(client)); >         int ret; > @@ -918,8 +918,6 @@ static int us5182d_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to shut down (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/vcnl4000.c > b/drivers/iio/light/vcnl4000.c > index 947a41b86173..9c492f9024e2 100644 > --- a/drivers/iio/light/vcnl4000.c > +++ b/drivers/iio/light/vcnl4000.c > @@ -1111,7 +1111,7 @@ static const struct of_device_id > vcnl_4000_of_match[] = { >  }; >  MODULE_DEVICE_TABLE(of, vcnl_4000_of_match); >   > -static int vcnl4000_remove(struct i2c_client *client) > +static void vcnl4000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct vcnl4000_data *data = iio_priv(indio_dev); > @@ -1126,8 +1126,6 @@ static int vcnl4000_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4000_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/vcnl4035.c > b/drivers/iio/light/vcnl4035.c > index 2aaec6bef64c..8282f19c9de7 100644 > --- a/drivers/iio/light/vcnl4035.c > +++ b/drivers/iio/light/vcnl4035.c > @@ -601,7 +601,7 @@ static int vcnl4035_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vcnl4035_remove(struct i2c_client *client) > +static void vcnl4035_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -616,8 +616,6 @@ static int vcnl4035_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device into > standby (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4035_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/veml6070.c > b/drivers/iio/light/veml6070.c > index 1e55e09a8d16..cfa4e9e7c803 100644 > --- a/drivers/iio/light/veml6070.c > +++ b/drivers/iio/light/veml6070.c > @@ -180,15 +180,13 @@ static int veml6070_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int veml6070_remove(struct i2c_client *client) > +static void veml6070_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct veml6070_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         i2c_unregister_device(data->client2); > - > -       return 0; >  } >   >  static const struct i2c_device_id veml6070_id[] = { > diff --git a/drivers/iio/magnetometer/ak8974.c > b/drivers/iio/magnetometer/ak8974.c > index e54feacfb980..1064859fbf83 100644 > --- a/drivers/iio/magnetometer/ak8974.c > +++ b/drivers/iio/magnetometer/ak8974.c > @@ -969,7 +969,7 @@ static int ak8974_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int ak8974_remove(struct i2c_client *i2c) > +static void ak8974_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct ak8974 *ak8974 = iio_priv(indio_dev); > @@ -981,8 +981,6 @@ static int ak8974_remove(struct i2c_client *i2c) >         pm_runtime_disable(&i2c->dev); >         ak8974_set_power(ak8974, AK8974_PWR_OFF); >         regulator_bulk_disable(ARRAY_SIZE(ak8974->regs), ak8974- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused ak8974_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/ak8975.c > b/drivers/iio/magnetometer/ak8975.c > index 2432e697150c..caf03a2a98a5 100644 > --- a/drivers/iio/magnetometer/ak8975.c > +++ b/drivers/iio/magnetometer/ak8975.c > @@ -1018,7 +1018,7 @@ static int ak8975_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ak8975_remove(struct i2c_client *client) > +static void ak8975_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ak8975_data *data = iio_priv(indio_dev); > @@ -1030,8 +1030,6 @@ static int ak8975_remove(struct i2c_client > *client) >         iio_triggered_buffer_cleanup(indio_dev); >         ak8975_set_mode(data, POWER_DOWN); >         ak8975_power_off(data); > - > -       return 0; >  } >   >  static int ak8975_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c > b/drivers/iio/magnetometer/bmc150_magn_i2c.c > index 65c004411d0f..570deaa87836 100644 > --- a/drivers/iio/magnetometer/bmc150_magn_i2c.c > +++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c > @@ -34,11 +34,9 @@ static int bmc150_magn_i2c_probe(struct i2c_client > *client, >         return bmc150_magn_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmc150_magn_i2c_remove(struct i2c_client *client) > +static void bmc150_magn_i2c_remove(struct i2c_client *client) >  { >         bmc150_magn_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_magn_acpi_match[] = { > diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c > b/drivers/iio/magnetometer/hmc5843_i2c.c > index 8d2ff8fc204d..fe5e8415b2f2 100644 > --- a/drivers/iio/magnetometer/hmc5843_i2c.c > +++ b/drivers/iio/magnetometer/hmc5843_i2c.c > @@ -65,11 +65,9 @@ static int hmc5843_i2c_probe(struct i2c_client > *cli, >                         id->driver_data, id->name); >  } >   > -static int hmc5843_i2c_remove(struct i2c_client *client) > +static void hmc5843_i2c_remove(struct i2c_client *client) >  { >         hmc5843_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id hmc5843_id[] = { > diff --git a/drivers/iio/magnetometer/mag3110.c > b/drivers/iio/magnetometer/mag3110.c > index 226439d0bfb5..b870ad803862 100644 > --- a/drivers/iio/magnetometer/mag3110.c > +++ b/drivers/iio/magnetometer/mag3110.c > @@ -559,7 +559,7 @@ static int mag3110_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mag3110_remove(struct i2c_client *client) > +static void mag3110_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mag3110_data *data = iio_priv(indio_dev); > @@ -569,8 +569,6 @@ static int mag3110_remove(struct i2c_client > *client) >         mag3110_standby(iio_priv(indio_dev)); >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static int mag3110_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/yamaha-yas530.c > b/drivers/iio/magnetometer/yamaha-yas530.c > index b2bc637150bf..8c16178d4820 100644 > --- a/drivers/iio/magnetometer/yamaha-yas530.c > +++ b/drivers/iio/magnetometer/yamaha-yas530.c > @@ -943,7 +943,7 @@ static int yas5xx_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int yas5xx_remove(struct i2c_client *i2c) > +static void yas5xx_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct yas5xx *yas5xx = iio_priv(indio_dev); > @@ -961,8 +961,6 @@ static int yas5xx_remove(struct i2c_client *i2c) >         pm_runtime_disable(dev); >         gpiod_set_value_cansleep(yas5xx->reset, 1); >         regulator_bulk_disable(ARRAY_SIZE(yas5xx->regs), yas5xx- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused yas5xx_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/potentiostat/lmp91000.c > b/drivers/iio/potentiostat/lmp91000.c > index fe514f0b5506..5ec7060d31d9 100644 > --- a/drivers/iio/potentiostat/lmp91000.c > +++ b/drivers/iio/potentiostat/lmp91000.c > @@ -384,7 +384,7 @@ static int lmp91000_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lmp91000_remove(struct i2c_client *client) > +static void lmp91000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct lmp91000_data *data = iio_priv(indio_dev); > @@ -396,8 +396,6 @@ static int lmp91000_remove(struct i2c_client > *client) >   >         iio_triggered_buffer_cleanup(indio_dev); >         iio_trigger_unregister(data->trig); > - > -       return 0; >  } >   >  static const struct of_device_id lmp91000_of_match[] = { > diff --git a/drivers/iio/pressure/mpl3115.c > b/drivers/iio/pressure/mpl3115.c > index d4f89e4babed..2f22aba61e4d 100644 > --- a/drivers/iio/pressure/mpl3115.c > +++ b/drivers/iio/pressure/mpl3115.c > @@ -290,15 +290,13 @@ static int mpl3115_standby(struct mpl3115_data > *data) >                 data->ctrl_reg1 & ~MPL3115_CTRL_ACTIVE); >  } >   > -static int mpl3115_remove(struct i2c_client *client) > +static void mpl3115_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         mpl3115_standby(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int mpl3115_suspend(struct device *dev) > diff --git a/drivers/iio/pressure/ms5611_i2c.c > b/drivers/iio/pressure/ms5611_i2c.c > index 3b1de71e0d15..b681a4183909 100644 > --- a/drivers/iio/pressure/ms5611_i2c.c > +++ b/drivers/iio/pressure/ms5611_i2c.c > @@ -105,11 +105,9 @@ static int ms5611_i2c_probe(struct i2c_client > *client, >         return ms5611_probe(indio_dev, &client->dev, id->name, id- > >driver_data); >  } >   > -static int ms5611_i2c_remove(struct i2c_client *client) > +static void ms5611_i2c_remove(struct i2c_client *client) >  { >         ms5611_remove(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  static const struct of_device_id ms5611_i2c_matches[] = { > diff --git a/drivers/iio/pressure/zpa2326_i2c.c > b/drivers/iio/pressure/zpa2326_i2c.c > index 0db0860d386b..f26dd8cbb387 100644 > --- a/drivers/iio/pressure/zpa2326_i2c.c > +++ b/drivers/iio/pressure/zpa2326_i2c.c > @@ -53,11 +53,9 @@ static int zpa2326_probe_i2c(struct > i2c_client          *client, >                              zpa2326_i2c_hwid(client), regmap); >  } >   > -static int zpa2326_remove_i2c(struct i2c_client *client) > +static void zpa2326_remove_i2c(struct i2c_client *client) >  { >         zpa2326_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id zpa2326_i2c_ids[] = { > diff --git a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > index 648ae576d6fa..791a33d5286c 100644 > --- a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > +++ b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > @@ -311,7 +311,7 @@ static int lidar_probe(struct i2c_client *client, >         return ret; >  } >   > -static int lidar_remove(struct i2c_client *client) > +static void lidar_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -320,8 +320,6 @@ static int lidar_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id lidar_id[] = { > diff --git a/drivers/iio/proximity/sx9500.c > b/drivers/iio/proximity/sx9500.c > index 42589d6200ad..d4670864ddc7 100644 > --- a/drivers/iio/proximity/sx9500.c > +++ b/drivers/iio/proximity/sx9500.c > @@ -979,7 +979,7 @@ static int sx9500_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sx9500_remove(struct i2c_client *client) > +static void sx9500_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sx9500_data *data = iio_priv(indio_dev); > @@ -989,8 +989,6 @@ static int sx9500_remove(struct i2c_client > *client) >         if (client->irq > 0) >                 iio_trigger_unregister(data->trig); >         kfree(data->buffer); > - > -       return 0; >  } >   >  static int sx9500_suspend(struct device *dev) > diff --git a/drivers/iio/temperature/mlx90614.c > b/drivers/iio/temperature/mlx90614.c > index c253a5315988..0808bb865928 100644 > --- a/drivers/iio/temperature/mlx90614.c > +++ b/drivers/iio/temperature/mlx90614.c > @@ -571,7 +571,7 @@ static int mlx90614_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90614_remove(struct i2c_client *client) > +static void mlx90614_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90614_data *data = iio_priv(indio_dev); > @@ -584,8 +584,6 @@ static int mlx90614_remove(struct i2c_client > *client) >                         mlx90614_sleep(data); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90614_id[] = { > diff --git a/drivers/iio/temperature/mlx90632.c > b/drivers/iio/temperature/mlx90632.c > index 7ee7ff8047a4..e8ef47147e2b 100644 > --- a/drivers/iio/temperature/mlx90632.c > +++ b/drivers/iio/temperature/mlx90632.c > @@ -924,7 +924,7 @@ static int mlx90632_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90632_remove(struct i2c_client *client) > +static void mlx90632_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90632_data *data = iio_priv(indio_dev); > @@ -936,8 +936,6 @@ static int mlx90632_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         mlx90632_sleep(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90632_id[] = { > diff --git a/drivers/input/joystick/as5011.c > b/drivers/input/joystick/as5011.c > index 34bcd99a46f5..2beda29021a3 100644 > --- a/drivers/input/joystick/as5011.c > +++ b/drivers/input/joystick/as5011.c > @@ -327,7 +327,7 @@ static int as5011_probe(struct i2c_client > *client, >         return error; >  } >   > -static int as5011_remove(struct i2c_client *client) > +static void as5011_remove(struct i2c_client *client) >  { >         struct as5011_device *as5011 = i2c_get_clientdata(client); >   > @@ -337,8 +337,6 @@ static int as5011_remove(struct i2c_client > *client) >   >         input_unregister_device(as5011->input_dev); >         kfree(as5011); > - > -       return 0; >  } >   >  static const struct i2c_device_id as5011_id[] = { > diff --git a/drivers/input/keyboard/adp5588-keys.c > b/drivers/input/keyboard/adp5588-keys.c > index 1592da4de336..b5666d650994 100644 > --- a/drivers/input/keyboard/adp5588-keys.c > +++ b/drivers/input/keyboard/adp5588-keys.c > @@ -598,7 +598,7 @@ static int adp5588_probe(struct i2c_client > *client, >         return error; >  } >   > -static int adp5588_remove(struct i2c_client *client) > +static void adp5588_remove(struct i2c_client *client) >  { >         struct adp5588_kpad *kpad = i2c_get_clientdata(client); >   > @@ -608,8 +608,6 @@ static int adp5588_remove(struct i2c_client > *client) >         input_unregister_device(kpad->input); >         adp5588_gpio_remove(kpad); >         kfree(kpad); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/keyboard/lm8323.c > b/drivers/input/keyboard/lm8323.c > index 6c38d034ec6e..407dd2ad6302 100644 > --- a/drivers/input/keyboard/lm8323.c > +++ b/drivers/input/keyboard/lm8323.c > @@ -752,7 +752,7 @@ static int lm8323_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8323_remove(struct i2c_client *client) > +static void lm8323_remove(struct i2c_client *client) >  { >         struct lm8323_chip *lm = i2c_get_clientdata(client); >         int i; > @@ -769,8 +769,6 @@ static int lm8323_remove(struct i2c_client > *client) >                         led_classdev_unregister(&lm->pwm[i].cdev); >   >         kfree(lm); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/lm8333.c > b/drivers/input/keyboard/lm8333.c > index 7c5f8c6bb957..9dac22c14125 100644 > --- a/drivers/input/keyboard/lm8333.c > +++ b/drivers/input/keyboard/lm8333.c > @@ -200,15 +200,13 @@ static int lm8333_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8333_remove(struct i2c_client *client) > +static void lm8333_remove(struct i2c_client *client) >  { >         struct lm8333 *lm8333 = i2c_get_clientdata(client); >   >         free_irq(client->irq, lm8333); >         input_unregister_device(lm8333->input); >         kfree(lm8333); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm8333_id[] = { > diff --git a/drivers/input/keyboard/mcs_touchkey.c > b/drivers/input/keyboard/mcs_touchkey.c > index 8cb0062b98e4..ac1637a3389e 100644 > --- a/drivers/input/keyboard/mcs_touchkey.c > +++ b/drivers/input/keyboard/mcs_touchkey.c > @@ -194,7 +194,7 @@ static int mcs_touchkey_probe(struct i2c_client > *client, >         return error; >  } >   > -static int mcs_touchkey_remove(struct i2c_client *client) > +static void mcs_touchkey_remove(struct i2c_client *client) >  { >         struct mcs_touchkey_data *data = i2c_get_clientdata(client); >   > @@ -203,8 +203,6 @@ static int mcs_touchkey_remove(struct i2c_client > *client) >                 data->poweron(false); >         input_unregister_device(data->input_dev); >         kfree(data); > - > -       return 0; >  } >   >  static void mcs_touchkey_shutdown(struct i2c_client *client) > diff --git a/drivers/input/keyboard/qt1070.c > b/drivers/input/keyboard/qt1070.c > index 7174e1df1ee3..9fcce18b1d65 100644 > --- a/drivers/input/keyboard/qt1070.c > +++ b/drivers/input/keyboard/qt1070.c > @@ -216,7 +216,7 @@ static int qt1070_probe(struct i2c_client > *client, >         return err; >  } >   > -static int qt1070_remove(struct i2c_client *client) > +static void qt1070_remove(struct i2c_client *client) >  { >         struct qt1070_data *data = i2c_get_clientdata(client); >   > @@ -225,8 +225,6 @@ static int qt1070_remove(struct i2c_client > *client) >   >         input_unregister_device(data->input); >         kfree(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/qt2160.c > b/drivers/input/keyboard/qt2160.c > index 32d4a076eaa3..382b1519218c 100644 > --- a/drivers/input/keyboard/qt2160.c > +++ b/drivers/input/keyboard/qt2160.c > @@ -432,7 +432,7 @@ static int qt2160_probe(struct i2c_client > *client, >         return error; >  } >   > -static int qt2160_remove(struct i2c_client *client) > +static void qt2160_remove(struct i2c_client *client) >  { >         struct qt2160_data *qt2160 = i2c_get_clientdata(client); >   > @@ -446,8 +446,6 @@ static int qt2160_remove(struct i2c_client > *client) >   >         input_unregister_device(qt2160->input); >         kfree(qt2160); > - > -       return 0; >  } >   >  static const struct i2c_device_id qt2160_idtable[] = { > diff --git a/drivers/input/keyboard/tca6416-keypad.c > b/drivers/input/keyboard/tca6416-keypad.c > index 2a9755910065..afcdfbb002ff 100644 > --- a/drivers/input/keyboard/tca6416-keypad.c > +++ b/drivers/input/keyboard/tca6416-keypad.c > @@ -307,7 +307,7 @@ static int tca6416_keypad_probe(struct i2c_client > *client, >         return error; >  } >   > -static int tca6416_keypad_remove(struct i2c_client *client) > +static void tca6416_keypad_remove(struct i2c_client *client) >  { >         struct tca6416_keypad_chip *chip = > i2c_get_clientdata(client); >   > @@ -318,8 +318,6 @@ static int tca6416_keypad_remove(struct > i2c_client *client) >   >         input_unregister_device(chip->input); >         kfree(chip); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/misc/adxl34x-i2c.c > b/drivers/input/misc/adxl34x-i2c.c > index a3b5f88d2bd1..5be636aaa94f 100644 > --- a/drivers/input/misc/adxl34x-i2c.c > +++ b/drivers/input/misc/adxl34x-i2c.c > @@ -99,13 +99,11 @@ static int adxl34x_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adxl34x_i2c_remove(struct i2c_client *client) > +static void adxl34x_i2c_remove(struct i2c_client *client) >  { >         struct adxl34x *ac = i2c_get_clientdata(client); >   >         adxl34x_remove(ac); > - > -       return 0; >  } >   >  static int __maybe_unused adxl34x_i2c_suspend(struct device *dev) > diff --git a/drivers/input/misc/bma150.c > b/drivers/input/misc/bma150.c > index a9d984da95f3..84fe394da7a6 100644 > --- a/drivers/input/misc/bma150.c > +++ b/drivers/input/misc/bma150.c > @@ -513,11 +513,9 @@ static int bma150_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bma150_remove(struct i2c_client *client) > +static void bma150_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused bma150_suspend(struct device *dev) > diff --git a/drivers/input/misc/cma3000_d0x_i2c.c > b/drivers/input/misc/cma3000_d0x_i2c.c > index 03fb49127c3a..3b23210c46b7 100644 > --- a/drivers/input/misc/cma3000_d0x_i2c.c > +++ b/drivers/input/misc/cma3000_d0x_i2c.c > @@ -58,13 +58,11 @@ static int cma3000_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cma3000_i2c_remove(struct i2c_client *client) > +static void cma3000_i2c_remove(struct i2c_client *client) >  { >         struct cma3000_accl_data *data = i2c_get_clientdata(client); >   >         cma3000_exit(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/misc/pcf8574_keypad.c > b/drivers/input/misc/pcf8574_keypad.c > index abc423165522..cfd6640e4f82 100644 > --- a/drivers/input/misc/pcf8574_keypad.c > +++ b/drivers/input/misc/pcf8574_keypad.c > @@ -157,7 +157,7 @@ static int pcf8574_kp_probe(struct i2c_client > *client, const struct i2c_device_i >         return ret; >  } >   > -static int pcf8574_kp_remove(struct i2c_client *client) > +static void pcf8574_kp_remove(struct i2c_client *client) >  { >         struct kp_data *lp = i2c_get_clientdata(client); >   > @@ -165,8 +165,6 @@ static int pcf8574_kp_remove(struct i2c_client > *client) >   >         input_unregister_device(lp->idev); >         kfree(lp); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/mouse/synaptics_i2c.c > b/drivers/input/mouse/synaptics_i2c.c > index fa304648d611..987ee67a1045 100644 > --- a/drivers/input/mouse/synaptics_i2c.c > +++ b/drivers/input/mouse/synaptics_i2c.c > @@ -587,7 +587,7 @@ static int synaptics_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int synaptics_i2c_remove(struct i2c_client *client) > +static void synaptics_i2c_remove(struct i2c_client *client) >  { >         struct synaptics_i2c *touch = i2c_get_clientdata(client); >   > @@ -596,8 +596,6 @@ static int synaptics_i2c_remove(struct i2c_client > *client) >   >         input_unregister_device(touch->input); >         kfree(touch); > - > -       return 0; >  } >   >  static int __maybe_unused synaptics_i2c_suspend(struct device *dev) > diff --git a/drivers/input/rmi4/rmi_smbus.c > b/drivers/input/rmi4/rmi_smbus.c > index 2407ea43de59..c130468541b7 100644 > --- a/drivers/input/rmi4/rmi_smbus.c > +++ b/drivers/input/rmi4/rmi_smbus.c > @@ -338,13 +338,11 @@ static int rmi_smb_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rmi_smb_remove(struct i2c_client *client) > +static void rmi_smb_remove(struct i2c_client *client) >  { >         struct rmi_smb_xport *rmi_smb = i2c_get_clientdata(client); >   >         rmi_unregister_transport_device(&rmi_smb->xport); > - > -       return 0; >  } >   >  static int __maybe_unused rmi_smb_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c > b/drivers/input/touchscreen/atmel_mxt_ts.c > index eb66cd2689b7..4eedea08b0b5 100644 > --- a/drivers/input/touchscreen/atmel_mxt_ts.c > +++ b/drivers/input/touchscreen/atmel_mxt_ts.c > @@ -3284,7 +3284,7 @@ static int mxt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return error; >  } >   > -static int mxt_remove(struct i2c_client *client) > +static void mxt_remove(struct i2c_client *client) >  { >         struct mxt_data *data = i2c_get_clientdata(client); >   > @@ -3294,8 +3294,6 @@ static int mxt_remove(struct i2c_client > *client) >         mxt_free_object_table(data); >         regulator_bulk_disable(ARRAY_SIZE(data->regulators), >                                data->regulators); > - > -       return 0; >  } >   >  static int __maybe_unused mxt_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/bu21013_ts.c > b/drivers/input/touchscreen/bu21013_ts.c > index 2f1f0d7607f8..34f422e246ef 100644 > --- a/drivers/input/touchscreen/bu21013_ts.c > +++ b/drivers/input/touchscreen/bu21013_ts.c > @@ -552,15 +552,13 @@ static int bu21013_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bu21013_remove(struct i2c_client *client) > +static void bu21013_remove(struct i2c_client *client) >  { >         struct bu21013_ts *ts = i2c_get_clientdata(client); >   >         /* Make sure IRQ will exit quickly even if there is contact > */ >         ts->touch_stopped = true; >         /* The resources will be freed by devm */ > - > -       return 0; >  } >   >  static int __maybe_unused bu21013_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/cyttsp4_i2c.c > b/drivers/input/touchscreen/cyttsp4_i2c.c > index c65ccb2f4716..28ae7c15397a 100644 > --- a/drivers/input/touchscreen/cyttsp4_i2c.c > +++ b/drivers/input/touchscreen/cyttsp4_i2c.c > @@ -43,13 +43,11 @@ static int cyttsp4_i2c_probe(struct i2c_client > *client, >         return PTR_ERR_OR_ZERO(ts); >  } >   > -static int cyttsp4_i2c_remove(struct i2c_client *client) > +static void cyttsp4_i2c_remove(struct i2c_client *client) >  { >         struct cyttsp4 *ts = i2c_get_clientdata(client); >   >         cyttsp4_remove(ts); > - > -       return 0; >  } >   >  static const struct i2c_device_id cyttsp4_i2c_id[] = { > diff --git a/drivers/input/touchscreen/edt-ft5x06.c > b/drivers/input/touchscreen/edt-ft5x06.c > index bb2e1cbffba7..0c325132a955 100644 > --- a/drivers/input/touchscreen/edt-ft5x06.c > +++ b/drivers/input/touchscreen/edt-ft5x06.c > @@ -1266,13 +1266,11 @@ static int edt_ft5x06_ts_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int edt_ft5x06_ts_remove(struct i2c_client *client) > +static void edt_ft5x06_ts_remove(struct i2c_client *client) >  { >         struct edt_ft5x06_ts_data *tsdata = > i2c_get_clientdata(client); >   >         edt_ft5x06_ts_teardown_debugfs(tsdata); > - > -       return 0; >  } >   >  static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/goodix.c > b/drivers/input/touchscreen/goodix.c > index 3ad9870db108..1617dd931876 100644 > --- a/drivers/input/touchscreen/goodix.c > +++ b/drivers/input/touchscreen/goodix.c > @@ -1383,14 +1383,12 @@ static int goodix_ts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int goodix_ts_remove(struct i2c_client *client) > +static void goodix_ts_remove(struct i2c_client *client) >  { >         struct goodix_ts_data *ts = i2c_get_clientdata(client); >   >         if (ts->load_cfg_from_disk) >                 wait_for_completion(&ts->firmware_loading_complete); > - > -       return 0; >  } >   >  static int __maybe_unused goodix_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/migor_ts.c > b/drivers/input/touchscreen/migor_ts.c > index 42d3fd7e04d7..79cd660d879e 100644 > --- a/drivers/input/touchscreen/migor_ts.c > +++ b/drivers/input/touchscreen/migor_ts.c > @@ -176,7 +176,7 @@ static int migor_ts_probe(struct i2c_client > *client, >         return error; >  } >   > -static int migor_ts_remove(struct i2c_client *client) > +static void migor_ts_remove(struct i2c_client *client) >  { >         struct migor_ts_priv *priv = i2c_get_clientdata(client); >   > @@ -185,8 +185,6 @@ static int migor_ts_remove(struct i2c_client > *client) >         kfree(priv); >   >         dev_set_drvdata(&client->dev, NULL); > - > -       return 0; >  } >   >  static int __maybe_unused migor_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/s6sy761.c > b/drivers/input/touchscreen/s6sy761.c > index 85a1f465c097..1a7d00289b4c 100644 > --- a/drivers/input/touchscreen/s6sy761.c > +++ b/drivers/input/touchscreen/s6sy761.c > @@ -475,11 +475,9 @@ static int s6sy761_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int s6sy761_remove(struct i2c_client *client) > +static void s6sy761_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused s6sy761_runtime_suspend(struct device > *dev) > diff --git a/drivers/input/touchscreen/stmfts.c > b/drivers/input/touchscreen/stmfts.c > index c175d44c52f3..d5bd170808fb 100644 > --- a/drivers/input/touchscreen/stmfts.c > +++ b/drivers/input/touchscreen/stmfts.c > @@ -738,11 +738,9 @@ static int stmfts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stmfts_remove(struct i2c_client *client) > +static void stmfts_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused stmfts_runtime_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/tsc2004.c > b/drivers/input/touchscreen/tsc2004.c > index 9fdd870c4c0b..a9565353ee98 100644 > --- a/drivers/input/touchscreen/tsc2004.c > +++ b/drivers/input/touchscreen/tsc2004.c > @@ -43,11 +43,9 @@ static int tsc2004_probe(struct i2c_client *i2c, >                              tsc2004_cmd); >  } >   > -static int tsc2004_remove(struct i2c_client *i2c) > +static void tsc2004_remove(struct i2c_client *i2c) >  { >         tsc200x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tsc2004_idtable[] = { > diff --git a/drivers/leds/flash/leds-as3645a.c > b/drivers/leds/flash/leds-as3645a.c > index aa3f82be0a9c..bb2249771acb 100644 > --- a/drivers/leds/flash/leds-as3645a.c > +++ b/drivers/leds/flash/leds-as3645a.c > @@ -724,7 +724,7 @@ static int as3645a_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int as3645a_remove(struct i2c_client *client) > +static void as3645a_remove(struct i2c_client *client) >  { >         struct as3645a *flash = i2c_get_clientdata(client); >   > @@ -740,8 +740,6 @@ static int as3645a_remove(struct i2c_client > *client) >   >         fwnode_handle_put(flash->flash_node); >         fwnode_handle_put(flash->indicator_node); > - > -       return 0; >  } >   >  static const struct i2c_device_id as3645a_id_table[] = { > diff --git a/drivers/leds/flash/leds-lm3601x.c > b/drivers/leds/flash/leds-lm3601x.c > index 37e1d6e68687..78730e066a73 100644 > --- a/drivers/leds/flash/leds-lm3601x.c > +++ b/drivers/leds/flash/leds-lm3601x.c > @@ -440,7 +440,7 @@ static int lm3601x_probe(struct i2c_client > *client) >         return lm3601x_register_leds(led, fwnode); >  } >   > -static int lm3601x_remove(struct i2c_client *client) > +static void lm3601x_remove(struct i2c_client *client) >  { >         struct lm3601x_led *led = i2c_get_clientdata(client); >         int ret; > @@ -450,8 +450,6 @@ static int lm3601x_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, >                          "Failed to put into standby (%pe)\n", > ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3601x_id[] = { > diff --git a/drivers/leds/flash/leds-rt4505.c > b/drivers/leds/flash/leds-rt4505.c > index ee129ab7255d..e404fe8b0314 100644 > --- a/drivers/leds/flash/leds-rt4505.c > +++ b/drivers/leds/flash/leds-rt4505.c > @@ -393,12 +393,11 @@ static int rt4505_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int rt4505_remove(struct i2c_client *client) > +static void rt4505_remove(struct i2c_client *client) >  { >         struct rt4505_priv *priv = i2c_get_clientdata(client); >   >         v4l2_flash_release(priv->v4l2_flash); > -       return 0; >  } >   >  static void rt4505_shutdown(struct i2c_client *client) > diff --git a/drivers/leds/leds-an30259a.c b/drivers/leds/leds- > an30259a.c > index a0df1fb28774..e072ee5409f7 100644 > --- a/drivers/leds/leds-an30259a.c > +++ b/drivers/leds/leds-an30259a.c > @@ -334,13 +334,11 @@ static int an30259a_probe(struct i2c_client > *client) >         return err; >  } >   > -static int an30259a_remove(struct i2c_client *client) > +static void an30259a_remove(struct i2c_client *client) >  { >         struct an30259a *chip = i2c_get_clientdata(client); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id an30259a_match_table[] = { > diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c > index 80d937454aee..0b52fc9097c6 100644 > --- a/drivers/leds/leds-aw2013.c > +++ b/drivers/leds/leds-aw2013.c > @@ -401,15 +401,13 @@ static int aw2013_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int aw2013_remove(struct i2c_client *client) > +static void aw2013_remove(struct i2c_client *client) >  { >         struct aw2013 *chip = i2c_get_clientdata(client); >   >         aw2013_chip_disable(chip); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id aw2013_match_table[] = { > diff --git a/drivers/leds/leds-bd2802.c b/drivers/leds/leds-bd2802.c > index 8bbaef5a2986..2b6678f6bd56 100644 > --- a/drivers/leds/leds-bd2802.c > +++ b/drivers/leds/leds-bd2802.c > @@ -722,7 +722,7 @@ static int bd2802_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bd2802_remove(struct i2c_client *client) > +static void bd2802_remove(struct i2c_client *client) >  { >         struct bd2802_led *led = i2c_get_clientdata(client); >         int i; > @@ -733,8 +733,6 @@ static int bd2802_remove(struct i2c_client > *client) >                 bd2802_disable_adv_conf(led); >         for (i = 0; i < ARRAY_SIZE(bd2802_attributes); i++) >                 device_remove_file(&led->client->dev, > bd2802_attributes[i]); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/leds/leds-blinkm.c b/drivers/leds/leds-blinkm.c > index bd7d0d5cf3b6..3fb6a2fdaefa 100644 > --- a/drivers/leds/leds-blinkm.c > +++ b/drivers/leds/leds-blinkm.c > @@ -677,7 +677,7 @@ static int blinkm_probe(struct i2c_client > *client, >         return err; >  } >   > -static int blinkm_remove(struct i2c_client *client) > +static void blinkm_remove(struct i2c_client *client) >  { >         struct blinkm_data *data = i2c_get_clientdata(client); >         int ret = 0; > @@ -716,7 +716,6 @@ static int blinkm_remove(struct i2c_client > *client) >                 dev_err(&client->dev, "Failure in blinkm_remove > ignored. Continuing.\n"); >   >         sysfs_remove_group(&client->dev.kobj, &blinkm_group); > -       return 0; >  } >   >  static const struct i2c_device_id blinkm_id[] = { > diff --git a/drivers/leds/leds-is31fl319x.c b/drivers/leds/leds- > is31fl319x.c > index 4161b9dd7e48..7aee62211750 100644 > --- a/drivers/leds/leds-is31fl319x.c > +++ b/drivers/leds/leds-is31fl319x.c > @@ -414,12 +414,11 @@ static int is31fl319x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int is31fl319x_remove(struct i2c_client *client) > +static void is31fl319x_remove(struct i2c_client *client) >  { >         struct is31fl319x_chip *is31 = i2c_get_clientdata(client); >   >         mutex_destroy(&is31->lock); > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-is31fl32xx.c b/drivers/leds/leds- > is31fl32xx.c > index fc63fce38c19..0d219c1ac3b5 100644 > --- a/drivers/leds/leds-is31fl32xx.c > +++ b/drivers/leds/leds-is31fl32xx.c > @@ -457,7 +457,7 @@ static int is31fl32xx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int is31fl32xx_remove(struct i2c_client *client) > +static void is31fl32xx_remove(struct i2c_client *client) >  { >         struct is31fl32xx_priv *priv = i2c_get_clientdata(client); >         int ret; > @@ -466,8 +466,6 @@ static int is31fl32xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to reset registers on > removal (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-lm3530.c b/drivers/leds/leds-lm3530.c > index e72393534b72..ba906c253c7f 100644 > --- a/drivers/leds/leds-lm3530.c > +++ b/drivers/leds/leds-lm3530.c > @@ -470,13 +470,12 @@ static int lm3530_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3530_remove(struct i2c_client *client) > +static void lm3530_remove(struct i2c_client *client) >  { >         struct lm3530_data *drvdata = i2c_get_clientdata(client); >   >         lm3530_led_disable(drvdata); >         led_classdev_unregister(&drvdata->led_dev); > -       return 0; >  } >   >  static const struct i2c_device_id lm3530_id[] = { > diff --git a/drivers/leds/leds-lm3532.c b/drivers/leds/leds-lm3532.c > index beb53040e09e..db64d44bcbbf 100644 > --- a/drivers/leds/leds-lm3532.c > +++ b/drivers/leds/leds-lm3532.c > @@ -704,7 +704,7 @@ static int lm3532_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3532_remove(struct i2c_client *client) > +static void lm3532_remove(struct i2c_client *client) >  { >         struct lm3532_data *drvdata = i2c_get_clientdata(client); >   > @@ -712,8 +712,6 @@ static int lm3532_remove(struct i2c_client > *client) >   >         if (drvdata->enable_gpio) >                 gpiod_direction_output(drvdata->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id of_lm3532_leds_match[] = { > diff --git a/drivers/leds/leds-lm355x.c b/drivers/leds/leds-lm355x.c > index 2d3e11845ba5..daa35927b301 100644 > --- a/drivers/leds/leds-lm355x.c > +++ b/drivers/leds/leds-lm355x.c > @@ -491,7 +491,7 @@ static int lm355x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm355x_remove(struct i2c_client *client) > +static void lm355x_remove(struct i2c_client *client) >  { >         struct lm355x_chip_data *chip = i2c_get_clientdata(client); >         struct lm355x_reg_data *preg = chip->regs; > @@ -501,8 +501,6 @@ static int lm355x_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         dev_info(&client->dev, "%s is removed\n", lm355x_name[chip- > >type]); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm355x_id[] = { > diff --git a/drivers/leds/leds-lm3642.c b/drivers/leds/leds-lm3642.c > index 435309154e6b..428a5d928150 100644 > --- a/drivers/leds/leds-lm3642.c > +++ b/drivers/leds/leds-lm3642.c > @@ -380,7 +380,7 @@ static int lm3642_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm3642_remove(struct i2c_client *client) > +static void lm3642_remove(struct i2c_client *client) >  { >         struct lm3642_chip_data *chip = i2c_get_clientdata(client); >   > @@ -388,7 +388,6 @@ static int lm3642_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         regmap_write(chip->regmap, REG_ENABLE, 0); > -       return 0; >  } >   >  static const struct i2c_device_id lm3642_id[] = { > diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds- > lm3692x.c > index 87cd24ce3f95..54b4662bff41 100644 > --- a/drivers/leds/leds-lm3692x.c > +++ b/drivers/leds/leds-lm3692x.c > @@ -491,14 +491,12 @@ static int lm3692x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3692x_remove(struct i2c_client *client) > +static void lm3692x_remove(struct i2c_client *client) >  { >         struct lm3692x_led *led = i2c_get_clientdata(client); >   >         lm3692x_leds_disable(led); >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3692x_id[] = { > diff --git a/drivers/leds/leds-lm3697.c b/drivers/leds/leds-lm3697.c > index 3ecf90fbc06c..71231a60eebc 100644 > --- a/drivers/leds/leds-lm3697.c > +++ b/drivers/leds/leds-lm3697.c > @@ -337,7 +337,7 @@ static int lm3697_probe(struct i2c_client > *client, >         return lm3697_init(led); >  } >   > -static int lm3697_remove(struct i2c_client *client) > +static void lm3697_remove(struct i2c_client *client) >  { >         struct lm3697 *led = i2c_get_clientdata(client); >         struct device *dev = &led->client->dev; > @@ -358,8 +358,6 @@ static int lm3697_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3697_id[] = { > diff --git a/drivers/leds/leds-lp3944.c b/drivers/leds/leds-lp3944.c > index 437c711b2a27..673ad8c04f41 100644 > --- a/drivers/leds/leds-lp3944.c > +++ b/drivers/leds/leds-lp3944.c > @@ -397,7 +397,7 @@ static int lp3944_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3944_remove(struct i2c_client *client) > +static void lp3944_remove(struct i2c_client *client) >  { >         struct lp3944_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct lp3944_data *data = i2c_get_clientdata(client); > @@ -414,8 +414,6 @@ static int lp3944_remove(struct i2c_client > *client) >                 default: >                         break; >                 } > - > -       return 0; >  } >   >  /* lp3944 i2c driver struct */ > diff --git a/drivers/leds/leds-lp3952.c b/drivers/leds/leds-lp3952.c > index 6ee9131fbf25..bf0ad1b5ce24 100644 > --- a/drivers/leds/leds-lp3952.c > +++ b/drivers/leds/leds-lp3952.c > @@ -255,15 +255,13 @@ static int lp3952_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3952_remove(struct i2c_client *client) > +static void lp3952_remove(struct i2c_client *client) >  { >         struct lp3952_led_array *priv; >   >         priv = i2c_get_clientdata(client); >         lp3952_on_off(priv, LP3952_LED_ALL, false); >         gpiod_set_value(priv->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp3952_id[] = { > diff --git a/drivers/leds/leds-lp50xx.c b/drivers/leds/leds-lp50xx.c > index e129dcc656b8..28d6b39fa72d 100644 > --- a/drivers/leds/leds-lp50xx.c > +++ b/drivers/leds/leds-lp50xx.c > @@ -563,7 +563,7 @@ static int lp50xx_probe(struct i2c_client > *client) >         return lp50xx_probe_dt(led); >  } >   > -static int lp50xx_remove(struct i2c_client *client) > +static void lp50xx_remove(struct i2c_client *client) >  { >         struct lp50xx *led = i2c_get_clientdata(client); >         int ret; > @@ -579,8 +579,6 @@ static int lp50xx_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp50xx_id[] = { > diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c > index a9e7507c998c..7ff20c260504 100644 > --- a/drivers/leds/leds-lp5521.c > +++ b/drivers/leds/leds-lp5521.c > @@ -579,7 +579,7 @@ static int lp5521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5521_remove(struct i2c_client *client) > +static void lp5521_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -587,8 +587,6 @@ static int lp5521_remove(struct i2c_client > *client) >         lp5521_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5521_id[] = { > diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c > index b1590cb4a188..369d40b0b65b 100644 > --- a/drivers/leds/leds-lp5523.c > +++ b/drivers/leds/leds-lp5523.c > @@ -947,7 +947,7 @@ static int lp5523_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5523_remove(struct i2c_client *client) > +static void lp5523_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -955,8 +955,6 @@ static int lp5523_remove(struct i2c_client > *client) >         lp5523_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5523_id[] = { > diff --git a/drivers/leds/leds-lp5562.c b/drivers/leds/leds-lp5562.c > index 31c14016d289..0e490085ff35 100644 > --- a/drivers/leds/leds-lp5562.c > +++ b/drivers/leds/leds-lp5562.c > @@ -573,7 +573,7 @@ static int lp5562_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5562_remove(struct i2c_client *client) > +static void lp5562_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -582,8 +582,6 @@ static int lp5562_remove(struct i2c_client > *client) >   >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5562_id[] = { > diff --git a/drivers/leds/leds-lp8501.c b/drivers/leds/leds-lp8501.c > index 2d2fda2ab104..ae11a02c0ab2 100644 > --- a/drivers/leds/leds-lp8501.c > +++ b/drivers/leds/leds-lp8501.c > @@ -362,7 +362,7 @@ static int lp8501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8501_remove(struct i2c_client *client) > +static void lp8501_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -370,8 +370,6 @@ static int lp8501_remove(struct i2c_client > *client) >         lp8501_stop_engine(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8501_id[] = { > diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c > index 3c693d5e3b44..e2b36d3187eb 100644 > --- a/drivers/leds/leds-lp8860.c > +++ b/drivers/leds/leds-lp8860.c > @@ -445,7 +445,7 @@ static int lp8860_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp8860_remove(struct i2c_client *client) > +static void lp8860_remove(struct i2c_client *client) >  { >         struct lp8860_led *led = i2c_get_clientdata(client); >         int ret; > @@ -461,8 +461,6 @@ static int lp8860_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8860_id[] = { > diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds- > pca9532.c > index f72b5d1be3a6..df83d97cb479 100644 > --- a/drivers/leds/leds-pca9532.c > +++ b/drivers/leds/leds-pca9532.c > @@ -52,7 +52,7 @@ struct pca9532_data { >   >  static int pca9532_probe(struct i2c_client *client, >         const struct i2c_device_id *id); > -static int pca9532_remove(struct i2c_client *client); > +static void pca9532_remove(struct i2c_client *client); >   >  enum { >         pca9530, > @@ -546,13 +546,11 @@ static int pca9532_probe(struct i2c_client > *client, >         return pca9532_configure(client, data, pca9532_pdata); >  } >   > -static int pca9532_remove(struct i2c_client *client) > +static void pca9532_remove(struct i2c_client *client) >  { >         struct pca9532_data *data = i2c_get_clientdata(client); >   >         pca9532_destroy_devices(data, data->chip_info->num_leds); > - > -       return 0; >  } >   >  module_i2c_driver(pca9532_driver); > diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds- > tca6507.c > index 1473ced8664c..161bef65c6b7 100644 > --- a/drivers/leds/leds-tca6507.c > +++ b/drivers/leds/leds-tca6507.c > @@ -790,7 +790,7 @@ static int tca6507_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tca6507_remove(struct i2c_client *client) > +static void tca6507_remove(struct i2c_client *client) >  { >         int i; >         struct tca6507_chip *tca = i2c_get_clientdata(client); > @@ -802,8 +802,6 @@ static int tca6507_remove(struct i2c_client > *client) >         } >         tca6507_remove_gpio(tca); >         cancel_work_sync(&tca->work); > - > -       return 0; >  } >   >  static struct i2c_driver tca6507_driver = { > diff --git a/drivers/leds/leds-turris-omnia.c b/drivers/leds/leds- > turris-omnia.c > index 1adfed1c0619..66040e8621af 100644 > --- a/drivers/leds/leds-turris-omnia.c > +++ b/drivers/leds/leds-turris-omnia.c > @@ -245,7 +245,7 @@ static int omnia_leds_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int omnia_leds_remove(struct i2c_client *client) > +static void omnia_leds_remove(struct i2c_client *client) >  { >         u8 buf[5]; >   > @@ -261,8 +261,6 @@ static int omnia_leds_remove(struct i2c_client > *client) >         buf[4] = 255; >   >         i2c_master_send(client, buf, 5); > - > -       return 0; >  } >   >  static const struct of_device_id of_omnia_leds_match[] = { > diff --git a/drivers/macintosh/ams/ams-i2c.c > b/drivers/macintosh/ams/ams-i2c.c > index d2f0cde6f9c7..362fc56b69dc 100644 > --- a/drivers/macintosh/ams/ams-i2c.c > +++ b/drivers/macintosh/ams/ams-i2c.c > @@ -230,7 +230,7 @@ static int ams_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ams_i2c_remove(struct i2c_client *client) > +static void ams_i2c_remove(struct i2c_client *client) >  { >         if (ams_info.has_device) { >                 ams_sensor_detach(); > @@ -245,8 +245,6 @@ static int ams_i2c_remove(struct i2c_client > *client) >   >                 ams_info.has_device = 0; >         } > - > -       return 0; >  } >   >  static void ams_i2c_exit(void) > diff --git a/drivers/macintosh/therm_adt746x.c > b/drivers/macintosh/therm_adt746x.c > index e604cbc91763..b004ea2a1102 100644 > --- a/drivers/macintosh/therm_adt746x.c > +++ b/drivers/macintosh/therm_adt746x.c > @@ -563,7 +563,7 @@ static int probe_thermostat(struct i2c_client > *client, >         return 0; >  } >   > -static int remove_thermostat(struct i2c_client *client) > +static void remove_thermostat(struct i2c_client *client) >  { >         struct thermostat *th = i2c_get_clientdata(client); >         int i; > @@ -585,8 +585,6 @@ static int remove_thermostat(struct i2c_client > *client) >         write_both_fan_speed(th, -1); >   >         kfree(th); > - > -       return 0; >  } >   >  static const struct i2c_device_id therm_adt746x_id[] = { > diff --git a/drivers/macintosh/therm_windtunnel.c > b/drivers/macintosh/therm_windtunnel.c > index 9226b74fa08f..61fe2ab910b8 100644 > --- a/drivers/macintosh/therm_windtunnel.c > +++ b/drivers/macintosh/therm_windtunnel.c > @@ -334,7 +334,7 @@ static void do_attach(struct i2c_adapter > *adapter) >         } >  } >   > -static int > +static void >  do_remove(struct i2c_client *client) >  { >         if (x.running) { > @@ -348,8 +348,6 @@ do_remove(struct i2c_client *client) >                 x.fan = NULL; >         else >                 printk(KERN_ERR "g4fan: bad client\n"); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/macintosh/windfarm_ad7417_sensor.c > b/drivers/macintosh/windfarm_ad7417_sensor.c > index 6ad6441abcbc..c5c54a4ce91f 100644 > --- a/drivers/macintosh/windfarm_ad7417_sensor.c > +++ b/drivers/macintosh/windfarm_ad7417_sensor.c > @@ -289,7 +289,7 @@ static int wf_ad7417_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_ad7417_remove(struct i2c_client *client) > +static void wf_ad7417_remove(struct i2c_client *client) >  { >         struct wf_ad7417_priv *pv = dev_get_drvdata(&client->dev); >         int i; > @@ -302,8 +302,6 @@ static int wf_ad7417_remove(struct i2c_client > *client) >                 wf_unregister_sensor(&pv->sensors[i]); >   >         kref_put(&pv->ref, wf_ad7417_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_ad7417_id[] = { > diff --git a/drivers/macintosh/windfarm_fcu_controls.c > b/drivers/macintosh/windfarm_fcu_controls.c > index 82e7b2005ae7..c5b1ca5bcd73 100644 > --- a/drivers/macintosh/windfarm_fcu_controls.c > +++ b/drivers/macintosh/windfarm_fcu_controls.c > @@ -560,7 +560,7 @@ static int wf_fcu_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_fcu_remove(struct i2c_client *client) > +static void wf_fcu_remove(struct i2c_client *client) >  { >         struct wf_fcu_priv *pv = dev_get_drvdata(&client->dev); >         struct wf_fcu_fan *fan; > @@ -571,7 +571,6 @@ static int wf_fcu_remove(struct i2c_client > *client) >                 wf_unregister_control(&fan->ctrl); >         } >         kref_put(&pv->ref, wf_fcu_release); > -       return 0; >  } >   >  static const struct i2c_device_id wf_fcu_id[] = { > diff --git a/drivers/macintosh/windfarm_lm75_sensor.c > b/drivers/macintosh/windfarm_lm75_sensor.c > index eb7e7f0bd219..204661c8e918 100644 > --- a/drivers/macintosh/windfarm_lm75_sensor.c > +++ b/drivers/macintosh/windfarm_lm75_sensor.c > @@ -147,7 +147,7 @@ static int wf_lm75_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm75_remove(struct i2c_client *client) > +static void wf_lm75_remove(struct i2c_client *client) >  { >         struct wf_lm75_sensor *lm = i2c_get_clientdata(client); >   > @@ -156,8 +156,6 @@ static int wf_lm75_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm75_id[] = { > diff --git a/drivers/macintosh/windfarm_lm87_sensor.c > b/drivers/macintosh/windfarm_lm87_sensor.c > index 807efdde86bc..40d25463346e 100644 > --- a/drivers/macintosh/windfarm_lm87_sensor.c > +++ b/drivers/macintosh/windfarm_lm87_sensor.c > @@ -145,7 +145,7 @@ static int wf_lm87_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm87_remove(struct i2c_client *client) > +static void wf_lm87_remove(struct i2c_client *client) >  { >         struct wf_lm87_sensor *lm = i2c_get_clientdata(client); >   > @@ -154,8 +154,6 @@ static int wf_lm87_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm87_id[] = { > diff --git a/drivers/macintosh/windfarm_max6690_sensor.c > b/drivers/macintosh/windfarm_max6690_sensor.c > index 55ee417fb878..c0d404ebc792 100644 > --- a/drivers/macintosh/windfarm_max6690_sensor.c > +++ b/drivers/macintosh/windfarm_max6690_sensor.c > @@ -104,14 +104,12 @@ static int wf_max6690_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_max6690_remove(struct i2c_client *client) > +static void wf_max6690_remove(struct i2c_client *client) >  { >         struct wf_6690_sensor *max = i2c_get_clientdata(client); >   >         max->i2c = NULL; >         wf_unregister_sensor(&max->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_max6690_id[] = { > diff --git a/drivers/macintosh/windfarm_smu_sat.c > b/drivers/macintosh/windfarm_smu_sat.c > index 5ade627eaa78..be5d4593db93 100644 > --- a/drivers/macintosh/windfarm_smu_sat.c > +++ b/drivers/macintosh/windfarm_smu_sat.c > @@ -316,7 +316,7 @@ static int wf_sat_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_sat_remove(struct i2c_client *client) > +static void wf_sat_remove(struct i2c_client *client) >  { >         struct wf_sat *sat = i2c_get_clientdata(client); >         struct wf_sat_sensor *sens; > @@ -330,8 +330,6 @@ static int wf_sat_remove(struct i2c_client > *client) >         } >         sat->i2c = NULL; >         kref_put(&sat->ref, wf_sat_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_sat_id[] = { > diff --git a/drivers/media/cec/i2c/ch7322.c > b/drivers/media/cec/i2c/ch7322.c > index 0814338c43e4..34fad7123704 100644 > --- a/drivers/media/cec/i2c/ch7322.c > +++ b/drivers/media/cec/i2c/ch7322.c > @@ -565,7 +565,7 @@ static int ch7322_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ch7322_remove(struct i2c_client *client) > +static void ch7322_remove(struct i2c_client *client) >  { >         struct ch7322 *ch7322 = i2c_get_clientdata(client); >   > @@ -578,8 +578,6 @@ static int ch7322_remove(struct i2c_client > *client) >         mutex_destroy(&ch7322->mutex); >   >         dev_info(&client->dev, "device unregistered\n"); > - > -       return 0; >  } >   >  static const struct of_device_id ch7322_of_match[] = { > diff --git a/drivers/media/dvb-frontends/a8293.c b/drivers/media/dvb- > frontends/a8293.c > index 57f52c004a23..ba38783b2b4f 100644 > --- a/drivers/media/dvb-frontends/a8293.c > +++ b/drivers/media/dvb-frontends/a8293.c > @@ -98,14 +98,13 @@ static int a8293_probe(struct i2c_client *client, >         return ret; >  } >   > -static int a8293_remove(struct i2c_client *client) > +static void a8293_remove(struct i2c_client *client) >  { >         struct a8293_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id a8293_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9013.c > b/drivers/media/dvb-frontends/af9013.c > index 7d7c341b2bd8..d85929582c3f 100644 > --- a/drivers/media/dvb-frontends/af9013.c > +++ b/drivers/media/dvb-frontends/af9013.c > @@ -1540,7 +1540,7 @@ static int af9013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9013_remove(struct i2c_client *client) > +static void af9013_remove(struct i2c_client *client) >  { >         struct af9013_state *state = i2c_get_clientdata(client); >   > @@ -1551,8 +1551,6 @@ static int af9013_remove(struct i2c_client > *client) >         regmap_exit(state->regmap); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9013_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9033.c > b/drivers/media/dvb-frontends/af9033.c > index 785c49b3d307..808da7a9ffe7 100644 > --- a/drivers/media/dvb-frontends/af9033.c > +++ b/drivers/media/dvb-frontends/af9033.c > @@ -1163,7 +1163,7 @@ static int af9033_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9033_remove(struct i2c_client *client) > +static void af9033_remove(struct i2c_client *client) >  { >         struct af9033_dev *dev = i2c_get_clientdata(client); >   > @@ -1171,8 +1171,6 @@ static int af9033_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9033_id_table[] = { > diff --git a/drivers/media/dvb-frontends/au8522_decoder.c > b/drivers/media/dvb-frontends/au8522_decoder.c > index 8cdca051e51b..e4f99bd468cb 100644 > --- a/drivers/media/dvb-frontends/au8522_decoder.c > +++ b/drivers/media/dvb-frontends/au8522_decoder.c > @@ -758,13 +758,12 @@ static int au8522_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int au8522_remove(struct i2c_client *client) > +static void au8522_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         au8522_release_state(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id au8522_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2099.c > b/drivers/media/dvb-frontends/cxd2099.c > index 1c8207ab8988..fbc666fa04ec 100644 > --- a/drivers/media/dvb-frontends/cxd2099.c > +++ b/drivers/media/dvb-frontends/cxd2099.c > @@ -664,14 +664,12 @@ static int cxd2099_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2099_remove(struct i2c_client *client) > +static void cxd2099_remove(struct i2c_client *client) >  { >         struct cxd *ci = i2c_get_clientdata(client); >   >         regmap_exit(ci->regmap); >         kfree(ci); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2099_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c > b/drivers/media/dvb-frontends/cxd2820r_core.c > index b1618339eec0..5d98222f9df0 100644 > --- a/drivers/media/dvb-frontends/cxd2820r_core.c > +++ b/drivers/media/dvb-frontends/cxd2820r_core.c > @@ -705,7 +705,7 @@ static int cxd2820r_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2820r_remove(struct i2c_client *client) > +static void cxd2820r_remove(struct i2c_client *client) >  { >         struct cxd2820r_priv *priv = i2c_get_clientdata(client); >   > @@ -721,8 +721,6 @@ static int cxd2820r_remove(struct i2c_client > *client) >         regmap_exit(priv->regmap[0]); >   >         kfree(priv); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2820r_id_table[] = { > diff --git a/drivers/media/dvb-frontends/dvb-pll.c > b/drivers/media/dvb-frontends/dvb-pll.c > index d45b4ddc8f91..baf2a378e565 100644 > --- a/drivers/media/dvb-frontends/dvb-pll.c > +++ b/drivers/media/dvb-frontends/dvb-pll.c > @@ -899,14 +899,13 @@ dvb_pll_probe(struct i2c_client *client, const > struct i2c_device_id *id) >         return 0; >  } >   > -static int dvb_pll_remove(struct i2c_client *client) > +static void dvb_pll_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe = i2c_get_clientdata(client); >         struct dvb_pll_priv *priv = fe->tuner_priv; >   >         ida_simple_remove(&pll_ida, priv->nr); >         dvb_pll_release(fe); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/lgdt3306a.c > b/drivers/media/dvb-frontends/lgdt3306a.c > index 136b76cb4807..424311afb2bf 100644 > --- a/drivers/media/dvb-frontends/lgdt3306a.c > +++ b/drivers/media/dvb-frontends/lgdt3306a.c > @@ -2226,7 +2226,7 @@ static int lgdt3306a_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lgdt3306a_remove(struct i2c_client *client) > +static void lgdt3306a_remove(struct i2c_client *client) >  { >         struct lgdt3306a_state *state = i2c_get_clientdata(client); >   > @@ -2237,8 +2237,6 @@ static int lgdt3306a_remove(struct i2c_client > *client) >   >         kfree(state->cfg); >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt3306a_id_table[] = { > diff --git a/drivers/media/dvb-frontends/lgdt330x.c > b/drivers/media/dvb-frontends/lgdt330x.c > index da3a8c5e18d8..ea9ae22fd201 100644 > --- a/drivers/media/dvb-frontends/lgdt330x.c > +++ b/drivers/media/dvb-frontends/lgdt330x.c > @@ -974,15 +974,13 @@ static const struct dvb_frontend_ops > lgdt3303_ops = { >         .release              = lgdt330x_release, >  }; >   > -static int lgdt330x_remove(struct i2c_client *client) > +static void lgdt330x_remove(struct i2c_client *client) >  { >         struct lgdt330x_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt330x_id_table[] = { > diff --git a/drivers/media/dvb-frontends/m88ds3103.c > b/drivers/media/dvb-frontends/m88ds3103.c > index bce0f42f3d19..4e844b2ef597 100644 > --- a/drivers/media/dvb-frontends/m88ds3103.c > +++ b/drivers/media/dvb-frontends/m88ds3103.c > @@ -1914,7 +1914,7 @@ static int m88ds3103_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88ds3103_remove(struct i2c_client *client) > +static void m88ds3103_remove(struct i2c_client *client) >  { >         struct m88ds3103_dev *dev = i2c_get_clientdata(client); >   > @@ -1926,7 +1926,6 @@ static int m88ds3103_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id m88ds3103_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88443x.c > b/drivers/media/dvb-frontends/mn88443x.c > index fff212c0bf3b..452571b380b7 100644 > --- a/drivers/media/dvb-frontends/mn88443x.c > +++ b/drivers/media/dvb-frontends/mn88443x.c > @@ -762,15 +762,13 @@ static int mn88443x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88443x_remove(struct i2c_client *client) > +static void mn88443x_remove(struct i2c_client *client) >  { >         struct mn88443x_priv *chip = i2c_get_clientdata(client); >   >         mn88443x_cmn_power_off(chip); >   >         i2c_unregister_device(chip->client_t); > - > -       return 0; >  } >   >  static const struct mn88443x_spec mn88443x_spec_pri = { > diff --git a/drivers/media/dvb-frontends/mn88472.c > b/drivers/media/dvb-frontends/mn88472.c > index 73922fc8f39c..2b01cc678f7e 100644 > --- a/drivers/media/dvb-frontends/mn88472.c > +++ b/drivers/media/dvb-frontends/mn88472.c > @@ -691,7 +691,7 @@ static int mn88472_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88472_remove(struct i2c_client *client) > +static void mn88472_remove(struct i2c_client *client) >  { >         struct mn88472_dev *dev = i2c_get_clientdata(client); >   > @@ -706,8 +706,6 @@ static int mn88472_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88472_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88473.c > b/drivers/media/dvb-frontends/mn88473.c > index 4838969ef735..f0ecf5910c02 100644 > --- a/drivers/media/dvb-frontends/mn88473.c > +++ b/drivers/media/dvb-frontends/mn88473.c > @@ -726,7 +726,7 @@ static int mn88473_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88473_remove(struct i2c_client *client) > +static void mn88473_remove(struct i2c_client *client) >  { >         struct mn88473_dev *dev = i2c_get_clientdata(client); >   > @@ -741,8 +741,6 @@ static int mn88473_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88473_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mxl692.c > b/drivers/media/dvb-frontends/mxl692.c > index dd7954e8f553..129630cbffff 100644 > --- a/drivers/media/dvb-frontends/mxl692.c > +++ b/drivers/media/dvb-frontends/mxl692.c > @@ -1337,15 +1337,13 @@ static int mxl692_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int mxl692_remove(struct i2c_client *client) > +static void mxl692_remove(struct i2c_client *client) >  { >         struct mxl692_dev *dev = i2c_get_clientdata(client); >   >         dev->fe.demodulator_priv = NULL; >         i2c_set_clientdata(client, NULL); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mxl692_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2830.c > b/drivers/media/dvb-frontends/rtl2830.c > index e6b8367c8cce..e0fbf41316ae 100644 > --- a/drivers/media/dvb-frontends/rtl2830.c > +++ b/drivers/media/dvb-frontends/rtl2830.c > @@ -865,7 +865,7 @@ static int rtl2830_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2830_remove(struct i2c_client *client) > +static void rtl2830_remove(struct i2c_client *client) >  { >         struct rtl2830_dev *dev = i2c_get_clientdata(client); >   > @@ -874,8 +874,6 @@ static int rtl2830_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2830_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2832.c > b/drivers/media/dvb-frontends/rtl2832.c > index dcbeb9f5e12a..4fa884eda5d5 100644 > --- a/drivers/media/dvb-frontends/rtl2832.c > +++ b/drivers/media/dvb-frontends/rtl2832.c > @@ -1110,7 +1110,7 @@ static int rtl2832_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2832_remove(struct i2c_client *client) > +static void rtl2832_remove(struct i2c_client *client) >  { >         struct rtl2832_dev *dev = i2c_get_clientdata(client); >   > @@ -1123,8 +1123,6 @@ static int rtl2832_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2832_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2165.c > b/drivers/media/dvb-frontends/si2165.c > index ebee230afb7b..86b0d59169dd 100644 > --- a/drivers/media/dvb-frontends/si2165.c > +++ b/drivers/media/dvb-frontends/si2165.c > @@ -1274,14 +1274,13 @@ static int si2165_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2165_remove(struct i2c_client *client) > +static void si2165_remove(struct i2c_client *client) >  { >         struct si2165_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id si2165_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2168.c > b/drivers/media/dvb-frontends/si2168.c > index 196e028a6617..8157df4570d1 100644 > --- a/drivers/media/dvb-frontends/si2168.c > +++ b/drivers/media/dvb-frontends/si2168.c > @@ -774,7 +774,7 @@ static int si2168_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2168_remove(struct i2c_client *client) > +static void si2168_remove(struct i2c_client *client) >  { >         struct si2168_dev *dev = i2c_get_clientdata(client); >   > @@ -786,8 +786,6 @@ static int si2168_remove(struct i2c_client > *client) >         dev->fe.demodulator_priv = NULL; >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id si2168_id_table[] = { > diff --git a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb- > frontends/sp2.c > index 992f22167fbe..27e7037e130e 100644 > --- a/drivers/media/dvb-frontends/sp2.c > +++ b/drivers/media/dvb-frontends/sp2.c > @@ -398,14 +398,13 @@ static int sp2_probe(struct i2c_client *client, >         return ret; >  } >   > -static int sp2_remove(struct i2c_client *client) > +static void sp2_remove(struct i2c_client *client) >  { >         struct sp2 *s = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >         sp2_exit(client); >         kfree(s); > -       return 0; >  } >   >  static const struct i2c_device_id sp2_id[] = { > diff --git a/drivers/media/dvb-frontends/stv090x.c > b/drivers/media/dvb-frontends/stv090x.c > index 90d24131d335..0a600c1d7d1b 100644 > --- a/drivers/media/dvb-frontends/stv090x.c > +++ b/drivers/media/dvb-frontends/stv090x.c > @@ -5032,12 +5032,11 @@ static int stv090x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stv090x_remove(struct i2c_client *client) > +static void stv090x_remove(struct i2c_client *client) >  { >         struct stv090x_state *state = i2c_get_clientdata(client); >   >         stv090x_release(&state->frontend); > -       return 0; >  } >   >  struct dvb_frontend *stv090x_attach(struct stv090x_config *config, > diff --git a/drivers/media/dvb-frontends/stv6110x.c > b/drivers/media/dvb-frontends/stv6110x.c > index 5012d0231652..fbc4dbd62151 100644 > --- a/drivers/media/dvb-frontends/stv6110x.c > +++ b/drivers/media/dvb-frontends/stv6110x.c > @@ -436,12 +436,11 @@ static int stv6110x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stv6110x_remove(struct i2c_client *client) > +static void stv6110x_remove(struct i2c_client *client) >  { >         struct stv6110x_state *stv6110x = i2c_get_clientdata(client); >   >         stv6110x_release(stv6110x->frontend); > -       return 0; >  } >   >  const struct stv6110x_devctl *stv6110x_attach(struct dvb_frontend > *fe, > diff --git a/drivers/media/dvb-frontends/tc90522.c > b/drivers/media/dvb-frontends/tc90522.c > index e83836b29715..c22d2a2b2a45 100644 > --- a/drivers/media/dvb-frontends/tc90522.c > +++ b/drivers/media/dvb-frontends/tc90522.c > @@ -819,14 +819,13 @@ static int tc90522_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tc90522_remove(struct i2c_client *client) > +static void tc90522_remove(struct i2c_client *client) >  { >         struct tc90522_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         i2c_del_adapter(&state->tuner_i2c); >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/tda10071.c > b/drivers/media/dvb-frontends/tda10071.c > index 685c0ac71819..d1098ef20a8b 100644 > --- a/drivers/media/dvb-frontends/tda10071.c > +++ b/drivers/media/dvb-frontends/tda10071.c > @@ -1221,14 +1221,13 @@ static int tda10071_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda10071_remove(struct i2c_client *client) > +static void tda10071_remove(struct i2c_client *client) >  { >         struct tda10071_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tda10071_id_table[] = { > diff --git a/drivers/media/dvb-frontends/ts2020.c > b/drivers/media/dvb-frontends/ts2020.c > index 3e383912bcfd..02338256b974 100644 > --- a/drivers/media/dvb-frontends/ts2020.c > +++ b/drivers/media/dvb-frontends/ts2020.c > @@ -696,7 +696,7 @@ static int ts2020_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ts2020_remove(struct i2c_client *client) > +static void ts2020_remove(struct i2c_client *client) >  { >         struct ts2020_priv *dev = i2c_get_clientdata(client); >   > @@ -708,7 +708,6 @@ static int ts2020_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id ts2020_id_table[] = { > diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c > index 2958a4694461..516de278cc49 100644 > --- a/drivers/media/i2c/ad5820.c > +++ b/drivers/media/i2c/ad5820.c > @@ -342,7 +342,7 @@ static int ad5820_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad5820_remove(struct i2c_client *client) > +static void ad5820_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ad5820_device *coil = to_ad5820_device(subdev); > @@ -351,7 +351,6 @@ static int ad5820_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&coil->ctrls); >         media_entity_cleanup(&coil->subdev.entity); >         mutex_destroy(&coil->power_lock); > -       return 0; >  } >   >  static const struct i2c_device_id ad5820_id_table[] = { > diff --git a/drivers/media/i2c/ad9389b.c > b/drivers/media/i2c/ad9389b.c > index 8679a44e6413..4a255a492918 100644 > --- a/drivers/media/i2c/ad9389b.c > +++ b/drivers/media/i2c/ad9389b.c > @@ -1174,7 +1174,7 @@ static int ad9389b_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int ad9389b_remove(struct i2c_client *client) > +static void ad9389b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ad9389b_state *state = get_ad9389b_state(sd); > @@ -1192,7 +1192,6 @@ static int ad9389b_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adp1653.c > b/drivers/media/i2c/adp1653.c > index 522a0b10e415..1f353157df07 100644 > --- a/drivers/media/i2c/adp1653.c > +++ b/drivers/media/i2c/adp1653.c > @@ -510,7 +510,7 @@ static int adp1653_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp1653_remove(struct i2c_client *client) > +static void adp1653_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct adp1653_flash *flash = to_adp1653_flash(subdev); > @@ -518,8 +518,6 @@ static int adp1653_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&flash->subdev); >         v4l2_ctrl_handler_free(&flash->ctrls); >         media_entity_cleanup(&flash->subdev.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp1653_id_table[] = { > diff --git a/drivers/media/i2c/adv7170.c > b/drivers/media/i2c/adv7170.c > index 714e31f993e1..61a2f87d3c62 100644 > --- a/drivers/media/i2c/adv7170.c > +++ b/drivers/media/i2c/adv7170.c > @@ -368,12 +368,11 @@ static int adv7170_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7170_remove(struct i2c_client *client) > +static void adv7170_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7175.c > b/drivers/media/i2c/adv7175.c > index 1813f67f0fe1..b58689728243 100644 > --- a/drivers/media/i2c/adv7175.c > +++ b/drivers/media/i2c/adv7175.c > @@ -423,12 +423,11 @@ static int adv7175_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7175_remove(struct i2c_client *client) > +static void adv7175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7180.c > b/drivers/media/i2c/adv7180.c > index e3a57c178c6b..f85e5bf228f1 100644 > --- a/drivers/media/i2c/adv7180.c > +++ b/drivers/media/i2c/adv7180.c > @@ -1511,7 +1511,7 @@ static int adv7180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adv7180_remove(struct i2c_client *client) > +static void adv7180_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7180_state *state = to_state(sd); > @@ -1531,8 +1531,6 @@ static int adv7180_remove(struct i2c_client > *client) >         adv7180_set_power_pin(state, false); >   >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7180_id[] = { > diff --git a/drivers/media/i2c/adv7183.c > b/drivers/media/i2c/adv7183.c > index ba746a19fd39..313c706e8335 100644 > --- a/drivers/media/i2c/adv7183.c > +++ b/drivers/media/i2c/adv7183.c > @@ -613,13 +613,12 @@ static int adv7183_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7183_remove(struct i2c_client *client) > +static void adv7183_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id adv7183_id[] = { > diff --git a/drivers/media/i2c/adv7343.c > b/drivers/media/i2c/adv7343.c > index 63e94dfcb5d3..7e84869d2434 100644 > --- a/drivers/media/i2c/adv7343.c > +++ b/drivers/media/i2c/adv7343.c > @@ -492,15 +492,13 @@ static int adv7343_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adv7343_remove(struct i2c_client *client) > +static void adv7343_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7343_state *state = to_state(sd); >   >         v4l2_async_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7343_id[] = { > diff --git a/drivers/media/i2c/adv7393.c > b/drivers/media/i2c/adv7393.c > index b6234c8231c9..fb5fefa83b18 100644 > --- a/drivers/media/i2c/adv7393.c > +++ b/drivers/media/i2c/adv7393.c > @@ -437,15 +437,13 @@ static int adv7393_probe(struct i2c_client > *client, >         return err; >  } >   > -static int adv7393_remove(struct i2c_client *client) > +static void adv7393_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7393_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7393_id[] = { > diff --git a/drivers/media/i2c/adv748x/adv748x-core.c > b/drivers/media/i2c/adv748x/adv748x-core.c > index 4e54148147b9..4498d78a2357 100644 > --- a/drivers/media/i2c/adv748x/adv748x-core.c > +++ b/drivers/media/i2c/adv748x/adv748x-core.c > @@ -815,7 +815,7 @@ static int adv748x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int adv748x_remove(struct i2c_client *client) > +static void adv748x_remove(struct i2c_client *client) >  { >         struct adv748x_state *state = i2c_get_clientdata(client); >   > @@ -828,8 +828,6 @@ static int adv748x_remove(struct i2c_client > *client) >         adv748x_unregister_clients(state); >         adv748x_dt_cleanup(state); >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id adv748x_of_table[] = { > diff --git a/drivers/media/i2c/adv7511-v4l2.c > b/drivers/media/i2c/adv7511-v4l2.c > index 202e0cd83f90..49aca579576a 100644 > --- a/drivers/media/i2c/adv7511-v4l2.c > +++ b/drivers/media/i2c/adv7511-v4l2.c > @@ -1923,7 +1923,7 @@ static int adv7511_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7511_remove(struct i2c_client *client) > +static void adv7511_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7511_state *state = get_adv7511_state(sd); > @@ -1943,7 +1943,6 @@ static int adv7511_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7604.c > b/drivers/media/i2c/adv7604.c > index bb0c8fc6d383..e63abf93ccac 100644 > --- a/drivers/media/i2c/adv7604.c > +++ b/drivers/media/i2c/adv7604.c > @@ -3661,7 +3661,7 @@ static int adv76xx_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv76xx_remove(struct i2c_client *client) > +static void adv76xx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv76xx_state *state = to_state(sd); > @@ -3678,7 +3678,6 @@ static int adv76xx_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv76xx_unregister_clients(to_state(sd)); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7842.c > b/drivers/media/i2c/adv7842.c > index 22caa070273b..a8dd92948df0 100644 > --- a/drivers/media/i2c/adv7842.c > +++ b/drivers/media/i2c/adv7842.c > @@ -3593,7 +3593,7 @@ static int adv7842_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7842_remove(struct i2c_client *client) > +static void adv7842_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7842_state *state = to_state(sd); > @@ -3604,7 +3604,6 @@ static int adv7842_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv7842_unregister_clients(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/ak7375.c b/drivers/media/i2c/ak7375.c > index 40b1a4aa846c..1af9f698eecf 100644 > --- a/drivers/media/i2c/ak7375.c > +++ b/drivers/media/i2c/ak7375.c > @@ -169,7 +169,7 @@ static int ak7375_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ak7375_remove(struct i2c_client *client) > +static void ak7375_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); > @@ -177,8 +177,6 @@ static int ak7375_remove(struct i2c_client > *client) >         ak7375_subdev_cleanup(ak7375_dev); >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/ak881x.c b/drivers/media/i2c/ak881x.c > index dc569d5a4d9d..0370ad6b6811 100644 > --- a/drivers/media/i2c/ak881x.c > +++ b/drivers/media/i2c/ak881x.c > @@ -297,13 +297,11 @@ static int ak881x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ak881x_remove(struct i2c_client *client) > +static void ak881x_remove(struct i2c_client *client) >  { >         struct ak881x *ak881x = to_ak881x(client); >   >         v4l2_device_unregister_subdev(&ak881x->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ak881x_id[] = { > diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c > index 73bc50c919d7..4d9bb6eb7d65 100644 > --- a/drivers/media/i2c/bt819.c > +++ b/drivers/media/i2c/bt819.c > @@ -446,14 +446,13 @@ static int bt819_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt819_remove(struct i2c_client *client) > +static void bt819_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct bt819 *decoder = to_bt819(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/bt856.c b/drivers/media/i2c/bt856.c > index c134fda270a1..70443ef1ac46 100644 > --- a/drivers/media/i2c/bt856.c > +++ b/drivers/media/i2c/bt856.c > @@ -223,12 +223,11 @@ static int bt856_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt856_remove(struct i2c_client *client) > +static void bt856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt856_id[] = { > diff --git a/drivers/media/i2c/bt866.c b/drivers/media/i2c/bt866.c > index 1a8df9f18ffb..c2508cbafd02 100644 > --- a/drivers/media/i2c/bt866.c > +++ b/drivers/media/i2c/bt866.c > @@ -190,12 +190,11 @@ static int bt866_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt866_remove(struct i2c_client *client) > +static void bt866_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt866_id[] = { > diff --git a/drivers/media/i2c/ccs/ccs-core.c > b/drivers/media/i2c/ccs/ccs-core.c > index 7609add2aff4..4a14d7e5d9f2 100644 > --- a/drivers/media/i2c/ccs/ccs-core.c > +++ b/drivers/media/i2c/ccs/ccs-core.c > @@ -3665,7 +3665,7 @@ static int ccs_probe(struct i2c_client *client) >         return rval; >  } >   > -static int ccs_remove(struct i2c_client *client) > +static void ccs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ccs_sensor *sensor = to_ccs_sensor(subdev); > @@ -3687,8 +3687,6 @@ static int ccs_remove(struct i2c_client > *client) >         kfree(sensor->ccs_limits); >         kvfree(sensor->sdata.backing); >         kvfree(sensor->mdata.backing); > - > -       return 0; >  } >   >  static const struct ccs_device smia_device = { > diff --git a/drivers/media/i2c/cs3308.c b/drivers/media/i2c/cs3308.c > index ebe55e261bff..d901a59883a9 100644 > --- a/drivers/media/i2c/cs3308.c > +++ b/drivers/media/i2c/cs3308.c > @@ -99,13 +99,12 @@ static int cs3308_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs3308_remove(struct i2c_client *client) > +static void cs3308_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs5345.c b/drivers/media/i2c/cs5345.c > index f6dd5edf77dd..591b1e7b24ee 100644 > --- a/drivers/media/i2c/cs5345.c > +++ b/drivers/media/i2c/cs5345.c > @@ -178,14 +178,13 @@ static int cs5345_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs5345_remove(struct i2c_client *client) > +static void cs5345_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs5345_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs53l32a.c > b/drivers/media/i2c/cs53l32a.c > index 9a411106cfb3..9461589aea30 100644 > --- a/drivers/media/i2c/cs53l32a.c > +++ b/drivers/media/i2c/cs53l32a.c > @@ -190,14 +190,13 @@ static int cs53l32a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cs53l32a_remove(struct i2c_client *client) > +static void cs53l32a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs53l32a_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cs53l32a_id[] = { > diff --git a/drivers/media/i2c/cx25840/cx25840-core.c > b/drivers/media/i2c/cx25840/cx25840-core.c > index dc31944c7d5b..f1a978af82ef 100644 > --- a/drivers/media/i2c/cx25840/cx25840-core.c > +++ b/drivers/media/i2c/cx25840/cx25840-core.c > @@ -6026,7 +6026,7 @@ static int cx25840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cx25840_remove(struct i2c_client *client) > +static void cx25840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cx25840_state *state = to_state(sd); > @@ -6034,7 +6034,6 @@ static int cx25840_remove(struct i2c_client > *client) >         cx25840_ir_remove(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cx25840_id[] = { > diff --git a/drivers/media/i2c/dw9714.c b/drivers/media/i2c/dw9714.c > index 206d74338b9c..af59687383aa 100644 > --- a/drivers/media/i2c/dw9714.c > +++ b/drivers/media/i2c/dw9714.c > @@ -190,7 +190,7 @@ static int dw9714_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9714_remove(struct i2c_client *client) > +static void dw9714_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9714_device *dw9714_dev = sd_to_dw9714_vcm(sd); > @@ -206,8 +206,6 @@ static int dw9714_remove(struct i2c_client > *client) >         } >         pm_runtime_set_suspended(&client->dev); >         dw9714_subdev_cleanup(dw9714_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c > index c086580efac7..0f47ef015a1d 100644 > --- a/drivers/media/i2c/dw9768.c > +++ b/drivers/media/i2c/dw9768.c > @@ -499,7 +499,7 @@ static int dw9768_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dw9768_remove(struct i2c_client *client) > +static void dw9768_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9768 *dw9768 = sd_to_dw9768(sd); > @@ -511,8 +511,6 @@ static int dw9768_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 dw9768_runtime_suspend(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id dw9768_of_table[] = { > diff --git a/drivers/media/i2c/dw9807-vcm.c > b/drivers/media/i2c/dw9807-vcm.c > index 01c372925a80..3599720db7e9 100644 > --- a/drivers/media/i2c/dw9807-vcm.c > +++ b/drivers/media/i2c/dw9807-vcm.c > @@ -216,7 +216,7 @@ static int dw9807_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9807_remove(struct i2c_client *client) > +static void dw9807_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); > @@ -224,8 +224,6 @@ static int dw9807_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >   >         dw9807_subdev_cleanup(dw9807_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/et8ek8/et8ek8_driver.c > b/drivers/media/i2c/et8ek8/et8ek8_driver.c > index 873d614339bb..ff9bb9fc97dd 100644 > --- a/drivers/media/i2c/et8ek8/et8ek8_driver.c > +++ b/drivers/media/i2c/et8ek8/et8ek8_driver.c > @@ -1460,7 +1460,7 @@ static int et8ek8_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int __exit et8ek8_remove(struct i2c_client *client) > +static void __exit et8ek8_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct et8ek8_sensor *sensor = to_et8ek8_sensor(subdev); > @@ -1477,8 +1477,6 @@ static int __exit et8ek8_remove(struct > i2c_client *client) >         v4l2_async_unregister_subdev(&sensor->subdev); >         media_entity_cleanup(&sensor->subdev.entity); >         mutex_destroy(&sensor->power_lock); > - > -       return 0; >  } >   >  static const struct of_device_id et8ek8_of_table[] = { > diff --git a/drivers/media/i2c/hi556.c b/drivers/media/i2c/hi556.c > index 055d1aa8410e..e422ac7609b5 100644 > --- a/drivers/media/i2c/hi556.c > +++ b/drivers/media/i2c/hi556.c > @@ -1101,7 +1101,7 @@ static int hi556_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi556_remove(struct i2c_client *client) > +static void hi556_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi556 *hi556 = to_hi556(sd); > @@ -1111,8 +1111,6 @@ static int hi556_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi556->mutex); > - > -       return 0; >  } >   >  static int hi556_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c > index ad35c3ff3611..c5b69823f257 100644 > --- a/drivers/media/i2c/hi846.c > +++ b/drivers/media/i2c/hi846.c > @@ -2143,7 +2143,7 @@ static int hi846_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int hi846_remove(struct i2c_client *client) > +static void hi846_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi846 *hi846 = to_hi846(sd); > @@ -2158,8 +2158,6 @@ static int hi846_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&hi846->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops hi846_pm_ops = { > diff --git a/drivers/media/i2c/hi847.c b/drivers/media/i2c/hi847.c > index 7e85349e1852..5a82b15a9513 100644 > --- a/drivers/media/i2c/hi847.c > +++ b/drivers/media/i2c/hi847.c > @@ -2903,7 +2903,7 @@ static int hi847_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi847_remove(struct i2c_client *client) > +static void hi847_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi847 *hi847 = to_hi847(sd); > @@ -2913,8 +2913,6 @@ static int hi847_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi847->mutex); > - > -       return 0; >  } >   >  static int hi847_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/imx208.c b/drivers/media/i2c/imx208.c > index b9516b2f1c15..a0e17bb9d4ca 100644 > --- a/drivers/media/i2c/imx208.c > +++ b/drivers/media/i2c/imx208.c > @@ -1061,7 +1061,7 @@ static int imx208_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx208_remove(struct i2c_client *client) > +static void imx208_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx208 *imx208 = to_imx208(sd); > @@ -1075,8 +1075,6 @@ static int imx208_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx208->imx208_mx); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx208_pm_ops = { > diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c > index 83c1737abeec..710c9fb515fd 100644 > --- a/drivers/media/i2c/imx214.c > +++ b/drivers/media/i2c/imx214.c > @@ -1080,7 +1080,7 @@ static int imx214_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx214_remove(struct i2c_client *client) > +static void imx214_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx214 *imx214 = to_imx214(sd); > @@ -1093,8 +1093,6 @@ static int imx214_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx214->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id imx214_of_match[] = { > diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c > index e10af3f74b38..77bd79a5954e 100644 > --- a/drivers/media/i2c/imx219.c > +++ b/drivers/media/i2c/imx219.c > @@ -1562,7 +1562,7 @@ static int imx219_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx219_remove(struct i2c_client *client) > +static void imx219_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx219 *imx219 = to_imx219(sd); > @@ -1575,8 +1575,6 @@ static int imx219_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx219_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx219_dt_ids[] = { > diff --git a/drivers/media/i2c/imx258.c b/drivers/media/i2c/imx258.c > index c249507aa2db..eab5fc1ee2f7 100644 > --- a/drivers/media/i2c/imx258.c > +++ b/drivers/media/i2c/imx258.c > @@ -1338,7 +1338,7 @@ static int imx258_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx258_remove(struct i2c_client *client) > +static void imx258_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx258 *imx258 = to_imx258(sd); > @@ -1351,8 +1351,6 @@ static int imx258_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx258_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx258_pm_ops = { > diff --git a/drivers/media/i2c/imx274.c b/drivers/media/i2c/imx274.c > index 7de1f2948e53..a00761b1e18c 100644 > --- a/drivers/media/i2c/imx274.c > +++ b/drivers/media/i2c/imx274.c > @@ -2142,7 +2142,7 @@ static int imx274_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx274_remove(struct i2c_client *client) > +static void imx274_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct stimx274 *imx274 = to_imx274(sd); > @@ -2157,7 +2157,6 @@ static int imx274_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&imx274->lock); > -       return 0; >  } >   >  static const struct dev_pm_ops imx274_pm_ops = { > diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c > index 99f2a50d39a4..1ce64dcdf7f0 100644 > --- a/drivers/media/i2c/imx290.c > +++ b/drivers/media/i2c/imx290.c > @@ -1119,7 +1119,7 @@ static int imx290_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx290_remove(struct i2c_client *client) > +static void imx290_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx290 *imx290 = to_imx290(sd); > @@ -1134,8 +1134,6 @@ static int imx290_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(imx290->dev)) >                 imx290_power_off(imx290->dev); >         pm_runtime_set_suspended(imx290->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx290_of_match[] = { > diff --git a/drivers/media/i2c/imx319.c b/drivers/media/i2c/imx319.c > index a2b5a34de76b..245a18fb40ad 100644 > --- a/drivers/media/i2c/imx319.c > +++ b/drivers/media/i2c/imx319.c > @@ -2523,7 +2523,7 @@ static int imx319_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx319_remove(struct i2c_client *client) > +static void imx319_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx319 *imx319 = to_imx319(sd); > @@ -2536,8 +2536,6 @@ static int imx319_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx319->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx319_pm_ops = { > diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c > index 062125501788..7b0a9086447d 100644 > --- a/drivers/media/i2c/imx334.c > +++ b/drivers/media/i2c/imx334.c > @@ -1089,7 +1089,7 @@ static int imx334_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx334_remove(struct i2c_client *client) > +static void imx334_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx334 *imx334 = to_imx334(sd); > @@ -1102,8 +1102,6 @@ static int imx334_remove(struct i2c_client > *client) >         pm_runtime_suspended(&client->dev); >   >         mutex_destroy(&imx334->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx334_pm_ops = { > diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c > index 410d6b86feb5..078ede2b7a00 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -1083,7 +1083,7 @@ static int imx335_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx335_remove(struct i2c_client *client) > +static void imx335_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx335 *imx335 = to_imx335(sd); > @@ -1098,8 +1098,6 @@ static int imx335_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx335->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx335_pm_ops = { > diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c > index 3922b9305978..b46178681c05 100644 > --- a/drivers/media/i2c/imx355.c > +++ b/drivers/media/i2c/imx355.c > @@ -1810,7 +1810,7 @@ static int imx355_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx355_remove(struct i2c_client *client) > +static void imx355_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx355 *imx355 = to_imx355(sd); > @@ -1823,8 +1823,6 @@ static int imx355_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx355->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx355_pm_ops = { > diff --git a/drivers/media/i2c/imx412.c b/drivers/media/i2c/imx412.c > index a1394d6c1432..7f6d29e0e7c4 100644 > --- a/drivers/media/i2c/imx412.c > +++ b/drivers/media/i2c/imx412.c > @@ -1257,7 +1257,7 @@ static int imx412_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx412_remove(struct i2c_client *client) > +static void imx412_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx412 *imx412 = to_imx412(sd); > @@ -1272,8 +1272,6 @@ static int imx412_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx412->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx412_pm_ops = { > diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir- > kbd-i2c.c > index 56674173524f..ee6bbbb977f7 100644 > --- a/drivers/media/i2c/ir-kbd-i2c.c > +++ b/drivers/media/i2c/ir-kbd-i2c.c > @@ -915,7 +915,7 @@ static int ir_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return err; >  } >   > -static int ir_remove(struct i2c_client *client) > +static void ir_remove(struct i2c_client *client) >  { >         struct IR_i2c *ir = i2c_get_clientdata(client); >   > @@ -924,8 +924,6 @@ static int ir_remove(struct i2c_client *client) >         i2c_unregister_device(ir->tx_c); >   >         rc_unregister_device(ir->rc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ir_kbd_id[] = { > diff --git a/drivers/media/i2c/isl7998x.c > b/drivers/media/i2c/isl7998x.c > index dc3068549dfa..246d8d182a8e 100644 > --- a/drivers/media/i2c/isl7998x.c > +++ b/drivers/media/i2c/isl7998x.c > @@ -1544,7 +1544,7 @@ static int isl7998x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int isl7998x_remove(struct i2c_client *client) > +static void isl7998x_remove(struct i2c_client *client) >  { >         struct isl7998x *isl7998x = i2c_to_isl7998x(client); >   > @@ -1552,8 +1552,6 @@ static int isl7998x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&isl7998x->subdev); >         isl7998x_remove_controls(isl7998x); >         media_entity_cleanup(&isl7998x->subdev.entity); > - > -       return 0; >  } >   >  static const struct of_device_id isl7998x_of_match[] = { > diff --git a/drivers/media/i2c/ks0127.c b/drivers/media/i2c/ks0127.c > index c077f53b9c30..215d9a43b0b9 100644 > --- a/drivers/media/i2c/ks0127.c > +++ b/drivers/media/i2c/ks0127.c > @@ -675,14 +675,13 @@ static int ks0127_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return 0; >  } >   > -static int ks0127_remove(struct i2c_client *client) > +static void ks0127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         ks0127_write(sd, KS_OFMTA, 0x20); /* tristate */ >         ks0127_write(sd, KS_CMDA, 0x2c | 0x80); /* power down */ > -       return 0; >  } >   >  static const struct i2c_device_id ks0127_id[] = { > diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c > index 9e34ccce4fc3..edad3138cb07 100644 > --- a/drivers/media/i2c/lm3560.c > +++ b/drivers/media/i2c/lm3560.c > @@ -443,7 +443,7 @@ static int lm3560_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3560_remove(struct i2c_client *client) > +static void lm3560_remove(struct i2c_client *client) >  { >         struct lm3560_flash *flash = i2c_get_clientdata(client); >         unsigned int i; > @@ -453,8 +453,6 @@ static int lm3560_remove(struct i2c_client > *client) >                 v4l2_ctrl_handler_free(&flash->ctrls_led[i]); >                 media_entity_cleanup(&flash->subdev_led[i].entity); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3560_id_table[] = { > diff --git a/drivers/media/i2c/lm3646.c b/drivers/media/i2c/lm3646.c > index c76ccf67a909..0aaa963917d8 100644 > --- a/drivers/media/i2c/lm3646.c > +++ b/drivers/media/i2c/lm3646.c > @@ -377,15 +377,13 @@ static int lm3646_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3646_remove(struct i2c_client *client) > +static void lm3646_remove(struct i2c_client *client) >  { >         struct lm3646_flash *flash = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(&flash->subdev_led); >         v4l2_ctrl_handler_free(&flash->ctrls_led); >         media_entity_cleanup(&flash->subdev_led.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3646_id_table[] = { > diff --git a/drivers/media/i2c/m52790.c b/drivers/media/i2c/m52790.c > index 0a1efc1417bc..2ab91b993c33 100644 > --- a/drivers/media/i2c/m52790.c > +++ b/drivers/media/i2c/m52790.c > @@ -154,12 +154,11 @@ static int m52790_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m52790_remove(struct i2c_client *client) > +static void m52790_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/m5mols/m5mols_core.c > b/drivers/media/i2c/m5mols/m5mols_core.c > index c19590389bfe..2201d2a26353 100644 > --- a/drivers/media/i2c/m5mols/m5mols_core.c > +++ b/drivers/media/i2c/m5mols/m5mols_core.c > @@ -1020,15 +1020,13 @@ static int m5mols_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m5mols_remove(struct i2c_client *client) > +static void m5mols_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id m5mols_id[] = { > diff --git a/drivers/media/i2c/max2175.c > b/drivers/media/i2c/max2175.c > index 0eea200124d2..1019020f3a37 100644 > --- a/drivers/media/i2c/max2175.c > +++ b/drivers/media/i2c/max2175.c > @@ -1403,15 +1403,13 @@ static int max2175_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max2175_remove(struct i2c_client *client) > +static void max2175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct max2175 *ctx = max2175_from_sd(sd); >   >         v4l2_ctrl_handler_free(&ctx->ctrl_hdl); >         v4l2_async_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id max2175_id[] = { > diff --git a/drivers/media/i2c/max9286.c > b/drivers/media/i2c/max9286.c > index 3684faa72253..9c083cf14231 100644 > --- a/drivers/media/i2c/max9286.c > +++ b/drivers/media/i2c/max9286.c > @@ -1378,7 +1378,7 @@ static int max9286_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max9286_remove(struct i2c_client *client) > +static void max9286_remove(struct i2c_client *client) >  { >         struct max9286_priv *priv = > sd_to_max9286(i2c_get_clientdata(client)); >   > @@ -1391,8 +1391,6 @@ static int max9286_remove(struct i2c_client > *client) >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); >   >         max9286_cleanup_dt(priv); > - > -       return 0; >  } >   >  static const struct of_device_id max9286_dt_ids[] = { > diff --git a/drivers/media/i2c/ml86v7667.c > b/drivers/media/i2c/ml86v7667.c > index 48cc0b0922f4..49ec59b0ca43 100644 > --- a/drivers/media/i2c/ml86v7667.c > +++ b/drivers/media/i2c/ml86v7667.c > @@ -415,15 +415,13 @@ static int ml86v7667_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ml86v7667_remove(struct i2c_client *client) > +static void ml86v7667_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ml86v7667_priv *priv = to_ml86v7667(sd); >   >         v4l2_ctrl_handler_free(&priv->hdl); >         v4l2_device_unregister_subdev(&priv->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ml86v7667_id[] = { > diff --git a/drivers/media/i2c/msp3400-driver.c > b/drivers/media/i2c/msp3400-driver.c > index 39530d43590e..4ce7a15a9884 100644 > --- a/drivers/media/i2c/msp3400-driver.c > +++ b/drivers/media/i2c/msp3400-driver.c > @@ -859,7 +859,7 @@ static int msp_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int msp_remove(struct i2c_client *client) > +static void msp_remove(struct i2c_client *client) >  { >         struct msp_state *state = > to_state(i2c_get_clientdata(client)); >   > @@ -872,7 +872,6 @@ static int msp_remove(struct i2c_client *client) >         msp_reset(client); >   >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9m001.c > b/drivers/media/i2c/mt9m001.c > index ad13b0c890c0..ebf9cf1e1bce 100644 > --- a/drivers/media/i2c/mt9m001.c > +++ b/drivers/media/i2c/mt9m001.c > @@ -833,7 +833,7 @@ static int mt9m001_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m001_remove(struct i2c_client *client) > +static void mt9m001_remove(struct i2c_client *client) >  { >         struct mt9m001 *mt9m001 = to_mt9m001(client); >   > @@ -853,8 +853,6 @@ static int mt9m001_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&mt9m001->hdl); >         mutex_destroy(&mt9m001->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9m001_id[] = { > diff --git a/drivers/media/i2c/mt9m032.c > b/drivers/media/i2c/mt9m032.c > index ba0c0ea91c95..76b8c9c08c82 100644 > --- a/drivers/media/i2c/mt9m032.c > +++ b/drivers/media/i2c/mt9m032.c > @@ -858,7 +858,7 @@ static int mt9m032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9m032_remove(struct i2c_client *client) > +static void mt9m032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9m032 *sensor = to_mt9m032(subdev); > @@ -867,7 +867,6 @@ static int mt9m032_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&sensor->lock); > -       return 0; >  } >   >  static const struct i2c_device_id mt9m032_id_table[] = { > diff --git a/drivers/media/i2c/mt9m111.c > b/drivers/media/i2c/mt9m111.c > index afc86efa9e3e..f5fe272d1205 100644 > --- a/drivers/media/i2c/mt9m111.c > +++ b/drivers/media/i2c/mt9m111.c > @@ -1359,15 +1359,13 @@ static int mt9m111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m111_remove(struct i2c_client *client) > +static void mt9m111_remove(struct i2c_client *client) >  { >         struct mt9m111 *mt9m111 = to_mt9m111(client); >   >         v4l2_async_unregister_subdev(&mt9m111->subdev); >         media_entity_cleanup(&mt9m111->subdev.entity); >         v4l2_ctrl_handler_free(&mt9m111->hdl); > - > -       return 0; >  } >  static const struct of_device_id mt9m111_of_match[] = { >         { .compatible = "micron,mt9m111", }, > diff --git a/drivers/media/i2c/mt9p031.c > b/drivers/media/i2c/mt9p031.c > index cbce8b88dbcf..00da584a47b7 100644 > --- a/drivers/media/i2c/mt9p031.c > +++ b/drivers/media/i2c/mt9p031.c > @@ -1200,7 +1200,7 @@ static int mt9p031_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9p031_remove(struct i2c_client *client) > +static void mt9p031_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9p031 *mt9p031 = to_mt9p031(subdev); > @@ -1209,8 +1209,6 @@ static int mt9p031_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&mt9p031->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9p031_id[] = { > diff --git a/drivers/media/i2c/mt9t001.c > b/drivers/media/i2c/mt9t001.c > index b651ee4a26e8..d5abe4a7ef07 100644 > --- a/drivers/media/i2c/mt9t001.c > +++ b/drivers/media/i2c/mt9t001.c > @@ -961,7 +961,7 @@ static int mt9t001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9t001_remove(struct i2c_client *client) > +static void mt9t001_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9t001 *mt9t001 = to_mt9t001(subdev); > @@ -969,7 +969,6 @@ static int mt9t001_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&mt9t001->ctrls); >         v4l2_device_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); > -       return 0; >  } >   >  static const struct i2c_device_id mt9t001_id[] = { > diff --git a/drivers/media/i2c/mt9t112.c > b/drivers/media/i2c/mt9t112.c > index 8d2e3caa9b28..ad564095d0cf 100644 > --- a/drivers/media/i2c/mt9t112.c > +++ b/drivers/media/i2c/mt9t112.c > @@ -1102,14 +1102,12 @@ static int mt9t112_probe(struct i2c_client > *client, >         return v4l2_async_register_subdev(&priv->subdev); >  } >   > -static int mt9t112_remove(struct i2c_client *client) > +static void mt9t112_remove(struct i2c_client *client) >  { >         struct mt9t112_priv *priv = to_mt9t112(client); >   >         clk_disable_unprepare(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9t112_id[] = { > diff --git a/drivers/media/i2c/mt9v011.c > b/drivers/media/i2c/mt9v011.c > index 7699e64e1127..9952ce06ebb2 100644 > --- a/drivers/media/i2c/mt9v011.c > +++ b/drivers/media/i2c/mt9v011.c > @@ -561,7 +561,7 @@ static int mt9v011_probe(struct i2c_client *c, >         return 0; >  } >   > -static int mt9v011_remove(struct i2c_client *c) > +static void mt9v011_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct mt9v011 *core = to_mt9v011(sd); > @@ -572,8 +572,6 @@ static int mt9v011_remove(struct i2c_client *c) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&core->ctrls); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9v032.c > b/drivers/media/i2c/mt9v032.c > index 4cfdd3dfbd42..bc4388ccc2a8 100644 > --- a/drivers/media/i2c/mt9v032.c > +++ b/drivers/media/i2c/mt9v032.c > @@ -1192,7 +1192,7 @@ static int mt9v032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9v032_remove(struct i2c_client *client) > +static void mt9v032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9v032 *mt9v032 = to_mt9v032(subdev); > @@ -1200,8 +1200,6 @@ static int mt9v032_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         v4l2_ctrl_handler_free(&mt9v032->ctrls); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct mt9v032_model_data mt9v032_model_data[] = { > diff --git a/drivers/media/i2c/mt9v111.c > b/drivers/media/i2c/mt9v111.c > index 2dc4a0f24ce8..fe18e5258d7a 100644 > --- a/drivers/media/i2c/mt9v111.c > +++ b/drivers/media/i2c/mt9v111.c > @@ -1238,7 +1238,7 @@ static int mt9v111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9v111_remove(struct i2c_client *client) > +static void mt9v111_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mt9v111_dev *mt9v111 = sd_to_mt9v111(sd); > @@ -1253,8 +1253,6 @@ static int mt9v111_remove(struct i2c_client > *client) >   >         mutex_destroy(&mt9v111->pwr_mutex); >         mutex_destroy(&mt9v111->stream_mutex); > - > -       return 0; >  } >   >  static const struct of_device_id mt9v111_of_match[] = { > diff --git a/drivers/media/i2c/noon010pc30.c > b/drivers/media/i2c/noon010pc30.c > index bc5187f46365..ecaf5e9057f1 100644 > --- a/drivers/media/i2c/noon010pc30.c > +++ b/drivers/media/i2c/noon010pc30.c > @@ -789,7 +789,7 @@ static int noon010_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int noon010_remove(struct i2c_client *client) > +static void noon010_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct noon010_info *info = to_noon010(sd); > @@ -797,8 +797,6 @@ static int noon010_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id noon010_id[] = { > diff --git a/drivers/media/i2c/og01a1b.c > b/drivers/media/i2c/og01a1b.c > index 87179fc04e00..35663c10fcd9 100644 > --- a/drivers/media/i2c/og01a1b.c > +++ b/drivers/media/i2c/og01a1b.c > @@ -1015,7 +1015,7 @@ static int og01a1b_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int og01a1b_remove(struct i2c_client *client) > +static void og01a1b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct og01a1b *og01a1b = to_og01a1b(sd); > @@ -1025,8 +1025,6 @@ static int og01a1b_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&og01a1b->mutex); > - > -       return 0; >  } >   >  static int og01a1b_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov02a10.c > b/drivers/media/i2c/ov02a10.c > index 0f08c05333ea..2c1eb724d8e5 100644 > --- a/drivers/media/i2c/ov02a10.c > +++ b/drivers/media/i2c/ov02a10.c > @@ -975,7 +975,7 @@ static int ov02a10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov02a10_remove(struct i2c_client *client) > +static void ov02a10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov02a10 *ov02a10 = to_ov02a10(sd); > @@ -988,8 +988,6 @@ static int ov02a10_remove(struct i2c_client > *client) >                 ov02a10_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         mutex_destroy(&ov02a10->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id ov02a10_of_match[] = { > diff --git a/drivers/media/i2c/ov08d10.c > b/drivers/media/i2c/ov08d10.c > index e5ef6466a3ec..c1703596c3dc 100644 > --- a/drivers/media/i2c/ov08d10.c > +++ b/drivers/media/i2c/ov08d10.c > @@ -1415,7 +1415,7 @@ static int ov08d10_get_hwcfg(struct ov08d10 > *ov08d10, struct device *dev) >         return ret; >  } >   > -static int ov08d10_remove(struct i2c_client *client) > +static void ov08d10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov08d10 *ov08d10 = to_ov08d10(sd); > @@ -1425,8 +1425,6 @@ static int ov08d10_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov08d10->mutex); > - > -       return 0; >  } >   >  static int ov08d10_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov13858.c > b/drivers/media/i2c/ov13858.c > index d5fe67c763f7..e618b613e078 100644 > --- a/drivers/media/i2c/ov13858.c > +++ b/drivers/media/i2c/ov13858.c > @@ -1769,7 +1769,7 @@ static int ov13858_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov13858_remove(struct i2c_client *client) > +static void ov13858_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13858 *ov13858 = to_ov13858(sd); > @@ -1779,8 +1779,6 @@ static int ov13858_remove(struct i2c_client > *client) >         ov13858_free_controls(ov13858); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov13858_id_table[] = { > diff --git a/drivers/media/i2c/ov13b10.c > b/drivers/media/i2c/ov13b10.c > index 7caeae641051..549e5d93e568 100644 > --- a/drivers/media/i2c/ov13b10.c > +++ b/drivers/media/i2c/ov13b10.c > @@ -1447,7 +1447,7 @@ static int ov13b10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov13b10_remove(struct i2c_client *client) > +static void ov13b10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13b10 *ov13b = to_ov13b10(sd); > @@ -1457,8 +1457,6 @@ static int ov13b10_remove(struct i2c_client > *client) >         ov13b10_free_controls(ov13b); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov13b10_pm_ops = { > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > index 4b75da55b260..29ed0ef8c033 100644 > --- a/drivers/media/i2c/ov2640.c > +++ b/drivers/media/i2c/ov2640.c > @@ -1271,7 +1271,7 @@ static int ov2640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2640_remove(struct i2c_client *client) > +static void ov2640_remove(struct i2c_client *client) >  { >         struct ov2640_priv       *priv = to_ov2640(client); >   > @@ -1281,7 +1281,6 @@ static int ov2640_remove(struct i2c_client > *client) >         media_entity_cleanup(&priv->subdev.entity); >         v4l2_device_unregister_subdev(&priv->subdev); >         clk_disable_unprepare(priv->clk); > -       return 0; >  } >   >  static const struct i2c_device_id ov2640_id[] = { > diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c > index 13ded5b2aa66..42fc64ada08c 100644 > --- a/drivers/media/i2c/ov2659.c > +++ b/drivers/media/i2c/ov2659.c > @@ -1544,7 +1544,7 @@ static int ov2659_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2659_remove(struct i2c_client *client) > +static void ov2659_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2659 *ov2659 = to_ov2659(sd); > @@ -1558,8 +1558,6 @@ static int ov2659_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov2659_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov2659_pm_ops = { > diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c > index 906c711f6821..de66d3395a4d 100644 > --- a/drivers/media/i2c/ov2680.c > +++ b/drivers/media/i2c/ov2680.c > @@ -1097,7 +1097,7 @@ static int ov2680_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_dev *sensor = to_ov2680_dev(sd); > @@ -1106,8 +1106,6 @@ static int ov2680_remove(struct i2c_client > *client) >         mutex_destroy(&sensor->lock); >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); > - > -       return 0; >  } >   >  static int __maybe_unused ov2680_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c > index b6e010ea3249..a3b524f15d89 100644 > --- a/drivers/media/i2c/ov2685.c > +++ b/drivers/media/i2c/ov2685.c > @@ -798,7 +798,7 @@ static int ov2685_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov2685_remove(struct i2c_client *client) > +static void ov2685_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2685 *ov2685 = to_ov2685(sd); > @@ -814,8 +814,6 @@ static int ov2685_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov2685_power_off(ov2685); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c > index d5f0eabf20c6..5d74ad479214 100644 > --- a/drivers/media/i2c/ov2740.c > +++ b/drivers/media/i2c/ov2740.c > @@ -1053,7 +1053,7 @@ static int ov2740_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov2740_remove(struct i2c_client *client) > +static void ov2740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2740 *ov2740 = to_ov2740(sd); > @@ -1063,8 +1063,6 @@ static int ov2740_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov2740->mutex); > - > -       return 0; >  } >   >  static int ov2740_nvmem_read(void *priv, unsigned int off, void > *val, > diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c > index db5a19babe67..7bcfdfdd1248 100644 > --- a/drivers/media/i2c/ov5640.c > +++ b/drivers/media/i2c/ov5640.c > @@ -3180,7 +3180,7 @@ static int ov5640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5640_remove(struct i2c_client *client) > +static void ov5640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5640_dev *sensor = to_ov5640_dev(sd); > @@ -3189,8 +3189,6 @@ static int ov5640_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5640_id[] = { > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c > index 562c62f192c4..81e4e87e1821 100644 > --- a/drivers/media/i2c/ov5645.c > +++ b/drivers/media/i2c/ov5645.c > @@ -1256,7 +1256,7 @@ static int ov5645_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5645_remove(struct i2c_client *client) > +static void ov5645_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5645 *ov5645 = to_ov5645(sd); > @@ -1265,8 +1265,6 @@ static int ov5645_remove(struct i2c_client > *client) >         media_entity_cleanup(&ov5645->sd.entity); >         v4l2_ctrl_handler_free(&ov5645->ctrls); >         mutex_destroy(&ov5645->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5645_id[] = { > diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c > index d346d18ce629..847a7bbb69c5 100644 > --- a/drivers/media/i2c/ov5647.c > +++ b/drivers/media/i2c/ov5647.c > @@ -1448,7 +1448,7 @@ static int ov5647_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5647_remove(struct i2c_client *client) > +static void ov5647_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5647 *sensor = to_sensor(sd); > @@ -1459,8 +1459,6 @@ static int ov5647_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5647_pm_ops = { > diff --git a/drivers/media/i2c/ov5648.c b/drivers/media/i2c/ov5648.c > index dfcd33e9ee13..84604ea7bdf9 100644 > --- a/drivers/media/i2c/ov5648.c > +++ b/drivers/media/i2c/ov5648.c > @@ -2587,7 +2587,7 @@ static int ov5648_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5648_remove(struct i2c_client *client) > +static void ov5648_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov5648_sensor *sensor = ov5648_subdev_sensor(subdev); > @@ -2597,8 +2597,6 @@ static int ov5648_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->mutex); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5648_pm_ops = { > diff --git a/drivers/media/i2c/ov5670.c b/drivers/media/i2c/ov5670.c > index 02f75c18e480..bc9fc3bc90c2 100644 > --- a/drivers/media/i2c/ov5670.c > +++ b/drivers/media/i2c/ov5670.c > @@ -2557,7 +2557,7 @@ static int ov5670_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5670_remove(struct i2c_client *client) > +static void ov5670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5670 *ov5670 = to_ov5670(sd); > @@ -2568,8 +2568,6 @@ static int ov5670_remove(struct i2c_client > *client) >         mutex_destroy(&ov5670->mutex); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5670_pm_ops = { > diff --git a/drivers/media/i2c/ov5675.c b/drivers/media/i2c/ov5675.c > index 82ba9f56baec..94dc8cb7a7c0 100644 > --- a/drivers/media/i2c/ov5675.c > +++ b/drivers/media/i2c/ov5675.c > @@ -1175,7 +1175,7 @@ static int ov5675_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov5675_remove(struct i2c_client *client) > +static void ov5675_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5675 *ov5675 = to_ov5675(sd); > @@ -1185,8 +1185,6 @@ static int ov5675_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov5675->mutex); > - > -       return 0; >  } >   >  static int ov5675_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov5693.c b/drivers/media/i2c/ov5693.c > index 117ff5403312..5a05356bcfb6 100644 > --- a/drivers/media/i2c/ov5693.c > +++ b/drivers/media/i2c/ov5693.c > @@ -1489,7 +1489,7 @@ static int ov5693_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *ov5693 = to_ov5693_sensor(sd); > @@ -1507,8 +1507,6 @@ static int ov5693_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov5693_sensor_powerdown(ov5693); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5693_pm_ops = { > diff --git a/drivers/media/i2c/ov5695.c b/drivers/media/i2c/ov5695.c > index 910309783885..61906fc54e37 100644 > --- a/drivers/media/i2c/ov5695.c > +++ b/drivers/media/i2c/ov5695.c > @@ -1361,7 +1361,7 @@ static int ov5695_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov5695_remove(struct i2c_client *client) > +static void ov5695_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5695 *ov5695 = to_ov5695(sd); > @@ -1377,8 +1377,6 @@ static int ov5695_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov5695_power_off(ov5695); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov6650.c b/drivers/media/i2c/ov6650.c > index 6458e96d9091..18f041e985b7 100644 > --- a/drivers/media/i2c/ov6650.c > +++ b/drivers/media/i2c/ov6650.c > @@ -1096,13 +1096,12 @@ static int ov6650_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov6650_remove(struct i2c_client *client) > +static void ov6650_remove(struct i2c_client *client) >  { >         struct ov6650 *priv = to_ov6650(client); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id ov6650_id[] = { > diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c > index 0e7be15bc20a..5d837a782ac8 100644 > --- a/drivers/media/i2c/ov7251.c > +++ b/drivers/media/i2c/ov7251.c > @@ -1766,7 +1766,7 @@ static int ov7251_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7251_remove(struct i2c_client *client) > +static void ov7251_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7251 *ov7251 = to_ov7251(sd); > @@ -1780,8 +1780,6 @@ static int ov7251_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(ov7251->dev)) >                 ov7251_set_power_off(ov7251->dev); >         pm_runtime_set_suspended(ov7251->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov7251_pm_ops = { > diff --git a/drivers/media/i2c/ov7640.c b/drivers/media/i2c/ov7640.c > index 977cd2d8ad33..5e2d67f0f9f2 100644 > --- a/drivers/media/i2c/ov7640.c > +++ b/drivers/media/i2c/ov7640.c > @@ -70,13 +70,11 @@ static int ov7640_probe(struct i2c_client > *client, >  } >   >   > -static int ov7640_remove(struct i2c_client *client) > +static void ov7640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov7640_id[] = { > diff --git a/drivers/media/i2c/ov7670.c b/drivers/media/i2c/ov7670.c > index 1be2c0e5bdc1..4b9b156b53c7 100644 > --- a/drivers/media/i2c/ov7670.c > +++ b/drivers/media/i2c/ov7670.c > @@ -2009,7 +2009,7 @@ static int ov7670_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov7670_remove(struct i2c_client *client) > +static void ov7670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7670_info *info = to_state(sd); > @@ -2017,7 +2017,6 @@ static int ov7670_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&info->sd.entity); > -       return 0; >  } >   >  static const struct i2c_device_id ov7670_id[] = { > diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c > index 78602a2f70b0..4189e3fc3d53 100644 > --- a/drivers/media/i2c/ov772x.c > +++ b/drivers/media/i2c/ov772x.c > @@ -1521,7 +1521,7 @@ static int ov772x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov772x_remove(struct i2c_client *client) > +static void ov772x_remove(struct i2c_client *client) >  { >         struct ov772x_priv *priv = > to_ov772x(i2c_get_clientdata(client)); >   > @@ -1532,8 +1532,6 @@ static int ov772x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); >         mutex_destroy(&priv->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov772x_id[] = { > diff --git a/drivers/media/i2c/ov7740.c b/drivers/media/i2c/ov7740.c > index 2539cfee85c8..c9fd9b0bc54a 100644 > --- a/drivers/media/i2c/ov7740.c > +++ b/drivers/media/i2c/ov7740.c > @@ -1153,7 +1153,7 @@ static int ov7740_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7740_remove(struct i2c_client *client) > +static void ov7740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7740 *ov7740 = container_of(sd, struct ov7740, > subdev); > @@ -1170,7 +1170,6 @@ static int ov7740_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         ov7740_set_power(ov7740, 0); > -       return 0; >  } >   >  static int __maybe_unused ov7740_runtime_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov8856.c b/drivers/media/i2c/ov8856.c > index a9728afc81d4..efa18d026ac3 100644 > --- a/drivers/media/i2c/ov8856.c > +++ b/drivers/media/i2c/ov8856.c > @@ -2440,7 +2440,7 @@ static int ov8856_get_hwcfg(struct ov8856 > *ov8856, struct device *dev) >         return ret; >  } >   > -static int ov8856_remove(struct i2c_client *client) > +static void ov8856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov8856 *ov8856 = to_ov8856(sd); > @@ -2452,8 +2452,6 @@ static int ov8856_remove(struct i2c_client > *client) >         mutex_destroy(&ov8856->mutex); >   >         __ov8856_power_off(ov8856); > - > -       return 0; >  } >   >  static int ov8856_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov8865.c b/drivers/media/i2c/ov8865.c > index b8f4f0d3e33d..a233c34b168e 100644 > --- a/drivers/media/i2c/ov8865.c > +++ b/drivers/media/i2c/ov8865.c > @@ -3119,7 +3119,7 @@ static int ov8865_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov8865_remove(struct i2c_client *client) > +static void ov8865_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov8865_sensor *sensor = ov8865_subdev_sensor(subdev); > @@ -3131,8 +3131,6 @@ static int ov8865_remove(struct i2c_client > *client) >         media_entity_cleanup(&subdev->entity); >   >         v4l2_fwnode_endpoint_free(&sensor->endpoint); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov8865_pm_ops = { > diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c > index 2e0b315801e5..df144a2f6eda 100644 > --- a/drivers/media/i2c/ov9282.c > +++ b/drivers/media/i2c/ov9282.c > @@ -1091,7 +1091,7 @@ static int ov9282_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int ov9282_remove(struct i2c_client *client) > +static void ov9282_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9282 *ov9282 = to_ov9282(sd); > @@ -1106,8 +1106,6 @@ static int ov9282_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&ov9282->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov9282_pm_ops = { > diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c > index 9f44ed52d164..8b80be33c5f4 100644 > --- a/drivers/media/i2c/ov9640.c > +++ b/drivers/media/i2c/ov9640.c > @@ -744,15 +744,13 @@ static int ov9640_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov9640_remove(struct i2c_client *client) > +static void ov9640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9640_priv *priv = to_ov9640_sensor(sd); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov9640_id[] = { > diff --git a/drivers/media/i2c/ov9650.c b/drivers/media/i2c/ov9650.c > index c313e11a9754..4d458993e6d6 100644 > --- a/drivers/media/i2c/ov9650.c > +++ b/drivers/media/i2c/ov9650.c > @@ -1584,7 +1584,7 @@ static int ov965x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov965x_remove(struct i2c_client *client) > +static void ov965x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov965x *ov965x = to_ov965x(sd); > @@ -1593,8 +1593,6 @@ static int ov965x_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&ov965x->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov965x_id[] = { > diff --git a/drivers/media/i2c/ov9734.c b/drivers/media/i2c/ov9734.c > index df538ceb71c3..8b0a158cb297 100644 > --- a/drivers/media/i2c/ov9734.c > +++ b/drivers/media/i2c/ov9734.c > @@ -930,7 +930,7 @@ static int ov9734_check_hwcfg(struct device *dev) >         return ret; >  } >   > -static int ov9734_remove(struct i2c_client *client) > +static void ov9734_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9734 *ov9734 = to_ov9734(sd); > @@ -940,8 +940,6 @@ static int ov9734_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov9734->mutex); > - > -       return 0; >  } >   >  static int ov9734_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm20.c > b/drivers/media/i2c/rdacm20.c > index 2615ad154f49..a2263fa825b5 100644 > --- a/drivers/media/i2c/rdacm20.c > +++ b/drivers/media/i2c/rdacm20.c > @@ -646,7 +646,7 @@ static int rdacm20_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm20_remove(struct i2c_client *client) > +static void rdacm20_remove(struct i2c_client *client) >  { >         struct rdacm20_device *dev = i2c_to_rdacm20(client); >   > @@ -655,8 +655,6 @@ static int rdacm20_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         media_entity_cleanup(&dev->sd.entity); >         i2c_unregister_device(dev->sensor); > - > -       return 0; >  } >   >  static void rdacm20_shutdown(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm21.c > b/drivers/media/i2c/rdacm21.c > index ef31cf5f23ca..9ccc56c30d3b 100644 > --- a/drivers/media/i2c/rdacm21.c > +++ b/drivers/media/i2c/rdacm21.c > @@ -614,7 +614,7 @@ static int rdacm21_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm21_remove(struct i2c_client *client) > +static void rdacm21_remove(struct i2c_client *client) >  { >         struct rdacm21_device *dev = > sd_to_rdacm21(i2c_get_clientdata(client)); >   > @@ -622,8 +622,6 @@ static int rdacm21_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         i2c_unregister_device(dev->isp); >         fwnode_handle_put(dev->sd.fwnode); > - > -       return 0; >  } >   >  static const struct of_device_id rdacm21_of_ids[] = { > diff --git a/drivers/media/i2c/rj54n1cb0c.c > b/drivers/media/i2c/rj54n1cb0c.c > index 2e4018c26912..1c3502f34cd3 100644 > --- a/drivers/media/i2c/rj54n1cb0c.c > +++ b/drivers/media/i2c/rj54n1cb0c.c > @@ -1398,7 +1398,7 @@ static int rj54n1_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rj54n1_remove(struct i2c_client *client) > +static void rj54n1_remove(struct i2c_client *client) >  { >         struct rj54n1 *rj54n1 = to_rj54n1(client); >   > @@ -1410,8 +1410,6 @@ static int rj54n1_remove(struct i2c_client > *client) >         clk_put(rj54n1->clk); >         v4l2_ctrl_handler_free(&rj54n1->hdl); >         v4l2_async_unregister_subdev(&rj54n1->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rj54n1_id[] = { > diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > index e2b88c5e4f98..d96ba58ce1e5 100644 > --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > @@ -1770,7 +1770,7 @@ static int s5c73m3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5c73m3_remove(struct i2c_client *client) > +static void s5c73m3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *oif_sd = i2c_get_clientdata(client); >         struct s5c73m3 *state = oif_sd_to_s5c73m3(oif_sd); > @@ -1785,8 +1785,6 @@ static int s5c73m3_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor_sd->entity); >   >         s5c73m3_unregister_spi_driver(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5c73m3_id[] = { > diff --git a/drivers/media/i2c/s5k4ecgx.c > b/drivers/media/i2c/s5k4ecgx.c > index af9a305242cd..3dddcd9dd351 100644 > --- a/drivers/media/i2c/s5k4ecgx.c > +++ b/drivers/media/i2c/s5k4ecgx.c > @@ -996,7 +996,7 @@ static int s5k4ecgx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k4ecgx_remove(struct i2c_client *client) > +static void s5k4ecgx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct s5k4ecgx *priv = to_s5k4ecgx(sd); > @@ -1006,8 +1006,6 @@ static int s5k4ecgx_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&priv->handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k4ecgx_id[] = { > diff --git a/drivers/media/i2c/s5k5baf.c > b/drivers/media/i2c/s5k5baf.c > index 6a5dceb699a8..5c2253ab3b6f 100644 > --- a/drivers/media/i2c/s5k5baf.c > +++ b/drivers/media/i2c/s5k5baf.c > @@ -2018,7 +2018,7 @@ static int s5k5baf_probe(struct i2c_client *c) >         return ret; >  } >   > -static int s5k5baf_remove(struct i2c_client *c) > +static void s5k5baf_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct s5k5baf *state = to_s5k5baf(sd); > @@ -2030,8 +2030,6 @@ static int s5k5baf_remove(struct i2c_client *c) >         sd = &state->cis_sd; >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k5baf_id[] = { > diff --git a/drivers/media/i2c/s5k6a3.c b/drivers/media/i2c/s5k6a3.c > index f6ecf6f92bb2..a4efd6d10b43 100644 > --- a/drivers/media/i2c/s5k6a3.c > +++ b/drivers/media/i2c/s5k6a3.c > @@ -354,14 +354,13 @@ static int s5k6a3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5k6a3_remove(struct i2c_client *client) > +static void s5k6a3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         pm_runtime_disable(&client->dev); >         v4l2_async_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > -       return 0; >  } >   >  static const struct i2c_device_id s5k6a3_ids[] = { > diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c > index 105a4b7d8354..059211788a65 100644 > --- a/drivers/media/i2c/s5k6aa.c > +++ b/drivers/media/i2c/s5k6aa.c > @@ -1621,15 +1621,13 @@ static int s5k6aa_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k6aa_remove(struct i2c_client *client) > +static void s5k6aa_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k6aa_id[] = { > diff --git a/drivers/media/i2c/saa6588.c > b/drivers/media/i2c/saa6588.c > index d1e0716bdfff..d6a51beabd02 100644 > --- a/drivers/media/i2c/saa6588.c > +++ b/drivers/media/i2c/saa6588.c > @@ -484,7 +484,7 @@ static int saa6588_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6588_remove(struct i2c_client *client) > +static void saa6588_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa6588 *s = to_saa6588(sd); > @@ -492,8 +492,6 @@ static int saa6588_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >   >         cancel_delayed_work_sync(&s->work); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa6752hs.c > b/drivers/media/i2c/saa6752hs.c > index a7f043cad149..5928cc6f4595 100644 > --- a/drivers/media/i2c/saa6752hs.c > +++ b/drivers/media/i2c/saa6752hs.c > @@ -764,13 +764,12 @@ static int saa6752hs_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6752hs_remove(struct i2c_client *client) > +static void saa6752hs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id saa6752hs_id[] = { > diff --git a/drivers/media/i2c/saa7110.c > b/drivers/media/i2c/saa7110.c > index 0c7a9ce0a693..5067525d8b11 100644 > --- a/drivers/media/i2c/saa7110.c > +++ b/drivers/media/i2c/saa7110.c > @@ -428,14 +428,13 @@ static int saa7110_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7110_remove(struct i2c_client *client) > +static void saa7110_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7110 *decoder = to_saa7110(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7115.c > b/drivers/media/i2c/saa7115.c > index 15ff80e6301e..86e70a980218 100644 > --- a/drivers/media/i2c/saa7115.c > +++ b/drivers/media/i2c/saa7115.c > @@ -1927,13 +1927,12 @@ static int saa711x_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa711x_remove(struct i2c_client *client) > +static void saa711x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id saa711x_id[] = { > diff --git a/drivers/media/i2c/saa7127.c > b/drivers/media/i2c/saa7127.c > index 891192f6412a..78c9388c2ea1 100644 > --- a/drivers/media/i2c/saa7127.c > +++ b/drivers/media/i2c/saa7127.c > @@ -785,14 +785,13 @@ static int saa7127_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa7127_remove(struct i2c_client *client) > +static void saa7127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         /* Turn off TV output */ >         saa7127_set_video_enable(sd, 0); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa717x.c > b/drivers/media/i2c/saa717x.c > index adf905360171..4f3d1b432a4e 100644 > --- a/drivers/media/i2c/saa717x.c > +++ b/drivers/media/i2c/saa717x.c > @@ -1324,13 +1324,12 @@ static int saa717x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa717x_remove(struct i2c_client *client) > +static void saa717x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7185.c > b/drivers/media/i2c/saa7185.c > index 7a04422df8c8..266462325d30 100644 > --- a/drivers/media/i2c/saa7185.c > +++ b/drivers/media/i2c/saa7185.c > @@ -322,7 +322,7 @@ static int saa7185_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7185_remove(struct i2c_client *client) > +static void saa7185_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7185 *encoder = to_saa7185(sd); > @@ -330,7 +330,6 @@ static int saa7185_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         /* SW: output off is active */ >         saa7185_write(sd, 0x61, (encoder->reg[0x61]) | 0x40); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sony-btf-mpx.c > b/drivers/media/i2c/sony-btf-mpx.c > index ad239280c42e..927a9ec41463 100644 > --- a/drivers/media/i2c/sony-btf-mpx.c > +++ b/drivers/media/i2c/sony-btf-mpx.c > @@ -357,13 +357,11 @@ static int sony_btf_mpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sony_btf_mpx_remove(struct i2c_client *client) > +static void sony_btf_mpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sr030pc30.c > b/drivers/media/i2c/sr030pc30.c > index 19c0252df2f1..ff18693beb5c 100644 > --- a/drivers/media/i2c/sr030pc30.c > +++ b/drivers/media/i2c/sr030pc30.c > @@ -732,13 +732,12 @@ static int sr030pc30_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sr030pc30_remove(struct i2c_client *client) > +static void sr030pc30_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id sr030pc30_id[] = { > diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st- > mipid02.c > index ef976d085d72..0389223a61f7 100644 > --- a/drivers/media/i2c/st-mipid02.c > +++ b/drivers/media/i2c/st-mipid02.c > @@ -1041,7 +1041,7 @@ static int mipid02_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mipid02_remove(struct i2c_client *client) > +static void mipid02_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mipid02_dev *bridge = to_mipid02_dev(sd); > @@ -1052,8 +1052,6 @@ static int mipid02_remove(struct i2c_client > *client) >         mipid02_set_power_off(bridge); >         media_entity_cleanup(&bridge->sd.entity); >         mutex_destroy(&bridge->lock); > - > -       return 0; >  } >   >  static const struct of_device_id mipid02_dt_ids[] = { > diff --git a/drivers/media/i2c/tc358743.c > b/drivers/media/i2c/tc358743.c > index e18b8947ad7e..d99eedbdf011 100644 > --- a/drivers/media/i2c/tc358743.c > +++ b/drivers/media/i2c/tc358743.c > @@ -2169,7 +2169,7 @@ static int tc358743_probe(struct i2c_client > *client) >         return err; >  } >   > -static int tc358743_remove(struct i2c_client *client) > +static void tc358743_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tc358743_state *state = to_state(sd); > @@ -2185,8 +2185,6 @@ static int tc358743_remove(struct i2c_client > *client) >         mutex_destroy(&state->confctl_mutex); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358743_id[] = { > diff --git a/drivers/media/i2c/tda1997x.c > b/drivers/media/i2c/tda1997x.c > index 8fafce26d62f..47d60f9a656f 100644 > --- a/drivers/media/i2c/tda1997x.c > +++ b/drivers/media/i2c/tda1997x.c > @@ -2805,7 +2805,7 @@ static int tda1997x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda1997x_remove(struct i2c_client *client) > +static void tda1997x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda1997x_state *state = to_state(sd); > @@ -2827,8 +2827,6 @@ static int tda1997x_remove(struct i2c_client > *client) >         mutex_destroy(&state->lock); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver tda1997x_i2c_driver = { > diff --git a/drivers/media/i2c/tda7432.c > b/drivers/media/i2c/tda7432.c > index cbdc9be0a597..11e918311b13 100644 > --- a/drivers/media/i2c/tda7432.c > +++ b/drivers/media/i2c/tda7432.c > @@ -390,7 +390,7 @@ static int tda7432_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda7432_remove(struct i2c_client *client) > +static void tda7432_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda7432 *t = to_state(sd); > @@ -398,7 +398,6 @@ static int tda7432_remove(struct i2c_client > *client) >         tda7432_set(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&t->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tda7432_id[] = { > diff --git a/drivers/media/i2c/tda9840.c > b/drivers/media/i2c/tda9840.c > index 8c6dfe746b20..aaa74944fc7c 100644 > --- a/drivers/media/i2c/tda9840.c > +++ b/drivers/media/i2c/tda9840.c > @@ -175,12 +175,11 @@ static int tda9840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9840_remove(struct i2c_client *client) > +static void tda9840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tda9840_id[] = { > diff --git a/drivers/media/i2c/tea6415c.c > b/drivers/media/i2c/tea6415c.c > index 67378dbcc74b..50e74314f315 100644 > --- a/drivers/media/i2c/tea6415c.c > +++ b/drivers/media/i2c/tea6415c.c > @@ -134,12 +134,11 @@ static int tea6415c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6415c_remove(struct i2c_client *client) > +static void tea6415c_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6415c_id[] = { > diff --git a/drivers/media/i2c/tea6420.c > b/drivers/media/i2c/tea6420.c > index 712141b261ed..246f2b10ccc7 100644 > --- a/drivers/media/i2c/tea6420.c > +++ b/drivers/media/i2c/tea6420.c > @@ -116,12 +116,11 @@ static int tea6420_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6420_remove(struct i2c_client *client) > +static void tea6420_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6420_id[] = { > diff --git a/drivers/media/i2c/ths7303.c > b/drivers/media/i2c/ths7303.c > index 8206bf7a5a8f..2a0f9a3d1a66 100644 > --- a/drivers/media/i2c/ths7303.c > +++ b/drivers/media/i2c/ths7303.c > @@ -358,13 +358,11 @@ static int ths7303_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ths7303_remove(struct i2c_client *client) > +static void ths7303_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths7303_id[] = { > diff --git a/drivers/media/i2c/ths8200.c > b/drivers/media/i2c/ths8200.c > index c52fe84cba1b..081ef5a4b950 100644 > --- a/drivers/media/i2c/ths8200.c > +++ b/drivers/media/i2c/ths8200.c > @@ -468,7 +468,7 @@ static int ths8200_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ths8200_remove(struct i2c_client *client) > +static void ths8200_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ths8200_state *decoder = to_state(sd); > @@ -478,8 +478,6 @@ static int ths8200_remove(struct i2c_client > *client) >   >         ths8200_s_power(sd, false); >         v4l2_async_unregister_subdev(&decoder->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths8200_id[] = { > diff --git a/drivers/media/i2c/tlv320aic23b.c > b/drivers/media/i2c/tlv320aic23b.c > index e4c21990fea9..937fa1dbaecb 100644 > --- a/drivers/media/i2c/tlv320aic23b.c > +++ b/drivers/media/i2c/tlv320aic23b.c > @@ -177,14 +177,13 @@ static int tlv320aic23b_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tlv320aic23b_remove(struct i2c_client *client) > +static void tlv320aic23b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tlv320aic23b_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvaudio.c > b/drivers/media/i2c/tvaudio.c > index e6796e94dadf..9f1ed078b661 100644 > --- a/drivers/media/i2c/tvaudio.c > +++ b/drivers/media/i2c/tvaudio.c > @@ -2065,7 +2065,7 @@ static int tvaudio_probe(struct i2c_client > *client, const struct i2c_device_id * >         return 0; >  } >   > -static int tvaudio_remove(struct i2c_client *client) > +static void tvaudio_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct CHIPSTATE *chip = to_state(sd); > @@ -2079,7 +2079,6 @@ static int tvaudio_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&chip->hdl); > -       return 0; >  } >   >  /* This driver supports many devices and the idea is to let the > driver > diff --git a/drivers/media/i2c/tvp514x.c > b/drivers/media/i2c/tvp514x.c > index cee60f945036..a746d96875f9 100644 > --- a/drivers/media/i2c/tvp514x.c > +++ b/drivers/media/i2c/tvp514x.c > @@ -1121,7 +1121,7 @@ tvp514x_probe(struct i2c_client *client, const > struct i2c_device_id *id) >   * Unregister decoder as an i2c client device and V4L2 >   * device. Complement of tvp514x_probe(). >   */ > -static int tvp514x_remove(struct i2c_client *client) > +static void tvp514x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tvp514x_decoder *decoder = to_decoder(sd); > @@ -1129,7 +1129,6 @@ static int tvp514x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&decoder->sd); >         media_entity_cleanup(&decoder->sd.entity); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >  /* TVP5146 Init/Power on Sequence */ >  static const struct tvp514x_reg tvp5146_init_reg_seq[] = { > diff --git a/drivers/media/i2c/tvp5150.c > b/drivers/media/i2c/tvp5150.c > index 65472438444b..de21e67c0709 100644 > --- a/drivers/media/i2c/tvp5150.c > +++ b/drivers/media/i2c/tvp5150.c > @@ -2230,7 +2230,7 @@ static int tvp5150_probe(struct i2c_client *c) >         return res; >  } >   > -static int tvp5150_remove(struct i2c_client *c) > +static void tvp5150_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp5150 *decoder = to_tvp5150(sd); > @@ -2250,8 +2250,6 @@ static int tvp5150_remove(struct i2c_client *c) >         v4l2_ctrl_handler_free(&decoder->hdl); >         pm_runtime_disable(&c->dev); >         pm_runtime_set_suspended(&c->dev); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvp7002.c > b/drivers/media/i2c/tvp7002.c > index 2de18833b07b..4ccd218f5584 100644 > --- a/drivers/media/i2c/tvp7002.c > +++ b/drivers/media/i2c/tvp7002.c > @@ -1044,7 +1044,7 @@ static int tvp7002_probe(struct i2c_client *c) >   * Reset the TVP7002 device >   * Returns zero. >   */ > -static int tvp7002_remove(struct i2c_client *c) > +static void tvp7002_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp7002 *device = to_tvp7002(sd); > @@ -1056,7 +1056,6 @@ static int tvp7002_remove(struct i2c_client *c) >         media_entity_cleanup(&device->sd.entity); >  #endif >         v4l2_ctrl_handler_free(&device->hdl); > -       return 0; >  } >   >  /* I2C Device ID table */ > diff --git a/drivers/media/i2c/tw2804.c b/drivers/media/i2c/tw2804.c > index cd05f1ff504d..c7c8dfe8a8a8 100644 > --- a/drivers/media/i2c/tw2804.c > +++ b/drivers/media/i2c/tw2804.c > @@ -405,14 +405,13 @@ static int tw2804_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw2804_remove(struct i2c_client *client) > +static void tw2804_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tw2804 *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tw2804_id[] = { > diff --git a/drivers/media/i2c/tw9903.c b/drivers/media/i2c/tw9903.c > index f8e3ab4909d8..d7eef7986b75 100644 > --- a/drivers/media/i2c/tw9903.c > +++ b/drivers/media/i2c/tw9903.c > @@ -235,13 +235,12 @@ static int tw9903_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9903_remove(struct i2c_client *client) > +static void tw9903_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9906.c b/drivers/media/i2c/tw9906.c > index c528eb01fed0..549ad8f72f12 100644 > --- a/drivers/media/i2c/tw9906.c > +++ b/drivers/media/i2c/tw9906.c > @@ -203,13 +203,12 @@ static int tw9906_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9906_remove(struct i2c_client *client) > +static void tw9906_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c > index 09f5b3986928..853b5acead32 100644 > --- a/drivers/media/i2c/tw9910.c > +++ b/drivers/media/i2c/tw9910.c > @@ -993,7 +993,7 @@ static int tw9910_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tw9910_remove(struct i2c_client *client) > +static void tw9910_remove(struct i2c_client *client) >  { >         struct tw9910_priv *priv = to_tw9910(client); >   > @@ -1001,8 +1001,6 @@ static int tw9910_remove(struct i2c_client > *client) >                 gpiod_put(priv->pdn_gpio); >         clk_put(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tw9910_id[] = { > diff --git a/drivers/media/i2c/uda1342.c > b/drivers/media/i2c/uda1342.c > index b0a9c6d7163f..d0659c4392f2 100644 > --- a/drivers/media/i2c/uda1342.c > +++ b/drivers/media/i2c/uda1342.c > @@ -72,12 +72,11 @@ static int uda1342_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int uda1342_remove(struct i2c_client *client) > +static void uda1342_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id uda1342_id[] = { > diff --git a/drivers/media/i2c/upd64031a.c > b/drivers/media/i2c/upd64031a.c > index ef35c6574785..4de26ed2ba00 100644 > --- a/drivers/media/i2c/upd64031a.c > +++ b/drivers/media/i2c/upd64031a.c > @@ -210,12 +210,11 @@ static int upd64031a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64031a_remove(struct i2c_client *client) > +static void upd64031a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/upd64083.c > b/drivers/media/i2c/upd64083.c > index d6a1698caa2a..2bfd5443d406 100644 > --- a/drivers/media/i2c/upd64083.c > +++ b/drivers/media/i2c/upd64083.c > @@ -181,12 +181,11 @@ static int upd64083_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64083_remove(struct i2c_client *client) > +static void upd64083_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video- > i2c.c > index e08e3579c0a1..f15ef2d13059 100644 > --- a/drivers/media/i2c/video-i2c.c > +++ b/drivers/media/i2c/video-i2c.c > @@ -895,7 +895,7 @@ static int video_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int video_i2c_remove(struct i2c_client *client) > +static void video_i2c_remove(struct i2c_client *client) >  { >         struct video_i2c_data *data = i2c_get_clientdata(client); >   > @@ -908,8 +908,6 @@ static int video_i2c_remove(struct i2c_client > *client) >                 data->chip->set_power(data, false); >   >         video_unregister_device(&data->vdev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/media/i2c/vp27smpx.c > b/drivers/media/i2c/vp27smpx.c > index 492af8749fca..c832edad5fa7 100644 > --- a/drivers/media/i2c/vp27smpx.c > +++ b/drivers/media/i2c/vp27smpx.c > @@ -163,12 +163,11 @@ static int vp27smpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vp27smpx_remove(struct i2c_client *client) > +static void vp27smpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/vpx3220.c > b/drivers/media/i2c/vpx3220.c > index 8be03fe5928c..b481ec196b88 100644 > --- a/drivers/media/i2c/vpx3220.c > +++ b/drivers/media/i2c/vpx3220.c > @@ -526,15 +526,13 @@ static int vpx3220_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vpx3220_remove(struct i2c_client *client) > +static void vpx3220_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct vpx3220 *decoder = to_vpx3220(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id vpx3220_id[] = { > diff --git a/drivers/media/i2c/vs6624.c b/drivers/media/i2c/vs6624.c > index 29003dec6f2d..d496bb45f201 100644 > --- a/drivers/media/i2c/vs6624.c > +++ b/drivers/media/i2c/vs6624.c > @@ -824,13 +824,12 @@ static int vs6624_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vs6624_remove(struct i2c_client *client) > +static void vs6624_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id vs6624_id[] = { > diff --git a/drivers/media/i2c/wm8739.c b/drivers/media/i2c/wm8739.c > index ed533834db54..180b35347521 100644 > --- a/drivers/media/i2c/wm8739.c > +++ b/drivers/media/i2c/wm8739.c > @@ -234,14 +234,13 @@ static int wm8739_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8739_remove(struct i2c_client *client) > +static void wm8739_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8739_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8739_id[] = { > diff --git a/drivers/media/i2c/wm8775.c b/drivers/media/i2c/wm8775.c > index d4c83c39892a..8ff97867d3cd 100644 > --- a/drivers/media/i2c/wm8775.c > +++ b/drivers/media/i2c/wm8775.c > @@ -280,14 +280,13 @@ static int wm8775_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8775_remove(struct i2c_client *client) > +static void wm8775_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8775_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8775_id[] = { > diff --git a/drivers/media/radio/radio-tea5764.c > b/drivers/media/radio/radio-tea5764.c > index 877a24e5c577..abda40e81612 100644 > --- a/drivers/media/radio/radio-tea5764.c > +++ b/drivers/media/radio/radio-tea5764.c > @@ -487,7 +487,7 @@ static int tea5764_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tea5764_i2c_remove(struct i2c_client *client) > +static void tea5764_i2c_remove(struct i2c_client *client) >  { >         struct tea5764_device *radio = i2c_get_clientdata(client); >   > @@ -499,7 +499,6 @@ static int tea5764_i2c_remove(struct i2c_client > *client) >                 v4l2_device_unregister(&radio->v4l2_dev); >                 kfree(radio); >         } > -       return 0; >  } >   >  /* I2C subsystem interface */ > diff --git a/drivers/media/radio/saa7706h.c > b/drivers/media/radio/saa7706h.c > index adb66f869dd2..f9e990a9c3ef 100644 > --- a/drivers/media/radio/saa7706h.c > +++ b/drivers/media/radio/saa7706h.c > @@ -384,7 +384,7 @@ static int saa7706h_probe(struct i2c_client > *client, >         return err; >  } >   > -static int saa7706h_remove(struct i2c_client *client) > +static void saa7706h_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7706h_state *state = to_state(sd); > @@ -393,7 +393,6 @@ static int saa7706h_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id saa7706h_id[] = { > diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c > b/drivers/media/radio/si470x/radio-si470x-i2c.c > index 59b3d77e282d..a6ad926c2b4e 100644 > --- a/drivers/media/radio/si470x/radio-si470x-i2c.c > +++ b/drivers/media/radio/si470x/radio-si470x-i2c.c > @@ -461,7 +461,7 @@ static int si470x_i2c_probe(struct i2c_client > *client) >  /* >   * si470x_i2c_remove - remove the device >   */ > -static int si470x_i2c_remove(struct i2c_client *client) > +static void si470x_i2c_remove(struct i2c_client *client) >  { >         struct si470x_device *radio = i2c_get_clientdata(client); >   > @@ -472,7 +472,6 @@ static int si470x_i2c_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&radio->hdl); >         v4l2_device_unregister(&radio->v4l2_dev); > -       return 0; >  } >   >   > diff --git a/drivers/media/radio/si4713/si4713.c > b/drivers/media/radio/si4713/si4713.c > index adbf43ff6a21..2aec642133a1 100644 > --- a/drivers/media/radio/si4713/si4713.c > +++ b/drivers/media/radio/si4713/si4713.c > @@ -1623,7 +1623,7 @@ static int si4713_probe(struct i2c_client > *client) >  } >   >  /* si4713_remove - remove the device */ > -static int si4713_remove(struct i2c_client *client) > +static void si4713_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct si4713_device *sdev = to_si4713_device(sd); > @@ -1635,8 +1635,6 @@ static int si4713_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > - > -       return 0; >  } >   >  /* si4713_i2c_driver - i2c driver interface */ > diff --git a/drivers/media/radio/tef6862.c > b/drivers/media/radio/tef6862.c > index d8810492db4f..7b0870a9785b 100644 > --- a/drivers/media/radio/tef6862.c > +++ b/drivers/media/radio/tef6862.c > @@ -165,13 +165,12 @@ static int tef6862_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tef6862_remove(struct i2c_client *client) > +static void tef6862_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id tef6862_id[] = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_demod.c > b/drivers/media/test-drivers/vidtv/vidtv_demod.c > index b7823d97b30d..e7959ab1add8 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_demod.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_demod.c > @@ -438,13 +438,11 @@ static int vidtv_demod_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_demod_i2c_remove(struct i2c_client *client) > +static void vidtv_demod_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_demod_state *state = i2c_get_clientdata(client); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_demod_i2c_driver = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > index 14b6bc902ee1..aabc97ed736b 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > @@ -414,13 +414,11 @@ static int vidtv_tuner_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_tuner_i2c_remove(struct i2c_client *client) > +static void vidtv_tuner_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_tuner_dev *tuner_dev = > i2c_get_clientdata(client); >   >         kfree(tuner_dev); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_tuner_i2c_driver = { > diff --git a/drivers/media/tuners/e4000.c > b/drivers/media/tuners/e4000.c > index a3a8d051dc6c..61ae884ea59a 100644 > --- a/drivers/media/tuners/e4000.c > +++ b/drivers/media/tuners/e4000.c > @@ -706,7 +706,7 @@ static int e4000_probe(struct i2c_client *client, >         return ret; >  } >   > -static int e4000_remove(struct i2c_client *client) > +static void e4000_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct e4000_dev *dev = container_of(sd, struct e4000_dev, > sd); > @@ -717,8 +717,6 @@ static int e4000_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id e4000_id_table[] = { > diff --git a/drivers/media/tuners/fc2580.c > b/drivers/media/tuners/fc2580.c > index 1b5961bdf2d5..f30932e1a0f3 100644 > --- a/drivers/media/tuners/fc2580.c > +++ b/drivers/media/tuners/fc2580.c > @@ -588,7 +588,7 @@ static int fc2580_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fc2580_remove(struct i2c_client *client) > +static void fc2580_remove(struct i2c_client *client) >  { >         struct fc2580_dev *dev = i2c_get_clientdata(client); >   > @@ -598,7 +598,6 @@ static int fc2580_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id fc2580_id_table[] = { > diff --git a/drivers/media/tuners/m88rs6000t.c > b/drivers/media/tuners/m88rs6000t.c > index 8647c50b66e5..e32e3e9daa15 100644 > --- a/drivers/media/tuners/m88rs6000t.c > +++ b/drivers/media/tuners/m88rs6000t.c > @@ -697,7 +697,7 @@ static int m88rs6000t_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88rs6000t_remove(struct i2c_client *client) > +static void m88rs6000t_remove(struct i2c_client *client) >  { >         struct m88rs6000t_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -707,8 +707,6 @@ static int m88rs6000t_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id m88rs6000t_id[] = { > diff --git a/drivers/media/tuners/mt2060.c > b/drivers/media/tuners/mt2060.c > index 204e6186bf71..322c806228a5 100644 > --- a/drivers/media/tuners/mt2060.c > +++ b/drivers/media/tuners/mt2060.c > @@ -509,11 +509,9 @@ static int mt2060_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt2060_remove(struct i2c_client *client) > +static void mt2060_remove(struct i2c_client *client) >  { >         dev_dbg(&client->dev, "\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt2060_id_table[] = { > diff --git a/drivers/media/tuners/mxl301rf.c > b/drivers/media/tuners/mxl301rf.c > index c628435a1b06..6422056185a9 100644 > --- a/drivers/media/tuners/mxl301rf.c > +++ b/drivers/media/tuners/mxl301rf.c > @@ -307,14 +307,13 @@ static int mxl301rf_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mxl301rf_remove(struct i2c_client *client) > +static void mxl301rf_remove(struct i2c_client *client) >  { >         struct mxl301rf_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1b0004.c > b/drivers/media/tuners/qm1d1b0004.c > index 008ad870c00f..9cba0893207c 100644 > --- a/drivers/media/tuners/qm1d1b0004.c > +++ b/drivers/media/tuners/qm1d1b0004.c > @@ -232,14 +232,13 @@ qm1d1b0004_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int qm1d1b0004_remove(struct i2c_client *client) > +static void qm1d1b0004_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe; >   >         fe = i2c_get_clientdata(client); >         kfree(fe->tuner_priv); >         fe->tuner_priv = NULL; > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1c0042.c > b/drivers/media/tuners/qm1d1c0042.c > index 53aa2558f71e..2d60bf501fb5 100644 > --- a/drivers/media/tuners/qm1d1c0042.c > +++ b/drivers/media/tuners/qm1d1c0042.c > @@ -424,14 +424,13 @@ static int qm1d1c0042_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int qm1d1c0042_remove(struct i2c_client *client) > +static void qm1d1c0042_remove(struct i2c_client *client) >  { >         struct qm1d1c0042_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/si2157.c > b/drivers/media/tuners/si2157.c > index 0de587b412d4..476b32c04c20 100644 > --- a/drivers/media/tuners/si2157.c > +++ b/drivers/media/tuners/si2157.c > @@ -951,7 +951,7 @@ static int si2157_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2157_remove(struct i2c_client *client) > +static void si2157_remove(struct i2c_client *client) >  { >         struct si2157_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -969,8 +969,6 @@ static int si2157_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/tuners/tda18212.c > b/drivers/media/tuners/tda18212.c > index bf48f1cd83d2..eb97711c9c68 100644 > --- a/drivers/media/tuners/tda18212.c > +++ b/drivers/media/tuners/tda18212.c > @@ -242,7 +242,7 @@ static int tda18212_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18212_remove(struct i2c_client *client) > +static void tda18212_remove(struct i2c_client *client) >  { >         struct tda18212_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -252,8 +252,6 @@ static int tda18212_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18212_id[] = { > diff --git a/drivers/media/tuners/tda18250.c > b/drivers/media/tuners/tda18250.c > index 8a5781b966ee..e404a5afad4c 100644 > --- a/drivers/media/tuners/tda18250.c > +++ b/drivers/media/tuners/tda18250.c > @@ -856,7 +856,7 @@ static int tda18250_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18250_remove(struct i2c_client *client) > +static void tda18250_remove(struct i2c_client *client) >  { >         struct tda18250_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -866,8 +866,6 @@ static int tda18250_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18250_id_table[] = { > diff --git a/drivers/media/tuners/tua9001.c > b/drivers/media/tuners/tua9001.c > index af7d5ea1f77e..d141d000b819 100644 > --- a/drivers/media/tuners/tua9001.c > +++ b/drivers/media/tuners/tua9001.c > @@ -227,7 +227,7 @@ static int tua9001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tua9001_remove(struct i2c_client *client) > +static void tua9001_remove(struct i2c_client *client) >  { >         struct tua9001_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -243,7 +243,6 @@ static int tua9001_remove(struct i2c_client > *client) >                         dev_err(&client->dev, "Tuner disable failed > (%pe)\n", ERR_PTR(ret)); >         } >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tua9001_id_table[] = { > diff --git a/drivers/media/usb/go7007/s2250-board.c > b/drivers/media/usb/go7007/s2250-board.c > index 1fa6f10ee157..2f45188bf9d4 100644 > --- a/drivers/media/usb/go7007/s2250-board.c > +++ b/drivers/media/usb/go7007/s2250-board.c > @@ -601,7 +601,7 @@ static int s2250_probe(struct i2c_client *client, >         return err; >  } >   > -static int s2250_remove(struct i2c_client *client) > +static void s2250_remove(struct i2c_client *client) >  { >         struct s2250 *state = to_state(i2c_get_clientdata(client)); >   > @@ -609,7 +609,6 @@ static int s2250_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id s2250_id[] = { > diff --git a/drivers/media/v4l2-core/tuner-core.c > b/drivers/media/v4l2-core/tuner-core.c > index 2d47c10de062..33162dc1daf6 100644 > --- a/drivers/media/v4l2-core/tuner-core.c > +++ b/drivers/media/v4l2-core/tuner-core.c > @@ -779,7 +779,7 @@ static int tuner_probe(struct i2c_client *client, >   * @client:    i2c_client descriptor >   */ >   > -static int tuner_remove(struct i2c_client *client) > +static void tuner_remove(struct i2c_client *client) >  { >         struct tuner *t = to_tuner(i2c_get_clientdata(client)); >   > @@ -789,7 +789,6 @@ static int tuner_remove(struct i2c_client > *client) >   >         list_del(&t->list); >         kfree(t); > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c > index eaf9845633b4..a30e47b74327 100644 > --- a/drivers/mfd/88pm800.c > +++ b/drivers/mfd/88pm800.c > @@ -583,7 +583,7 @@ static int pm800_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm800_remove(struct i2c_client *client) > +static void pm800_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -592,8 +592,6 @@ static int pm800_remove(struct i2c_client > *client) >   >         pm800_pages_exit(chip); >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm800_driver = { > diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c > index ada6c513302b..10d3637840c8 100644 > --- a/drivers/mfd/88pm805.c > +++ b/drivers/mfd/88pm805.c > @@ -239,7 +239,7 @@ static int pm805_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm805_remove(struct i2c_client *client) > +static void pm805_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -247,8 +247,6 @@ static int pm805_remove(struct i2c_client > *client) >         device_irq_exit_805(chip); >   >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm805_driver = { > diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x- > core.c > index b1e829ea909b..5dc86dd66202 100644 > --- a/drivers/mfd/88pm860x-core.c > +++ b/drivers/mfd/88pm860x-core.c > @@ -1201,7 +1201,7 @@ static int pm860x_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pm860x_remove(struct i2c_client *client) > +static void pm860x_remove(struct i2c_client *client) >  { >         struct pm860x_chip *chip = i2c_get_clientdata(client); >   > @@ -1210,7 +1210,6 @@ static int pm860x_remove(struct i2c_client > *client) >                 regmap_exit(chip->regmap_companion); >                 i2c_unregister_device(chip->companion); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/acer-ec-a500.c b/drivers/mfd/acer-ec-a500.c > index 80c2fdd14fc4..7fd8b9988075 100644 > --- a/drivers/mfd/acer-ec-a500.c > +++ b/drivers/mfd/acer-ec-a500.c > @@ -169,7 +169,7 @@ static int a500_ec_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int a500_ec_remove(struct i2c_client *client) > +static void a500_ec_remove(struct i2c_client *client) >  { >         if (of_device_is_system_power_controller(client- > >dev.of_node)) { >                 if (pm_power_off == a500_ec_poweroff) > @@ -177,8 +177,6 @@ static int a500_ec_remove(struct i2c_client > *client) >   >                 unregister_restart_handler(&a500_ec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id a500_ec_match[] = { > diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c > index 6d83e6b9a692..bfc7cf56ff2c 100644 > --- a/drivers/mfd/arizona-i2c.c > +++ b/drivers/mfd/arizona-i2c.c > @@ -84,13 +84,11 @@ static int arizona_i2c_probe(struct i2c_client > *i2c, >         return arizona_dev_init(arizona); >  } >   > -static int arizona_i2c_remove(struct i2c_client *i2c) > +static void arizona_i2c_remove(struct i2c_client *i2c) >  { >         struct arizona *arizona = dev_get_drvdata(&i2c->dev); >   >         arizona_dev_exit(arizona); > - > -       return 0; >  } >   >  static const struct i2c_device_id arizona_i2c_id[] = { > diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c > index 00ab48018d8d..8fd6727dc30a 100644 > --- a/drivers/mfd/axp20x-i2c.c > +++ b/drivers/mfd/axp20x-i2c.c > @@ -50,13 +50,11 @@ static int axp20x_i2c_probe(struct i2c_client > *i2c, >         return axp20x_device_probe(axp20x); >  } >   > -static int axp20x_i2c_remove(struct i2c_client *i2c) > +static void axp20x_i2c_remove(struct i2c_client *i2c) >  { >         struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); >   >         axp20x_device_remove(axp20x); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c > index a818fbb55988..3f8f6ad3a98c 100644 > --- a/drivers/mfd/da903x.c > +++ b/drivers/mfd/da903x.c > @@ -532,12 +532,11 @@ static int da903x_probe(struct i2c_client > *client, >         return da903x_add_subdevs(chip, pdata); >  } >   > -static int da903x_remove(struct i2c_client *client) > +static void da903x_remove(struct i2c_client *client) >  { >         struct da903x_chip *chip = i2c_get_clientdata(client); >   >         da903x_remove_subdevs(chip); > -       return 0; >  } >   >  static struct i2c_driver da903x_driver = { > diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c > index 8de93db35f3a..5a74696c8704 100644 > --- a/drivers/mfd/da9052-i2c.c > +++ b/drivers/mfd/da9052-i2c.c > @@ -168,12 +168,11 @@ static int da9052_i2c_probe(struct i2c_client > *client, >         return da9052_device_init(da9052, id->driver_data); >  } >   > -static int da9052_i2c_remove(struct i2c_client *client) > +static void da9052_i2c_remove(struct i2c_client *client) >  { >         struct da9052 *da9052 = i2c_get_clientdata(client); >   >         da9052_device_exit(da9052); > -       return 0; >  } >   >  static struct i2c_driver da9052_i2c_driver = { > diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c > index bc60433b68db..276c7d1c509e 100644 > --- a/drivers/mfd/da9055-i2c.c > +++ b/drivers/mfd/da9055-i2c.c > @@ -41,13 +41,11 @@ static int da9055_i2c_probe(struct i2c_client > *i2c, >         return da9055_device_init(da9055); >  } >   > -static int da9055_i2c_remove(struct i2c_client *i2c) > +static void da9055_i2c_remove(struct i2c_client *i2c) >  { >         struct da9055 *da9055 = i2c_get_clientdata(i2c); >   >         da9055_device_exit(da9055); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c > index 2774b2cbaea6..0a80d82c6858 100644 > --- a/drivers/mfd/da9062-core.c > +++ b/drivers/mfd/da9062-core.c > @@ -723,14 +723,12 @@ static int da9062_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9062_i2c_remove(struct i2c_client *i2c) > +static void da9062_i2c_remove(struct i2c_client *i2c) >  { >         struct da9062 *chip = i2c_get_clientdata(i2c); >   >         mfd_remove_devices(chip->dev); >         regmap_del_irq_chip(i2c->irq, chip->regmap_irq); > - > -       return 0; >  } >   >  static const struct i2c_device_id da9062_i2c_id[] = { > diff --git a/drivers/mfd/da9150-core.c b/drivers/mfd/da9150-core.c > index 58009c8cb870..6ae56e46d24e 100644 > --- a/drivers/mfd/da9150-core.c > +++ b/drivers/mfd/da9150-core.c > @@ -471,15 +471,13 @@ static int da9150_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int da9150_remove(struct i2c_client *client) > +static void da9150_remove(struct i2c_client *client) >  { >         struct da9150 *da9150 = i2c_get_clientdata(client); >   >         regmap_del_irq_chip(da9150->irq, da9150->regmap_irq_data); >         mfd_remove_devices(da9150->dev); >         i2c_unregister_device(da9150->core_qif); > - > -       return 0; >  } >   >  static void da9150_shutdown(struct i2c_client *client) > diff --git a/drivers/mfd/dm355evm_msp.c b/drivers/mfd/dm355evm_msp.c > index 54fb6cbd2aa0..759c59690680 100644 > --- a/drivers/mfd/dm355evm_msp.c > +++ b/drivers/mfd/dm355evm_msp.c > @@ -375,11 +375,10 @@ static void dm355evm_power_off(void) >         dm355evm_command(MSP_COMMAND_POWEROFF); >  } >   > -static int dm355evm_msp_remove(struct i2c_client *client) > +static void dm355evm_msp_remove(struct i2c_client *client) >  { >         pm_power_off = NULL; >         msp430 = NULL; > -       return 0; >  } >   >  static int > diff --git a/drivers/mfd/ene-kb3930.c b/drivers/mfd/ene-kb3930.c > index 1b73318d1f1f..3eff98e26bea 100644 > --- a/drivers/mfd/ene-kb3930.c > +++ b/drivers/mfd/ene-kb3930.c > @@ -177,7 +177,7 @@ static int kb3930_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int kb3930_remove(struct i2c_client *client) > +static void kb3930_remove(struct i2c_client *client) >  { >         struct kb3930 *ddata = i2c_get_clientdata(client); >   > @@ -187,8 +187,6 @@ static int kb3930_remove(struct i2c_client > *client) >                 unregister_restart_handler(&kb3930_restart_nb); >         } >         kb3930_power_off = NULL; > - > -       return 0; >  } >   >  static const struct of_device_id kb3930_dt_ids[] = { > diff --git a/drivers/mfd/gateworks-gsc.c b/drivers/mfd/gateworks- > gsc.c > index d87876747b91..9d7d870c44a8 100644 > --- a/drivers/mfd/gateworks-gsc.c > +++ b/drivers/mfd/gateworks-gsc.c > @@ -255,11 +255,9 @@ static int gsc_probe(struct i2c_client *client) >         return 0; >  } >   > -static int gsc_remove(struct i2c_client *client) > +static void gsc_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &attr_group); > - > -       return 0; >  } >   >  static struct i2c_driver gsc_driver = { > diff --git a/drivers/mfd/intel_soc_pmic_core.c > b/drivers/mfd/intel_soc_pmic_core.c > index 5e8c94e008ed..b824e15f4d22 100644 > --- a/drivers/mfd/intel_soc_pmic_core.c > +++ b/drivers/mfd/intel_soc_pmic_core.c > @@ -81,7 +81,7 @@ static int intel_soc_pmic_i2c_probe(struct > i2c_client *i2c, >         return ret; >  } >   > -static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c) > +static void intel_soc_pmic_i2c_remove(struct i2c_client *i2c) >  { >         struct intel_soc_pmic *pmic = dev_get_drvdata(&i2c->dev); >   > @@ -91,8 +91,6 @@ static int intel_soc_pmic_i2c_remove(struct > i2c_client *i2c) >         pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup)); >   >         mfd_remove_devices(&i2c->dev); > - > -       return 0; >  } >   >  static void intel_soc_pmic_shutdown(struct i2c_client *i2c) > diff --git a/drivers/mfd/iqs62x.c b/drivers/mfd/iqs62x.c > index 575ab67e243d..1895fce25b06 100644 > --- a/drivers/mfd/iqs62x.c > +++ b/drivers/mfd/iqs62x.c > @@ -1008,13 +1008,11 @@ static int iqs62x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int iqs62x_remove(struct i2c_client *client) > +static void iqs62x_remove(struct i2c_client *client) >  { >         struct iqs62x_core *iqs62x = i2c_get_clientdata(client); >   >         wait_for_completion(&iqs62x->fw_done); > - > -       return 0; >  } >   >  static int __maybe_unused iqs62x_suspend(struct device *dev) > diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c > index 5690768f3e63..be32ffc5af38 100644 > --- a/drivers/mfd/lm3533-core.c > +++ b/drivers/mfd/lm3533-core.c > @@ -607,15 +607,13 @@ static int lm3533_i2c_probe(struct i2c_client > *i2c, >         return lm3533_device_init(lm3533); >  } >   > -static int lm3533_i2c_remove(struct i2c_client *i2c) > +static void lm3533_i2c_remove(struct i2c_client *i2c) >  { >         struct lm3533 *lm3533 = i2c_get_clientdata(i2c); >   >         dev_dbg(&i2c->dev, "%s\n", __func__); >   >         lm3533_device_exit(lm3533); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3533_i2c_ids[] = { > diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c > index c223d2c6a363..e7c601bca9ef 100644 > --- a/drivers/mfd/lp8788.c > +++ b/drivers/mfd/lp8788.c > @@ -199,13 +199,12 @@ static int lp8788_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >                                ARRAY_SIZE(lp8788_devs), NULL, 0, > NULL); >  } >   > -static int lp8788_remove(struct i2c_client *cl) > +static void lp8788_remove(struct i2c_client *cl) >  { >         struct lp8788 *lp = i2c_get_clientdata(cl); >   >         mfd_remove_devices(lp->dev); >         lp8788_irq_exit(lp); > -       return 0; >  } >   >  static const struct i2c_device_id lp8788_ids[] = { > diff --git a/drivers/mfd/madera-i2c.c b/drivers/mfd/madera-i2c.c > index 7df5b9ba5855..915d2f95bad3 100644 > --- a/drivers/mfd/madera-i2c.c > +++ b/drivers/mfd/madera-i2c.c > @@ -112,13 +112,11 @@ static int madera_i2c_probe(struct i2c_client > *i2c, >         return madera_dev_init(madera); >  } >   > -static int madera_i2c_remove(struct i2c_client *i2c) > +static void madera_i2c_remove(struct i2c_client *i2c) >  { >         struct madera *madera = dev_get_drvdata(&i2c->dev); >   >         madera_dev_exit(madera); > - > -       return 0; >  } >   >  static const struct i2c_device_id madera_i2c_id[] = { > diff --git a/drivers/mfd/max14577.c b/drivers/mfd/max14577.c > index 6c487fa14e9c..d44ad6f33742 100644 > --- a/drivers/mfd/max14577.c > +++ b/drivers/mfd/max14577.c > @@ -463,7 +463,7 @@ static int max14577_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max14577_i2c_remove(struct i2c_client *i2c) > +static void max14577_i2c_remove(struct i2c_client *i2c) >  { >         struct max14577 *max14577 = i2c_get_clientdata(i2c); >   > @@ -471,8 +471,6 @@ static int max14577_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max14577->irq, max14577->irq_data); >         if (max14577->dev_type == MAXIM_DEVICE_TYPE_MAX77836) >                 max77836_remove(max14577); > - > -       return 0; >  } >   >  static const struct i2c_device_id max14577_i2c_id[] = { > diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c > index 4e6244e17559..7088cb6f9174 100644 > --- a/drivers/mfd/max77693.c > +++ b/drivers/mfd/max77693.c > @@ -294,7 +294,7 @@ static int max77693_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max77693_i2c_remove(struct i2c_client *i2c) > +static void max77693_i2c_remove(struct i2c_client *i2c) >  { >         struct max77693_dev *max77693 = i2c_get_clientdata(i2c); >   > @@ -307,8 +307,6 @@ static int max77693_i2c_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(max77693->i2c_muic); >         i2c_unregister_device(max77693->i2c_haptic); > - > -       return 0; >  } >   >  static const struct i2c_device_id max77693_i2c_id[] = { > diff --git a/drivers/mfd/max8907.c b/drivers/mfd/max8907.c > index 41f566e6a096..c340080971ce 100644 > --- a/drivers/mfd/max8907.c > +++ b/drivers/mfd/max8907.c > @@ -282,7 +282,7 @@ static int max8907_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max8907_i2c_remove(struct i2c_client *i2c) > +static void max8907_i2c_remove(struct i2c_client *i2c) >  { >         struct max8907 *max8907 = i2c_get_clientdata(i2c); >   > @@ -293,8 +293,6 @@ static int max8907_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max8907->i2c_gen->irq, max8907- > >irqc_chg); >   >         i2c_unregister_device(max8907->i2c_rtc); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c > index 114e905bef25..04101da42bd3 100644 > --- a/drivers/mfd/max8925-i2c.c > +++ b/drivers/mfd/max8925-i2c.c > @@ -198,14 +198,13 @@ static int max8925_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int max8925_remove(struct i2c_client *client) > +static void max8925_remove(struct i2c_client *client) >  { >         struct max8925_chip *chip = i2c_get_clientdata(client); >   >         max8925_device_exit(chip); >         i2c_unregister_device(chip->adc); >         i2c_unregister_device(chip->rtc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c > index fb937f66277e..eb94f3004cf3 100644 > --- a/drivers/mfd/mc13xxx-i2c.c > +++ b/drivers/mfd/mc13xxx-i2c.c > @@ -85,10 +85,9 @@ static int mc13xxx_i2c_probe(struct i2c_client > *client, >         return mc13xxx_common_init(&client->dev); >  } >   > -static int mc13xxx_i2c_remove(struct i2c_client *client) > +static void mc13xxx_i2c_remove(struct i2c_client *client) >  { >         mc13xxx_common_exit(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver mc13xxx_i2c_driver = { > diff --git a/drivers/mfd/menelaus.c b/drivers/mfd/menelaus.c > index 07e0ca2e467c..eb08f69001f9 100644 > --- a/drivers/mfd/menelaus.c > +++ b/drivers/mfd/menelaus.c > @@ -1222,14 +1222,13 @@ static int menelaus_probe(struct i2c_client > *client, >         return err; >  } >   > -static int menelaus_remove(struct i2c_client *client) > +static void menelaus_remove(struct i2c_client *client) >  { >         struct menelaus_chip    *menelaus = > i2c_get_clientdata(client); >   >         free_irq(client->irq, menelaus); >         flush_work(&menelaus->work); >         the_menelaus = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id menelaus_id[] = { > diff --git a/drivers/mfd/ntxec.c b/drivers/mfd/ntxec.c > index b711e73eedcb..e16a7a82a929 100644 > --- a/drivers/mfd/ntxec.c > +++ b/drivers/mfd/ntxec.c > @@ -239,15 +239,13 @@ static int ntxec_probe(struct i2c_client > *client) >         return res; >  } >   > -static int ntxec_remove(struct i2c_client *client) > +static void ntxec_remove(struct i2c_client *client) >  { >         if (client == poweroff_restart_client) { >                 poweroff_restart_client = NULL; >                 pm_power_off = NULL; >                 unregister_restart_handler(&ntxec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id of_ntxec_match_table[] = { > diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c > index f5b3fa973b13..8b7429bd2e3e 100644 > --- a/drivers/mfd/palmas.c > +++ b/drivers/mfd/palmas.c > @@ -700,7 +700,7 @@ static int palmas_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int palmas_i2c_remove(struct i2c_client *i2c) > +static void palmas_i2c_remove(struct i2c_client *i2c) >  { >         struct palmas *palmas = i2c_get_clientdata(i2c); >         int i; > @@ -716,8 +716,6 @@ static int palmas_i2c_remove(struct i2c_client > *i2c) >                 pm_power_off = NULL; >                 palmas_dev = NULL; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id palmas_i2c_id[] = { > diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633- > core.c > index e9c565cf0f54..4ccc2c3e7681 100644 > --- a/drivers/mfd/pcf50633-core.c > +++ b/drivers/mfd/pcf50633-core.c > @@ -273,7 +273,7 @@ static int pcf50633_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pcf50633_remove(struct i2c_client *client) > +static void pcf50633_remove(struct i2c_client *client) >  { >         struct pcf50633 *pcf = i2c_get_clientdata(client); >         int i; > @@ -289,8 +289,6 @@ static int pcf50633_remove(struct i2c_client > *client) >   >         for (i = 0; i < PCF50633_NUM_REGULATORS; i++) >                 platform_device_unregister(pcf->regulator_pdev[i]); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcf50633_id_table[] = { > diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c > index c748fd29a220..3b5acf7ca39c 100644 > --- a/drivers/mfd/retu-mfd.c > +++ b/drivers/mfd/retu-mfd.c > @@ -287,7 +287,7 @@ static int retu_probe(struct i2c_client *i2c, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int retu_remove(struct i2c_client *i2c) > +static void retu_remove(struct i2c_client *i2c) >  { >         struct retu_dev *rdev = i2c_get_clientdata(i2c); >   > @@ -297,8 +297,6 @@ static int retu_remove(struct i2c_client *i2c) >         } >         mfd_remove_devices(rdev->dev); >         regmap_del_irq_chip(i2c->irq, rdev->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id retu_id[] = { > diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c > index 4142b638e5fa..d5d641efa077 100644 > --- a/drivers/mfd/rk808.c > +++ b/drivers/mfd/rk808.c > @@ -778,7 +778,7 @@ static int rk808_probe(struct i2c_client *client, >         return ret; >  } >   > -static int rk808_remove(struct i2c_client *client) > +static void rk808_remove(struct i2c_client *client) >  { >         struct rk808 *rk808 = i2c_get_clientdata(client); >   > @@ -792,8 +792,6 @@ static int rk808_remove(struct i2c_client > *client) >                 pm_power_off = NULL; >   >         unregister_restart_handler(&rk808_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rk8xx_suspend(struct device *dev) > diff --git a/drivers/mfd/rn5t618.c b/drivers/mfd/rn5t618.c > index 384acb459427..eb8005b4e58d 100644 > --- a/drivers/mfd/rn5t618.c > +++ b/drivers/mfd/rn5t618.c > @@ -241,7 +241,7 @@ static int rn5t618_i2c_probe(struct i2c_client > *i2c) >         return rn5t618_irq_init(priv); >  } >   > -static int rn5t618_i2c_remove(struct i2c_client *i2c) > +static void rn5t618_i2c_remove(struct i2c_client *i2c) >  { >         if (i2c == rn5t618_pm_power_off) { >                 rn5t618_pm_power_off = NULL; > @@ -249,8 +249,6 @@ static int rn5t618_i2c_remove(struct i2c_client > *i2c) >         } >   >         unregister_restart_handler(&rn5t618_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rn5t618_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/rsmu_i2c.c b/drivers/mfd/rsmu_i2c.c > index dc001c9791c1..f716ab8039a0 100644 > --- a/drivers/mfd/rsmu_i2c.c > +++ b/drivers/mfd/rsmu_i2c.c > @@ -146,13 +146,11 @@ static int rsmu_i2c_probe(struct i2c_client > *client, >         return rsmu_core_init(rsmu); >  } >   > -static int rsmu_i2c_remove(struct i2c_client *client) > +static void rsmu_i2c_remove(struct i2c_client *client) >  { >         struct rsmu_ddata *rsmu = i2c_get_clientdata(client); >   >         rsmu_core_exit(rsmu); > - > -       return 0; >  } >   >  static const struct i2c_device_id rsmu_i2c_id[] = { > diff --git a/drivers/mfd/rt4831.c b/drivers/mfd/rt4831.c > index fb3bd788a3eb..c6d34dc2b520 100644 > --- a/drivers/mfd/rt4831.c > +++ b/drivers/mfd/rt4831.c > @@ -87,7 +87,7 @@ static int rt4831_probe(struct i2c_client *client) >                                     ARRAY_SIZE(rt4831_subdevs), NULL, > 0, NULL); >  } >   > -static int rt4831_remove(struct i2c_client *client) > +static void rt4831_remove(struct i2c_client *client) >  { >         struct regmap *regmap = dev_get_regmap(&client->dev, NULL); >         int ret; > @@ -96,8 +96,6 @@ static int rt4831_remove(struct i2c_client *client) >         ret = regmap_update_bits(regmap, RT4831_REG_ENABLE, > RT4831_RESET_MASK, RT4831_RESET_MASK); >         if (ret) >                 dev_warn(&client->dev, "Failed to disable outputs > (%pe)\n", ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused rt4831_of_match[] = > { > diff --git a/drivers/mfd/si476x-i2c.c b/drivers/mfd/si476x-i2c.c > index a2635c2d9d1a..8166949b725c 100644 > --- a/drivers/mfd/si476x-i2c.c > +++ b/drivers/mfd/si476x-i2c.c > @@ -835,7 +835,7 @@ static int si476x_core_probe(struct i2c_client > *client, >         return rval; >  } >   > -static int si476x_core_remove(struct i2c_client *client) > +static void si476x_core_remove(struct i2c_client *client) >  { >         struct si476x_core *core = i2c_get_clientdata(client); >   > @@ -851,8 +851,6 @@ static int si476x_core_remove(struct i2c_client > *client) >   >         if (gpio_is_valid(core->gpio_reset)) >                 gpio_free(core->gpio_reset); > - > -       return 0; >  } >   >   > diff --git a/drivers/mfd/stmfx.c b/drivers/mfd/stmfx.c > index 122f96094410..5dd7d9688459 100644 > --- a/drivers/mfd/stmfx.c > +++ b/drivers/mfd/stmfx.c > @@ -467,13 +467,11 @@ static int stmfx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stmfx_remove(struct i2c_client *client) > +static void stmfx_remove(struct i2c_client *client) >  { >         stmfx_irq_exit(client); >   >         stmfx_chip_exit(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c > index d3eedf3d607e..4d55494a97c4 100644 > --- a/drivers/mfd/stmpe-i2c.c > +++ b/drivers/mfd/stmpe-i2c.c > @@ -91,13 +91,11 @@ stmpe_i2c_probe(struct i2c_client *i2c, const > struct i2c_device_id *id) >         return stmpe_probe(&i2c_ci, partnum); >  } >   > -static int stmpe_i2c_remove(struct i2c_client *i2c) > +static void stmpe_i2c_remove(struct i2c_client *i2c) >  { >         struct stmpe *stmpe = dev_get_drvdata(&i2c->dev); >   >         stmpe_remove(stmpe); > - > -       return 0; >  } >   >  static const struct i2c_device_id stmpe_i2c_id[] = { > diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c > index 13583cdb93b6..d5d0ec117acb 100644 > --- a/drivers/mfd/tc3589x.c > +++ b/drivers/mfd/tc3589x.c > @@ -429,13 +429,11 @@ static int tc3589x_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int tc3589x_remove(struct i2c_client *client) > +static void tc3589x_remove(struct i2c_client *client) >  { >         struct tc3589x *tc3589x = i2c_get_clientdata(client); >   >         mfd_remove_devices(tc3589x->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/tps6105x.c b/drivers/mfd/tps6105x.c > index c906324d293e..b360568ea675 100644 > --- a/drivers/mfd/tps6105x.c > +++ b/drivers/mfd/tps6105x.c > @@ -179,7 +179,7 @@ static int tps6105x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6105x_remove(struct i2c_client *client) > +static void tps6105x_remove(struct i2c_client *client) >  { >         struct tps6105x *tps6105x = i2c_get_clientdata(client); >   > @@ -189,8 +189,6 @@ static int tps6105x_remove(struct i2c_client > *client) >         regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0, >                 TPS6105X_REG0_MODE_MASK, >                 TPS6105X_MODE_SHUTDOWN << TPS6105X_REG0_MODE_SHIFT); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps6105x_id[] = { > diff --git a/drivers/mfd/tps65010.c b/drivers/mfd/tps65010.c > index 7e7dbee58ca9..c2afa2e69f42 100644 > --- a/drivers/mfd/tps65010.c > +++ b/drivers/mfd/tps65010.c > @@ -501,7 +501,7 @@ static int tps65010_gpio_get(struct gpio_chip > *chip, unsigned offset) >   >  static struct tps65010 *the_tps; >   > -static int tps65010_remove(struct i2c_client *client) > +static void tps65010_remove(struct i2c_client *client) >  { >         struct tps65010         *tps = i2c_get_clientdata(client); >         struct tps65010_board   *board = dev_get_platdata(&client- > >dev); > @@ -517,7 +517,6 @@ static int tps65010_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&tps->work); >         debugfs_remove(tps->file); >         the_tps = NULL; > -       return 0; >  } >   >  static int tps65010_probe(struct i2c_client *client, > diff --git a/drivers/mfd/tps65086.c b/drivers/mfd/tps65086.c > index 3bd5728844a0..eb5afbeb0e91 100644 > --- a/drivers/mfd/tps65086.c > +++ b/drivers/mfd/tps65086.c > @@ -119,14 +119,12 @@ static int tps65086_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps65086_remove(struct i2c_client *client) > +static void tps65086_remove(struct i2c_client *client) >  { >         struct tps65086 *tps = i2c_get_clientdata(client); >   >         if (tps->irq > 0) >                 regmap_del_irq_chip(tps->irq, tps->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65086_id_table[] = { > diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c > index 8027b0a9e14f..a7200ddd85e6 100644 > --- a/drivers/mfd/tps65217.c > +++ b/drivers/mfd/tps65217.c > @@ -382,7 +382,7 @@ static int tps65217_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps65217_remove(struct i2c_client *client) > +static void tps65217_remove(struct i2c_client *client) >  { >         struct tps65217 *tps = i2c_get_clientdata(client); >         unsigned int virq; > @@ -396,8 +396,6 @@ static int tps65217_remove(struct i2c_client > *client) >   >         irq_domain_remove(tps->irq_domain); >         tps->irq_domain = NULL; > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65217_id_table[] = { > diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c > index c9303d3d6602..fb340da64bbc 100644 > --- a/drivers/mfd/tps6586x.c > +++ b/drivers/mfd/tps6586x.c > @@ -579,7 +579,7 @@ static int tps6586x_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6586x_i2c_remove(struct i2c_client *client) > +static void tps6586x_i2c_remove(struct i2c_client *client) >  { >         struct tps6586x *tps6586x = i2c_get_clientdata(client); >   > @@ -587,7 +587,6 @@ static int tps6586x_i2c_remove(struct i2c_client > *client) >         mfd_remove_devices(tps6586x->dev); >         if (client->irq) >                 free_irq(client->irq, tps6586x); > -       return 0; >  } >   >  static int __maybe_unused tps6586x_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/tps65912-i2c.c b/drivers/mfd/tps65912-i2c.c > index 06eb2784d322..cbbac1567eaa 100644 > --- a/drivers/mfd/tps65912-i2c.c > +++ b/drivers/mfd/tps65912-i2c.c > @@ -51,13 +51,11 @@ static int tps65912_i2c_probe(struct i2c_client > *client, >         return tps65912_device_init(tps); >  } >   > -static int tps65912_i2c_remove(struct i2c_client *client) > +static void tps65912_i2c_remove(struct i2c_client *client) >  { >         struct tps65912 *tps = i2c_get_clientdata(client); >   >         tps65912_device_exit(tps); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65912_i2c_id_table[] = { > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c > index bd6659cf3bc0..89a96db15b33 100644 > --- a/drivers/mfd/twl-core.c > +++ b/drivers/mfd/twl-core.c > @@ -1033,7 +1033,7 @@ static void clocks_init(struct device *dev, >  /*------------------------------------------------------------------ > ----*/ >   >   > -static int twl_remove(struct i2c_client *client) > +static void twl_remove(struct i2c_client *client) >  { >         unsigned i, num_slaves; >   > @@ -1051,7 +1051,6 @@ static int twl_remove(struct i2c_client > *client) >                 twl->client = NULL; >         } >         twl_priv->ready = false; > -       return 0; >  } >   >  static struct of_dev_auxdata twl_auxdata_lookup[] = { > diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c > index b9c6d94b4002..f429b8f00db6 100644 > --- a/drivers/mfd/twl6040.c > +++ b/drivers/mfd/twl6040.c > @@ -808,7 +808,7 @@ static int twl6040_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int twl6040_remove(struct i2c_client *client) > +static void twl6040_remove(struct i2c_client *client) >  { >         struct twl6040 *twl6040 = i2c_get_clientdata(client); >   > @@ -820,8 +820,6 @@ static int twl6040_remove(struct i2c_client > *client) >         mfd_remove_devices(&client->dev); >   >         regulator_bulk_disable(TWL6040_NUM_SUPPLIES, twl6040- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id twl6040_i2c_id[] = { > diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c > index 7b1d270722ba..7e88f5b0abe6 100644 > --- a/drivers/mfd/wm8994-core.c > +++ b/drivers/mfd/wm8994-core.c > @@ -657,13 +657,11 @@ static int wm8994_i2c_probe(struct i2c_client > *i2c, >         return wm8994_device_init(wm8994, i2c->irq); >  } >   > -static int wm8994_i2c_remove(struct i2c_client *i2c) > +static void wm8994_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8994 *wm8994 = i2c_get_clientdata(i2c); >   >         wm8994_device_exit(wm8994); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8994_i2c_id[] = { > diff --git a/drivers/misc/ad525x_dpot-i2c.c > b/drivers/misc/ad525x_dpot-i2c.c > index 0ee0c6d808c3..28ffb4377d98 100644 > --- a/drivers/misc/ad525x_dpot-i2c.c > +++ b/drivers/misc/ad525x_dpot-i2c.c > @@ -67,10 +67,9 @@ static int ad_dpot_i2c_probe(struct i2c_client > *client, >         return ad_dpot_probe(&client->dev, &bdata, id->driver_data, > id->name); >  } >   > -static int ad_dpot_i2c_remove(struct i2c_client *client) > +static void ad_dpot_i2c_remove(struct i2c_client *client) >  { >         ad_dpot_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id ad_dpot_id[] = { > diff --git a/drivers/misc/apds9802als.c b/drivers/misc/apds9802als.c > index 6fff44b952bd..a32431f4b370 100644 > --- a/drivers/misc/apds9802als.c > +++ b/drivers/misc/apds9802als.c > @@ -242,7 +242,7 @@ static int apds9802als_probe(struct i2c_client > *client, >         return res; >  } >   > -static int apds9802als_remove(struct i2c_client *client) > +static void apds9802als_remove(struct i2c_client *client) >  { >         struct als_data *data = i2c_get_clientdata(client); >   > @@ -256,7 +256,6 @@ static int apds9802als_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         kfree(data); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/misc/apds990x.c b/drivers/misc/apds990x.c > index 45f5b997a0e1..e2100cc42ce8 100644 > --- a/drivers/misc/apds990x.c > +++ b/drivers/misc/apds990x.c > @@ -1185,7 +1185,7 @@ static int apds990x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int apds990x_remove(struct i2c_client *client) > +static void apds990x_remove(struct i2c_client *client) >  { >         struct apds990x_chip *chip = i2c_get_clientdata(client); >   > @@ -1205,7 +1205,6 @@ static int apds990x_remove(struct i2c_client > *client) >         regulator_bulk_free(ARRAY_SIZE(chip->regs), chip->regs); >   >         kfree(chip); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/bh1770glc.c b/drivers/misc/bh1770glc.c > index 0581bb9cef2e..d0dfa674414c 100644 > --- a/drivers/misc/bh1770glc.c > +++ b/drivers/misc/bh1770glc.c > @@ -1280,7 +1280,7 @@ static int bh1770_probe(struct i2c_client > *client, >         return err; >  } >   > -static int bh1770_remove(struct i2c_client *client) > +static void bh1770_remove(struct i2c_client *client) >  { >         struct bh1770_chip *chip = i2c_get_clientdata(client); >   > @@ -1299,8 +1299,6 @@ static int bh1770_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/ds1682.c b/drivers/misc/ds1682.c > index 42f316c2d719..0698ddc5f4d5 100644 > --- a/drivers/misc/ds1682.c > +++ b/drivers/misc/ds1682.c > @@ -228,11 +228,10 @@ static int ds1682_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int ds1682_remove(struct i2c_client *client) > +static void ds1682_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, > &ds1682_eeprom_attr); >         sysfs_remove_group(&client->dev.kobj, &ds1682_group); > -       return 0; >  } >   >  static const struct i2c_device_id ds1682_id[] = { > diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c > index 633e1cf08d6e..938c4f41b98c 100644 > --- a/drivers/misc/eeprom/at24.c > +++ b/drivers/misc/eeprom/at24.c > @@ -791,7 +791,7 @@ static int at24_probe(struct i2c_client *client) >         return 0; >  } >   > -static int at24_remove(struct i2c_client *client) > +static void at24_remove(struct i2c_client *client) >  { >         struct at24_data *at24 = i2c_get_clientdata(client); >   > @@ -801,8 +801,6 @@ static int at24_remove(struct i2c_client *client) >                         regulator_disable(at24->vcc_reg); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static int __maybe_unused at24_suspend(struct device *dev) > diff --git a/drivers/misc/eeprom/ee1004.c > b/drivers/misc/eeprom/ee1004.c > index 9fbfe784d710..c8c6deb7ed89 100644 > --- a/drivers/misc/eeprom/ee1004.c > +++ b/drivers/misc/eeprom/ee1004.c > @@ -219,14 +219,12 @@ static int ee1004_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ee1004_remove(struct i2c_client *client) > +static void ee1004_remove(struct i2c_client *client) >  { >         /* Remove page select clients if this is the last device */ >         mutex_lock(&ee1004_bus_lock); >         ee1004_cleanup(EE1004_NUM_PAGES); >         mutex_unlock(&ee1004_bus_lock); > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/misc/eeprom/eeprom.c > b/drivers/misc/eeprom/eeprom.c > index 34fa385dfd4b..4a9445fea93d 100644 > --- a/drivers/misc/eeprom/eeprom.c > +++ b/drivers/misc/eeprom/eeprom.c > @@ -183,11 +183,9 @@ static int eeprom_probe(struct i2c_client > *client, >         return sysfs_create_bin_file(&client->dev.kobj, > &eeprom_attr); >  } >   > -static int eeprom_remove(struct i2c_client *client) > +static void eeprom_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom_attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id eeprom_id[] = { > diff --git a/drivers/misc/eeprom/idt_89hpesx.c > b/drivers/misc/eeprom/idt_89hpesx.c > index b0cff4b152da..0c23e909bc3e 100644 > --- a/drivers/misc/eeprom/idt_89hpesx.c > +++ b/drivers/misc/eeprom/idt_89hpesx.c > @@ -1401,7 +1401,7 @@ static int idt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >  /* >   * idt_remove() - IDT 89HPESx driver remove() callback method >   */ > -static int idt_remove(struct i2c_client *client) > +static void idt_remove(struct i2c_client *client) >  { >         struct idt_89hpesx_dev *pdev = i2c_get_clientdata(client); >   > @@ -1413,8 +1413,6 @@ static int idt_remove(struct i2c_client > *client) >   >         /* Discard driver data structure */ >         idt_free_pdev(pdev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/misc/eeprom/max6875.c > b/drivers/misc/eeprom/max6875.c > index 9da81f6d4a1c..6bd4f4339af4 100644 > --- a/drivers/misc/eeprom/max6875.c > +++ b/drivers/misc/eeprom/max6875.c > @@ -173,7 +173,7 @@ static int max6875_probe(struct i2c_client > *client, >         return err; >  } >   > -static int max6875_remove(struct i2c_client *client) > +static void max6875_remove(struct i2c_client *client) >  { >         struct max6875_data *data = i2c_get_clientdata(client); >   > @@ -181,8 +181,6 @@ static int max6875_remove(struct i2c_client > *client) >   >         sysfs_remove_bin_file(&client->dev.kobj, &user_eeprom_attr); >         kfree(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id max6875_id[] = { > diff --git a/drivers/misc/hmc6352.c b/drivers/misc/hmc6352.c > index 572a2ff10f00..42b9adef28a3 100644 > --- a/drivers/misc/hmc6352.c > +++ b/drivers/misc/hmc6352.c > @@ -116,10 +116,9 @@ static int hmc6352_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int hmc6352_remove(struct i2c_client *client) > +static void hmc6352_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &m_compass_gr); > -       return 0; >  } >   >  static const struct i2c_device_id hmc6352_id[] = { > diff --git a/drivers/misc/ics932s401.c b/drivers/misc/ics932s401.c > index 0f9ea75b0b18..2c4bb6d6e1a0 100644 > --- a/drivers/misc/ics932s401.c > +++ b/drivers/misc/ics932s401.c > @@ -93,7 +93,7 @@ static int ics932s401_probe(struct i2c_client > *client, >                          const struct i2c_device_id *id); >  static int ics932s401_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int ics932s401_remove(struct i2c_client *client); > +static void ics932s401_remove(struct i2c_client *client); >   >  static const struct i2c_device_id ics932s401_id[] = { >         { "ics932s401", 0 }, > @@ -460,13 +460,12 @@ static int ics932s401_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ics932s401_remove(struct i2c_client *client) > +static void ics932s401_remove(struct i2c_client *client) >  { >         struct ics932s401_data *data = i2c_get_clientdata(client); >   >         sysfs_remove_group(&client->dev.kobj, &data->attrs); >         kfree(data); > -       return 0; >  } >   >  module_i2c_driver(ics932s401_driver); > diff --git a/drivers/misc/isl29003.c b/drivers/misc/isl29003.c > index 703d20e83ebd..8ab61be79c76 100644 > --- a/drivers/misc/isl29003.c > +++ b/drivers/misc/isl29003.c > @@ -410,12 +410,11 @@ static int isl29003_probe(struct i2c_client > *client, >         return err; >  } >   > -static int isl29003_remove(struct i2c_client *client) > +static void isl29003_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &isl29003_attr_group); >         isl29003_set_power_state(client, 0); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c > index fc5ff2805b94..c6f2a94f501a 100644 > --- a/drivers/misc/isl29020.c > +++ b/drivers/misc/isl29020.c > @@ -171,11 +171,10 @@ static int  isl29020_probe(struct i2c_client > *client, >         return res; >  } >   > -static int isl29020_remove(struct i2c_client *client) > +static void isl29020_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); >         sysfs_remove_group(&client->dev.kobj, &m_als_gr); > -       return 0; >  } >   >  static const struct i2c_device_id isl29020_id[] = { > diff --git a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > index 52555d2e824b..d7daa01fe7ca 100644 > --- a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > +++ b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > @@ -177,7 +177,7 @@ static int lis3lv02d_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lis3lv02d_i2c_remove(struct i2c_client *client) > +static void lis3lv02d_i2c_remove(struct i2c_client *client) >  { >         struct lis3lv02d *lis3 = i2c_get_clientdata(client); >         struct lis3lv02d_platform_data *pdata = client- > >dev.platform_data; > @@ -190,7 +190,6 @@ static int lis3lv02d_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_free(ARRAY_SIZE(lis3->regulators), >                             lis3_dev.regulators); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/tsl2550.c b/drivers/misc/tsl2550.c > index 6d71865c8042..1652fb9b3856 100644 > --- a/drivers/misc/tsl2550.c > +++ b/drivers/misc/tsl2550.c > @@ -389,7 +389,7 @@ static int tsl2550_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2550_remove(struct i2c_client *client) > +static void tsl2550_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &tsl2550_attr_group); >   > @@ -397,8 +397,6 @@ static int tsl2550_remove(struct i2c_client > *client) >         tsl2550_set_power_state(client, 0); >   >         kfree(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c > index 946ba80f9758..5fcefcd0baca 100644 > --- a/drivers/mtd/maps/pismo.c > +++ b/drivers/mtd/maps/pismo.c > @@ -195,7 +195,7 @@ static void pismo_add_one(struct pismo_data > *pismo, int i, >         } >  } >   > -static int pismo_remove(struct i2c_client *client) > +static void pismo_remove(struct i2c_client *client) >  { >         struct pismo_data *pismo = i2c_get_clientdata(client); >         int i; > @@ -204,8 +204,6 @@ static int pismo_remove(struct i2c_client > *client) >                 platform_device_unregister(pismo->dev[i]); >   >         kfree(pismo); > - > -       return 0; >  } >   >  static int pismo_probe(struct i2c_client *client, > diff --git a/drivers/net/dsa/lan9303_i2c.c > b/drivers/net/dsa/lan9303_i2c.c > index 8ca4713310fa..b25e91b26d99 100644 > --- a/drivers/net/dsa/lan9303_i2c.c > +++ b/drivers/net/dsa/lan9303_i2c.c > @@ -65,18 +65,16 @@ static int lan9303_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lan9303_i2c_remove(struct i2c_client *client) > +static void lan9303_i2c_remove(struct i2c_client *client) >  { >         struct lan9303_i2c *sw_dev = i2c_get_clientdata(client); >   >         if (!sw_dev) > -               return 0; > +               return; >   >         lan9303_remove(&sw_dev->chip); >   >         i2c_set_clientdata(client, NULL); > - > -       return 0; >  } >   >  static void lan9303_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/net/dsa/microchip/ksz9477_i2c.c > b/drivers/net/dsa/microchip/ksz9477_i2c.c > index faa3163c86b0..ef9d3cc4b15a 100644 > --- a/drivers/net/dsa/microchip/ksz9477_i2c.c > +++ b/drivers/net/dsa/microchip/ksz9477_i2c.c > @@ -52,7 +52,7 @@ static int ksz9477_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int ksz9477_i2c_remove(struct i2c_client *i2c) > +static void ksz9477_i2c_remove(struct i2c_client *i2c) >  { >         struct ksz_device *dev = i2c_get_clientdata(i2c); >   > @@ -60,8 +60,6 @@ static int ksz9477_i2c_remove(struct i2c_client > *i2c) >                 ksz_switch_remove(dev); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void ksz9477_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > index 6deae388a0d6..bbaf5a3fbf00 100644 > --- a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > +++ b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > @@ -105,18 +105,16 @@ static int xrs700x_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int xrs700x_i2c_remove(struct i2c_client *i2c) > +static void xrs700x_i2c_remove(struct i2c_client *i2c) >  { >         struct xrs700x *priv = i2c_get_clientdata(i2c); >   >         if (!priv) > -               return 0; > +               return; >   >         xrs700x_switch_remove(priv); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void xrs700x_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > index ce843ea91464..50b7121a5e3c 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > @@ -656,14 +656,12 @@ static int mlxsw_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mlxsw_i2c_remove(struct i2c_client *client) > +static void mlxsw_i2c_remove(struct i2c_client *client) >  { >         struct mlxsw_i2c *mlxsw_i2c = i2c_get_clientdata(client); >   >         mlxsw_core_bus_device_unregister(mlxsw_i2c->core, false); >         mutex_destroy(&mlxsw_i2c->cmd.lock); > - > -       return 0; >  } >   >  int mlxsw_i2c_driver_register(struct i2c_driver *i2c_driver) > diff --git a/drivers/net/mctp/mctp-i2c.c b/drivers/net/mctp/mctp- > i2c.c > index 53846c6b56ca..670ad9b306fe 100644 > --- a/drivers/net/mctp/mctp-i2c.c > +++ b/drivers/net/mctp/mctp-i2c.c > @@ -986,7 +986,7 @@ static int mctp_i2c_probe(struct i2c_client > *client) >         return rc; >  } >   > -static int mctp_i2c_remove(struct i2c_client *client) > +static void mctp_i2c_remove(struct i2c_client *client) >  { >         struct mctp_i2c_client *mcli = i2c_get_clientdata(client); >         struct mctp_i2c_dev *midev = NULL, *tmp = NULL; > @@ -1000,7 +1000,6 @@ static int mctp_i2c_remove(struct i2c_client > *client) >         mctp_i2c_free_client(mcli); >         mutex_unlock(&driver_clients_lock); >         /* Callers ignore return code */ > -       return 0; >  } >   >  /* We look for a 'mctp-controller' property on I2C busses as they > are > diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c > index 28a9e1eb9bcf..2d53e0f88d2f 100644 > --- a/drivers/nfc/fdp/i2c.c > +++ b/drivers/nfc/fdp/i2c.c > @@ -336,14 +336,12 @@ static int fdp_nci_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fdp_nci_i2c_remove(struct i2c_client *client) > +static void fdp_nci_i2c_remove(struct i2c_client *client) >  { >         struct fdp_i2c_phy *phy = i2c_get_clientdata(client); >   >         fdp_nci_remove(phy->ndev); >         fdp_nci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct acpi_device_id fdp_nci_i2c_acpi_match[] = { > diff --git a/drivers/nfc/microread/i2c.c > b/drivers/nfc/microread/i2c.c > index 067295124eb9..5eaa18f81355 100644 > --- a/drivers/nfc/microread/i2c.c > +++ b/drivers/nfc/microread/i2c.c > @@ -268,15 +268,13 @@ static int microread_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int microread_i2c_remove(struct i2c_client *client) > +static void microread_i2c_remove(struct i2c_client *client) >  { >         struct microread_i2c_phy *phy = i2c_get_clientdata(client); >   >         microread_remove(phy->hdev); >   >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id microread_i2c_id[] = { > diff --git a/drivers/nfc/nfcmrvl/i2c.c b/drivers/nfc/nfcmrvl/i2c.c > index ceef81d93ac9..61f1e2019c0a 100644 > --- a/drivers/nfc/nfcmrvl/i2c.c > +++ b/drivers/nfc/nfcmrvl/i2c.c > @@ -231,13 +231,11 @@ static int nfcmrvl_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int nfcmrvl_i2c_remove(struct i2c_client *client) > +static void nfcmrvl_i2c_remove(struct i2c_client *client) >  { >         struct nfcmrvl_i2c_drv_data *drv_data = > i2c_get_clientdata(client); >   >         nfcmrvl_nci_unregister_dev(drv_data->priv); > - > -       return 0; >  } >   >   > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c > index 7e451c10985d..82a2e2fb1472 100644 > --- a/drivers/nfc/nxp-nci/i2c.c > +++ b/drivers/nfc/nxp-nci/i2c.c > @@ -307,14 +307,12 @@ static int nxp_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int nxp_nci_i2c_remove(struct i2c_client *client) > +static void nxp_nci_i2c_remove(struct i2c_client *client) >  { >         struct nxp_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         nxp_nci_remove(phy->ndev); >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id nxp_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/pn533/i2c.c b/drivers/nfc/pn533/i2c.c > index 673eb5e9b887..ddf3db286bad 100644 > --- a/drivers/nfc/pn533/i2c.c > +++ b/drivers/nfc/pn533/i2c.c > @@ -227,7 +227,7 @@ static int pn533_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int pn533_i2c_remove(struct i2c_client *client) > +static void pn533_i2c_remove(struct i2c_client *client) >  { >         struct pn533_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -235,8 +235,6 @@ static int pn533_i2c_remove(struct i2c_client > *client) >   >         pn53x_unregister_nfc(phy->priv); >         pn53x_common_clean(phy->priv); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn533_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c > index 62a0f1a010cb..9e754abcfa2a 100644 > --- a/drivers/nfc/pn544/i2c.c > +++ b/drivers/nfc/pn544/i2c.c > @@ -928,7 +928,7 @@ static int pn544_hci_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pn544_hci_i2c_remove(struct i2c_client *client) > +static void pn544_hci_i2c_remove(struct i2c_client *client) >  { >         struct pn544_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -940,8 +940,6 @@ static int pn544_hci_i2c_remove(struct i2c_client > *client) >   >         if (phy->powered) >                 pn544_hci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn544_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/s3fwrn5/i2c.c b/drivers/nfc/s3fwrn5/i2c.c > index 4d1cf1bb55b0..f824dc7099ce 100644 > --- a/drivers/nfc/s3fwrn5/i2c.c > +++ b/drivers/nfc/s3fwrn5/i2c.c > @@ -246,14 +246,12 @@ static int s3fwrn5_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s3fwrn5_i2c_remove(struct i2c_client *client) > +static void s3fwrn5_i2c_remove(struct i2c_client *client) >  { >         struct s3fwrn5_i2c_phy *phy = i2c_get_clientdata(client); >   >         s3fwrn5_remove(phy->common.ndev); >         clk_disable_unprepare(phy->clk); > - > -       return 0; >  } >   >  static const struct i2c_device_id s3fwrn5_i2c_id_table[] = { > diff --git a/drivers/nfc/st-nci/i2c.c b/drivers/nfc/st-nci/i2c.c > index cbd968f013c7..89fa24d71bef 100644 > --- a/drivers/nfc/st-nci/i2c.c > +++ b/drivers/nfc/st-nci/i2c.c > @@ -250,13 +250,11 @@ static int st_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int st_nci_i2c_remove(struct i2c_client *client) > +static void st_nci_i2c_remove(struct i2c_client *client) >  { >         struct st_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         ndlc_remove(phy->ndlc); > - > -       return 0; >  } >   >  static const struct i2c_device_id st_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/st21nfca/i2c.c b/drivers/nfc/st21nfca/i2c.c > index 42dc0e5eb161..76b55986bcf8 100644 > --- a/drivers/nfc/st21nfca/i2c.c > +++ b/drivers/nfc/st21nfca/i2c.c > @@ -562,7 +562,7 @@ static int st21nfca_hci_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int st21nfca_hci_i2c_remove(struct i2c_client *client) > +static void st21nfca_hci_i2c_remove(struct i2c_client *client) >  { >         struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -571,8 +571,6 @@ static int st21nfca_hci_i2c_remove(struct > i2c_client *client) >         if (phy->powered) >                 st21nfca_hci_i2c_disable(phy); >         kfree_skb(phy->pending_skb); > - > -       return 0; >  } >   >  static const struct i2c_device_id st21nfca_hci_i2c_id_table[] = { > diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c > index 7f6bba18c515..e0b98ce9c5e8 100644 > --- a/drivers/of/unittest.c > +++ b/drivers/of/unittest.c > @@ -2525,13 +2525,12 @@ static int unittest_i2c_dev_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_dev_remove(struct i2c_client *client) > +static void unittest_i2c_dev_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_dev_id[] = { > @@ -2602,7 +2601,7 @@ static int unittest_i2c_mux_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_mux_remove(struct i2c_client *client) > +static void unittest_i2c_mux_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; > @@ -2610,7 +2609,6 @@ static int unittest_i2c_mux_remove(struct > i2c_client *client) >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_mux_id[] = { > diff --git a/drivers/platform/chrome/cros_ec_i2c.c > b/drivers/platform/chrome/cros_ec_i2c.c > index 9f5b95763173..b6823c654c3f 100644 > --- a/drivers/platform/chrome/cros_ec_i2c.c > +++ b/drivers/platform/chrome/cros_ec_i2c.c > @@ -317,13 +317,11 @@ static int cros_ec_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cros_ec_i2c_remove(struct i2c_client *client) > +static void cros_ec_i2c_remove(struct i2c_client *client) >  { >         struct cros_ec_device *ec_dev = i2c_get_clientdata(client); >   >         cros_ec_unregister(ec_dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/platform/surface/surface3_power.c > b/drivers/platform/surface/surface3_power.c > index 444ec81ba02d..3b20dddeb815 100644 > --- a/drivers/platform/surface/surface3_power.c > +++ b/drivers/platform/surface/surface3_power.c > @@ -554,7 +554,7 @@ static int mshw0011_probe(struct i2c_client > *client) >         return error; >  } >   > -static int mshw0011_remove(struct i2c_client *client) > +static void mshw0011_remove(struct i2c_client *client) >  { >         struct mshw0011_data *cdata = i2c_get_clientdata(client); >   > @@ -564,8 +564,6 @@ static int mshw0011_remove(struct i2c_client > *client) >                 kthread_stop(cdata->poll_task); >   >         i2c_unregister_device(cdata->bat0); > - > -       return 0; >  } >   >  static const struct acpi_device_id mshw0011_acpi_match[] = { > diff --git a/drivers/platform/x86/asus-tf103c-dock.c > b/drivers/platform/x86/asus-tf103c-dock.c > index 6fd0c9fea82d..62310e06282b 100644 > --- a/drivers/platform/x86/asus-tf103c-dock.c > +++ b/drivers/platform/x86/asus-tf103c-dock.c > @@ -878,14 +878,12 @@ static int tf103c_dock_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tf103c_dock_remove(struct i2c_client *client) > +static void tf103c_dock_remove(struct i2c_client *client) >  { >         struct tf103c_dock_data *dock = i2c_get_clientdata(client); >   >         tf103c_dock_stop_hpd(dock); >         tf103c_dock_disable(dock); > - > -       return 0; >  } >   >  static int __maybe_unused tf103c_dock_suspend(struct device *dev) > diff --git a/drivers/platform/x86/intel/int3472/tps68470.c > b/drivers/platform/x86/intel/int3472/tps68470.c > index 22f61b47f9e5..5dd81bb05255 100644 > --- a/drivers/platform/x86/intel/int3472/tps68470.c > +++ b/drivers/platform/x86/intel/int3472/tps68470.c > @@ -178,15 +178,13 @@ static int skl_int3472_tps68470_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int skl_int3472_tps68470_remove(struct i2c_client *client) > +static void skl_int3472_tps68470_remove(struct i2c_client *client) >  { >         const struct int3472_tps68470_board_data *board_data; >   >         board_data = > int3472_tps68470_get_board_data(dev_name(&client->dev)); >         if (board_data) >                 gpiod_remove_lookup_table(board_data- > >tps68470_gpio_lookup_table); > - > -       return 0; >  } >   >  static const struct acpi_device_id int3472_device_id[] = { > diff --git a/drivers/power/supply/bq2415x_charger.c > b/drivers/power/supply/bq2415x_charger.c > index 5724001e66b9..6b99e1c675b8 100644 > --- a/drivers/power/supply/bq2415x_charger.c > +++ b/drivers/power/supply/bq2415x_charger.c > @@ -1696,7 +1696,7 @@ static int bq2415x_probe(struct i2c_client > *client, >   >  /* main bq2415x remove function */ >   > -static int bq2415x_remove(struct i2c_client *client) > +static void bq2415x_remove(struct i2c_client *client) >  { >         struct bq2415x_device *bq = i2c_get_clientdata(client); >   > @@ -1715,8 +1715,6 @@ static int bq2415x_remove(struct i2c_client > *client) >         dev_info(bq->dev, "driver unregistered\n"); >   >         kfree(bq->name); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq2415x_i2c_id_table[] = { > diff --git a/drivers/power/supply/bq24190_charger.c > b/drivers/power/supply/bq24190_charger.c > index 27f5c7648617..2274679c5ddd 100644 > --- a/drivers/power/supply/bq24190_charger.c > +++ b/drivers/power/supply/bq24190_charger.c > @@ -1901,7 +1901,7 @@ static int bq24190_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq24190_remove(struct i2c_client *client) > +static void bq24190_remove(struct i2c_client *client) >  { >         struct bq24190_dev_info *bdi = i2c_get_clientdata(client); >         int error; > @@ -1918,8 +1918,6 @@ static int bq24190_remove(struct i2c_client > *client) >                 pm_runtime_put_sync(bdi->dev); >         pm_runtime_dont_use_autosuspend(bdi->dev); >         pm_runtime_disable(bdi->dev); > - > -       return 0; >  } >   >  static void bq24190_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq24257_charger.c > b/drivers/power/supply/bq24257_charger.c > index 96cb3290bcaa..dafb64b32cef 100644 > --- a/drivers/power/supply/bq24257_charger.c > +++ b/drivers/power/supply/bq24257_charger.c > @@ -1077,7 +1077,7 @@ static int bq24257_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq24257_remove(struct i2c_client *client) > +static void bq24257_remove(struct i2c_client *client) >  { >         struct bq24257_device *bq = i2c_get_clientdata(client); >   > @@ -1085,8 +1085,6 @@ static int bq24257_remove(struct i2c_client > *client) >                 cancel_delayed_work_sync(&bq->iilimit_setup_work); >   >         bq24257_field_write(bq, F_RESET, 1); /* reset to defaults */ > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/bq25890_charger.c > b/drivers/power/supply/bq25890_charger.c > index 852a6fec4339..06ea7399d151 100644 > --- a/drivers/power/supply/bq25890_charger.c > +++ b/drivers/power/supply/bq25890_charger.c > @@ -1258,7 +1258,7 @@ static int bq25890_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq25890_remove(struct i2c_client *client) > +static void bq25890_remove(struct i2c_client *client) >  { >         struct bq25890_device *bq = i2c_get_clientdata(client); >   > @@ -1269,8 +1269,6 @@ static int bq25890_remove(struct i2c_client > *client) >                 /* reset all registers to default values */ >                 bq25890_chip_reset(bq); >         } > - > -       return 0; >  } >   >  static void bq25890_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c > b/drivers/power/supply/bq27xxx_battery_i2c.c > index cf38cbfe13e9..94b00bb89c17 100644 > --- a/drivers/power/supply/bq27xxx_battery_i2c.c > +++ b/drivers/power/supply/bq27xxx_battery_i2c.c > @@ -205,7 +205,7 @@ static int bq27xxx_battery_i2c_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int bq27xxx_battery_i2c_remove(struct i2c_client *client) > +static void bq27xxx_battery_i2c_remove(struct i2c_client *client) >  { >         struct bq27xxx_device_info *di = i2c_get_clientdata(client); >   > @@ -214,8 +214,6 @@ static int bq27xxx_battery_i2c_remove(struct > i2c_client *client) >         mutex_lock(&battery_mutex); >         idr_remove(&battery_id, di->id); >         mutex_unlock(&battery_mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq27xxx_i2c_id_table[] = { > diff --git a/drivers/power/supply/cw2015_battery.c > b/drivers/power/supply/cw2015_battery.c > index 728e2a6cc9c3..81e17ad80163 100644 > --- a/drivers/power/supply/cw2015_battery.c > +++ b/drivers/power/supply/cw2015_battery.c > @@ -725,13 +725,12 @@ static int __maybe_unused cw_bat_resume(struct > device *dev) >   >  static SIMPLE_DEV_PM_OPS(cw_bat_pm_ops, cw_bat_suspend, > cw_bat_resume); >   > -static int cw_bat_remove(struct i2c_client *client) > +static void cw_bat_remove(struct i2c_client *client) >  { >         struct cw_battery *cw_bat = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&cw_bat->battery_delay_work); >         power_supply_put_battery_info(cw_bat->rk_bat, cw_bat- > >battery); > -       return 0; >  } >   >  static const struct i2c_device_id cw_bat_id_table[] = { > diff --git a/drivers/power/supply/ds2782_battery.c > b/drivers/power/supply/ds2782_battery.c > index 9ae273fde7a2..d78cd05402f6 100644 > --- a/drivers/power/supply/ds2782_battery.c > +++ b/drivers/power/supply/ds2782_battery.c > @@ -312,7 +312,7 @@ static void ds278x_power_supply_init(struct > power_supply_desc *battery) >         battery->external_power_changed = NULL; >  } >   > -static int ds278x_battery_remove(struct i2c_client *client) > +static void ds278x_battery_remove(struct i2c_client *client) >  { >         struct ds278x_info *info = i2c_get_clientdata(client); >         int id = info->id; > @@ -325,8 +325,6 @@ static int ds278x_battery_remove(struct > i2c_client *client) >         mutex_lock(&battery_lock); >         idr_remove(&battery_id, id); >         mutex_unlock(&battery_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/lp8727_charger.c > b/drivers/power/supply/lp8727_charger.c > index 9ee54e397754..384a374b52c1 100644 > --- a/drivers/power/supply/lp8727_charger.c > +++ b/drivers/power/supply/lp8727_charger.c > @@ -590,13 +590,12 @@ static int lp8727_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int lp8727_remove(struct i2c_client *cl) > +static void lp8727_remove(struct i2c_client *cl) >  { >         struct lp8727_chg *pchg = i2c_get_clientdata(cl); >   >         lp8727_release_irq(pchg); >         lp8727_unregister_psy(pchg); > -       return 0; >  } >   >  static const struct of_device_id lp8727_dt_ids[] = { > diff --git a/drivers/power/supply/rt5033_battery.c > b/drivers/power/supply/rt5033_battery.c > index 7a23c70f4879..736dec608ff6 100644 > --- a/drivers/power/supply/rt5033_battery.c > +++ b/drivers/power/supply/rt5033_battery.c > @@ -149,13 +149,11 @@ static int rt5033_battery_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int rt5033_battery_remove(struct i2c_client *client) > +static void rt5033_battery_remove(struct i2c_client *client) >  { >         struct rt5033_battery *battery = i2c_get_clientdata(client); >   >         power_supply_unregister(battery->psy); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt5033_battery_id[] = { > diff --git a/drivers/power/supply/rt9455_charger.c > b/drivers/power/supply/rt9455_charger.c > index 74ee54320e6a..72962286d704 100644 > --- a/drivers/power/supply/rt9455_charger.c > +++ b/drivers/power/supply/rt9455_charger.c > @@ -1698,7 +1698,7 @@ static int rt9455_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rt9455_remove(struct i2c_client *client) > +static void rt9455_remove(struct i2c_client *client) >  { >         int ret; >         struct rt9455_info *info = i2c_get_clientdata(client); > @@ -1715,8 +1715,6 @@ static int rt9455_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&info->pwr_rdy_work); >         cancel_delayed_work_sync(&info->max_charging_time_work); >         cancel_delayed_work_sync(&info->batt_presence_work); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt9455_i2c_id_table[] = { > diff --git a/drivers/power/supply/smb347-charger.c > b/drivers/power/supply/smb347-charger.c > index 1511f71f937c..996a82f8a2a1 100644 > --- a/drivers/power/supply/smb347-charger.c > +++ b/drivers/power/supply/smb347-charger.c > @@ -1595,14 +1595,12 @@ static int smb347_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int smb347_remove(struct i2c_client *client) > +static void smb347_remove(struct i2c_client *client) >  { >         struct smb347_charger *smb = i2c_get_clientdata(client); >   >         smb347_usb_vbus_regulator_disable(smb->usb_rdev); >         smb347_irq_disable(smb); > - > -       return 0; >  } >   >  static void smb347_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/z2_battery.c > b/drivers/power/supply/z2_battery.c > index 7ed4e4bb26ec..1897c2984860 100644 > --- a/drivers/power/supply/z2_battery.c > +++ b/drivers/power/supply/z2_battery.c > @@ -251,7 +251,7 @@ static int z2_batt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int z2_batt_remove(struct i2c_client *client) > +static void z2_batt_remove(struct i2c_client *client) >  { >         struct z2_charger *charger = i2c_get_clientdata(client); >   > @@ -263,8 +263,6 @@ static int z2_batt_remove(struct i2c_client > *client) >                 free_irq(gpiod_to_irq(charger->charge_gpiod), > charger); >   >         kfree(charger); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c > index c91fa7f9e33d..f230c10d28bb 100644 > --- a/drivers/pwm/pwm-pca9685.c > +++ b/drivers/pwm/pwm-pca9685.c > @@ -598,7 +598,7 @@ static int pca9685_pwm_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9685_pwm_remove(struct i2c_client *client) > +static void pca9685_pwm_remove(struct i2c_client *client) >  { >         struct pca9685 *pca = i2c_get_clientdata(client); >   > @@ -610,8 +610,6 @@ static int pca9685_pwm_remove(struct i2c_client > *client) >         } >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused pca9685_pwm_runtime_suspend(struct device > *dev) > diff --git a/drivers/regulator/da9121-regulator.c > b/drivers/regulator/da9121-regulator.c > index 76e0e23bf598..e4c753b83088 100644 > --- a/drivers/regulator/da9121-regulator.c > +++ b/drivers/regulator/da9121-regulator.c > @@ -1164,7 +1164,7 @@ static int da9121_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9121_i2c_remove(struct i2c_client *i2c) > +static void da9121_i2c_remove(struct i2c_client *i2c) >  { >         struct da9121 *chip = i2c_get_clientdata(i2c); >         const int mask_all[4] = { 0xFF, 0xFF, 0xFF, 0xFF }; > @@ -1176,7 +1176,6 @@ static int da9121_i2c_remove(struct i2c_client > *i2c) >         ret = regmap_bulk_write(chip->regmap, DA9121_REG_SYS_MASK_0, > mask_all, 4); >         if (ret != 0) >                 dev_err(chip->dev, "Failed to set IRQ masks: %d\n", > ret); > -       return 0; >  } >   >  static const struct i2c_device_id da9121_i2c_id[] = { > diff --git a/drivers/regulator/lp8755.c b/drivers/regulator/lp8755.c > index 321bec6e3f8d..31b43426d47c 100644 > --- a/drivers/regulator/lp8755.c > +++ b/drivers/regulator/lp8755.c > @@ -422,15 +422,13 @@ static int lp8755_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8755_remove(struct i2c_client *client) > +static void lp8755_remove(struct i2c_client *client) >  { >         int icnt; >         struct lp8755_chip *pchip = i2c_get_clientdata(client); >   >         for (icnt = 0; icnt < LP8755_BUCK_MAX; icnt++) >                 regmap_write(pchip->regmap, icnt, 0x00); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8755_id[] = { > diff --git a/drivers/regulator/rpi-panel-attiny-regulator.c > b/drivers/regulator/rpi-panel-attiny-regulator.c > index fa8706a352ce..04b4ab131985 100644 > --- a/drivers/regulator/rpi-panel-attiny-regulator.c > +++ b/drivers/regulator/rpi-panel-attiny-regulator.c > @@ -385,13 +385,11 @@ static int attiny_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int attiny_i2c_remove(struct i2c_client *client) > +static void attiny_i2c_remove(struct i2c_client *client) >  { >         struct attiny_lcd *state = i2c_get_clientdata(client); >   >         mutex_destroy(&state->lock); > - > -       return 0; >  } >   >  static const struct of_device_id attiny_dt_ids[] = { > diff --git a/drivers/rtc/rtc-bq32k.c b/drivers/rtc/rtc-bq32k.c > index 2235c968842d..f198663f20c7 100644 > --- a/drivers/rtc/rtc-bq32k.c > +++ b/drivers/rtc/rtc-bq32k.c > @@ -298,11 +298,9 @@ static int bq32k_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq32k_remove(struct i2c_client *client) > +static void bq32k_remove(struct i2c_client *client) >  { >         bq32k_sysfs_unregister(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq32k_id[] = { > diff --git a/drivers/rtc/rtc-ds1374.c b/drivers/rtc/rtc-ds1374.c > index 8db5a631bca8..44148802b1a5 100644 > --- a/drivers/rtc/rtc-ds1374.c > +++ b/drivers/rtc/rtc-ds1374.c > @@ -531,7 +531,7 @@ static int ds1374_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ds1374_remove(struct i2c_client *client) > +static void ds1374_remove(struct i2c_client *client) >  { >         struct ds1374 *ds1374 = i2c_get_clientdata(client); >   > @@ -543,8 +543,6 @@ static int ds1374_remove(struct i2c_client > *client) >                 devm_free_irq(&client->dev, client->irq, client); >                 cancel_work_sync(&ds1374->work); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/rtc/rtc-isl12026.c b/drivers/rtc/rtc-isl12026.c > index 1fc6627d854d..1bfca39079d4 100644 > --- a/drivers/rtc/rtc-isl12026.c > +++ b/drivers/rtc/rtc-isl12026.c > @@ -472,12 +472,11 @@ static int isl12026_probe_new(struct i2c_client > *client) >         return devm_rtc_register_device(priv->rtc); >  } >   > -static int isl12026_remove(struct i2c_client *client) > +static void isl12026_remove(struct i2c_client *client) >  { >         struct isl12026 *priv = i2c_get_clientdata(client); >   >         i2c_unregister_device(priv->nvm_client); > -       return 0; >  } >   >  static const struct of_device_id isl12026_dt_match[] = { > diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c > index d868458cd40e..e0b4d3794320 100644 > --- a/drivers/rtc/rtc-m41t80.c > +++ b/drivers/rtc/rtc-m41t80.c > @@ -989,7 +989,7 @@ static int m41t80_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m41t80_remove(struct i2c_client *client) > +static void m41t80_remove(struct i2c_client *client) >  { >  #ifdef CONFIG_RTC_DRV_M41T80_WDT >         struct m41t80_data *clientdata = i2c_get_clientdata(client); > @@ -999,8 +999,6 @@ static int m41t80_remove(struct i2c_client > *client) >                 unregister_reboot_notifier(&wdt_notifier); >         } >  #endif > - > -       return 0; >  } >   >  static struct i2c_driver m41t80_driver = { > diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c > index cb15983383f5..9562c477e1c9 100644 > --- a/drivers/rtc/rtc-rs5c372.c > +++ b/drivers/rtc/rtc-rs5c372.c > @@ -910,10 +910,9 @@ static int rs5c372_probe(struct i2c_client > *client, >         return err; >  } >   > -static int rs5c372_remove(struct i2c_client *client) > +static void rs5c372_remove(struct i2c_client *client) >  { >         rs5c_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver rs5c372_driver = { > diff --git a/drivers/rtc/rtc-x1205.c b/drivers/rtc/rtc-x1205.c > index d1d5a44d9122..7792e22de805 100644 > --- a/drivers/rtc/rtc-x1205.c > +++ b/drivers/rtc/rtc-x1205.c > @@ -658,10 +658,9 @@ static int x1205_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int x1205_remove(struct i2c_client *client) > +static void x1205_remove(struct i2c_client *client) >  { >         x1205_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id x1205_id[] = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > index cbc8b1d91995..783f1b88ebf2 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > @@ -1194,7 +1194,7 @@ static const struct v4l2_subdev_ops gc0310_ops > = { >         .sensor = &gc0310_sensor_ops, >  }; >   > -static int gc0310_remove(struct i2c_client *client) > +static void gc0310_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc0310_device *dev = to_gc0310_sensor(sd); > @@ -1207,8 +1207,6 @@ static int gc0310_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc0310_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > index 0e6b2e6100d1..4d5a7e335f85 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > @@ -952,7 +952,7 @@ static const struct v4l2_subdev_ops gc2235_ops = > { >         .sensor = &gc2235_sensor_ops, >  }; >   > -static int gc2235_remove(struct i2c_client *client) > +static void gc2235_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc2235_device *dev = to_gc2235_sensor(sd); > @@ -965,8 +965,6 @@ static int gc2235_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc2235_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > index e046489cd253..75d16b525294 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > @@ -910,7 +910,7 @@ static int lm3554_probe(struct i2c_client > *client) >         return err; >  } >   > -static int lm3554_remove(struct i2c_client *client) > +static void lm3554_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct lm3554 *flash = to_lm3554(sd); > @@ -926,8 +926,6 @@ static int lm3554_remove(struct i2c_client > *client) >         lm3554_gpio_uninit(client); >   >         kfree(flash); > - > -       return 0; >  } >   >  static const struct dev_pm_ops lm3554_pm_ops = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > index 00d6842c07d6..4601a238cb89 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > @@ -1711,7 +1711,7 @@ static const struct v4l2_subdev_ops mt9m114_ops > = { >         .sensor = &mt9m114_sensor_ops, >  }; >   > -static int mt9m114_remove(struct i2c_client *client) > +static void mt9m114_remove(struct i2c_client *client) >  { >         struct mt9m114_device *dev; >         struct v4l2_subdev *sd = i2c_get_clientdata(client); > @@ -1722,7 +1722,6 @@ static int mt9m114_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > -       return 0; >  } >   >  static int mt9m114_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > index 4ba99c660681..8f48b23be3aa 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > @@ -1135,7 +1135,7 @@ static const struct v4l2_subdev_ops ov2680_ops > = { >         .sensor = &ov2680_sensor_ops, >  }; >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_device *dev = to_ov2680_sensor(sd); > @@ -1148,8 +1148,6 @@ static int ov2680_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov2680_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > index da98094d7094..715a7aeeda18 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > @@ -1094,7 +1094,7 @@ static const struct v4l2_subdev_ops ov2722_ops > = { >         .sensor = &ov2722_sensor_ops, >  }; >   > -static int ov2722_remove(struct i2c_client *client) > +static void ov2722_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2722_device *dev = to_ov2722_sensor(sd); > @@ -1107,8 +1107,6 @@ static int ov2722_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&dev->sd.entity); >         kfree(dev); > - > -       return 0; >  } >   >  static int __ov2722_init_ctrl_handler(struct ov2722_device *dev) > diff --git a/drivers/staging/media/atomisp/i2c/ov5693/atomisp- > ov5693.c b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > index 6c95f57a52e9..c1cd631455e6 100644 > --- a/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > +++ b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > @@ -1877,7 +1877,7 @@ static const struct v4l2_subdev_ops ov5693_ops > = { >         .pad = &ov5693_pad_ops, >  }; >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *dev = to_ov5693_sensor(sd); > @@ -1893,8 +1893,6 @@ static int ov5693_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov5693_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/max96712/max96712.c > b/drivers/staging/media/max96712/max96712.c > index 6b5abd958bff..99b333b68198 100644 > --- a/drivers/staging/media/max96712/max96712.c > +++ b/drivers/staging/media/max96712/max96712.c > @@ -407,15 +407,13 @@ static int max96712_probe(struct i2c_client > *client) >         return max96712_v4l2_register(priv); >  } >   > -static int max96712_remove(struct i2c_client *client) > +static void max96712_remove(struct i2c_client *client) >  { >         struct max96712_priv *priv = i2c_get_clientdata(client); >   >         v4l2_async_unregister_subdev(&priv->sd); >   >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); > - > -       return 0; >  } >   >  static const struct of_device_id max96712_of_table[] = { > diff --git a/drivers/staging/most/i2c/i2c.c > b/drivers/staging/most/i2c/i2c.c > index 7042f10887bb..285a071f02be 100644 > --- a/drivers/staging/most/i2c/i2c.c > +++ b/drivers/staging/most/i2c/i2c.c > @@ -340,14 +340,12 @@ static int i2c_probe(struct i2c_client *client, > const struct i2c_device_id *id) >   * >   * Unregister the i2c client device as a MOST interface >   */ > -static int i2c_remove(struct i2c_client *client) > +static void i2c_remove(struct i2c_client *client) >  { >         struct hdm_i2c *dev = i2c_get_clientdata(client); >   >         most_deregister_interface(&dev->most_iface); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_id[] = { > diff --git a/drivers/staging/olpc_dcon/olpc_dcon.c > b/drivers/staging/olpc_dcon/olpc_dcon.c > index 7284cb4ac395..aea2841f7598 100644 > --- a/drivers/staging/olpc_dcon/olpc_dcon.c > +++ b/drivers/staging/olpc_dcon/olpc_dcon.c > @@ -671,7 +671,7 @@ static int dcon_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return rc; >  } >   > -static int dcon_remove(struct i2c_client *client) > +static void dcon_remove(struct i2c_client *client) >  { >         struct dcon_priv *dcon = i2c_get_clientdata(client); >   > @@ -687,8 +687,6 @@ static int dcon_remove(struct i2c_client *client) >         cancel_work_sync(&dcon->switch_source); >   >         kfree(dcon); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/tty/serial/sc16is7xx.c > b/drivers/tty/serial/sc16is7xx.c > index 8472bf70477c..cc3b22cbda9b 100644 > --- a/drivers/tty/serial/sc16is7xx.c > +++ b/drivers/tty/serial/sc16is7xx.c > @@ -1683,11 +1683,9 @@ static int sc16is7xx_i2c_probe(struct > i2c_client *i2c, >         return sc16is7xx_probe(&i2c->dev, devtype, regmap, i2c->irq); >  } >   > -static int sc16is7xx_i2c_remove(struct i2c_client *client) > +static void sc16is7xx_i2c_remove(struct i2c_client *client) >  { >         sc16is7xx_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id sc16is7xx_i2c_id_table[] = { > diff --git a/drivers/usb/misc/usb3503.c b/drivers/usb/misc/usb3503.c > index 330f494cd158..3c9fa663475f 100644 > --- a/drivers/usb/misc/usb3503.c > +++ b/drivers/usb/misc/usb3503.c > @@ -289,14 +289,12 @@ static int usb3503_i2c_probe(struct i2c_client > *i2c, >         return usb3503_probe(hub); >  } >   > -static int usb3503_i2c_remove(struct i2c_client *i2c) > +static void usb3503_i2c_remove(struct i2c_client *i2c) >  { >         struct usb3503 *hub; >   >         hub = i2c_get_clientdata(i2c); >         clk_disable_unprepare(hub->clk); > - > -       return 0; >  } >   >  static int usb3503_platform_probe(struct platform_device *pdev) > diff --git a/drivers/usb/phy/phy-isp1301-omap.c > b/drivers/usb/phy/phy-isp1301-omap.c > index f8bd93fe69cd..e5d3f206097c 100644 > --- a/drivers/usb/phy/phy-isp1301-omap.c > +++ b/drivers/usb/phy/phy-isp1301-omap.c > @@ -1196,7 +1196,7 @@ static void isp1301_release(struct device *dev) >   >  static struct isp1301 *the_transceiver; >   > -static int isp1301_remove(struct i2c_client *i2c) > +static void isp1301_remove(struct i2c_client *i2c) >  { >         struct isp1301  *isp; >   > @@ -1214,8 +1214,6 @@ static int isp1301_remove(struct i2c_client > *i2c) >   >         put_device(&i2c->dev); >         the_transceiver = NULL; > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/usb/phy/phy-isp1301.c b/drivers/usb/phy/phy- > isp1301.c > index ad3d57f1c273..c2777a5c1f4e 100644 > --- a/drivers/usb/phy/phy-isp1301.c > +++ b/drivers/usb/phy/phy-isp1301.c > @@ -120,14 +120,12 @@ static int isp1301_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isp1301_remove(struct i2c_client *client) > +static void isp1301_remove(struct i2c_client *client) >  { >         struct isp1301 *isp = i2c_get_clientdata(client); >   >         usb_remove_phy(&isp->phy); >         isp1301_i2c_client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver isp1301_driver = { > diff --git a/drivers/usb/typec/hd3ss3220.c > b/drivers/usb/typec/hd3ss3220.c > index cd47c3597e19..2a58185fb14c 100644 > --- a/drivers/usb/typec/hd3ss3220.c > +++ b/drivers/usb/typec/hd3ss3220.c > @@ -245,14 +245,12 @@ static int hd3ss3220_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int hd3ss3220_remove(struct i2c_client *client) > +static void hd3ss3220_remove(struct i2c_client *client) >  { >         struct hd3ss3220 *hd3ss3220 = i2c_get_clientdata(client); >   >         typec_unregister_port(hd3ss3220->port); >         usb_role_switch_put(hd3ss3220->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id dev_ids[] = { > diff --git a/drivers/usb/typec/mux/fsa4480.c > b/drivers/usb/typec/mux/fsa4480.c > index 6184f5367190..d6495e533e58 100644 > --- a/drivers/usb/typec/mux/fsa4480.c > +++ b/drivers/usb/typec/mux/fsa4480.c > @@ -181,14 +181,12 @@ static int fsa4480_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fsa4480_remove(struct i2c_client *client) > +static void fsa4480_remove(struct i2c_client *client) >  { >         struct fsa4480 *fsa = i2c_get_clientdata(client); >   >         typec_mux_unregister(fsa->mux); >         typec_switch_unregister(fsa->sw); > - > -       return 0; >  } >   >  static const struct i2c_device_id fsa4480_table[] = { > diff --git a/drivers/usb/typec/mux/pi3usb30532.c > b/drivers/usb/typec/mux/pi3usb30532.c > index 6ce9f282594e..1cd388b55c30 100644 > --- a/drivers/usb/typec/mux/pi3usb30532.c > +++ b/drivers/usb/typec/mux/pi3usb30532.c > @@ -160,13 +160,12 @@ static int pi3usb30532_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pi3usb30532_remove(struct i2c_client *client) > +static void pi3usb30532_remove(struct i2c_client *client) >  { >         struct pi3usb30532 *pi = i2c_get_clientdata(client); >   >         typec_mux_unregister(pi->mux); >         typec_switch_unregister(pi->sw); > -       return 0; >  } >   >  static const struct i2c_device_id pi3usb30532_table[] = { > diff --git a/drivers/usb/typec/rt1719.c b/drivers/usb/typec/rt1719.c > index f1b698edd7eb..ea8b700b0ceb 100644 > --- a/drivers/usb/typec/rt1719.c > +++ b/drivers/usb/typec/rt1719.c > @@ -930,14 +930,12 @@ static int rt1719_probe(struct i2c_client *i2c) >         return ret; >  } >   > -static int rt1719_remove(struct i2c_client *i2c) > +static void rt1719_remove(struct i2c_client *i2c) >  { >         struct rt1719_data *data = i2c_get_clientdata(i2c); >   >         typec_unregister_port(data->port); >         usb_role_switch_put(data->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused > rt1719_device_table[] = { > diff --git a/drivers/usb/typec/stusb160x.c > b/drivers/usb/typec/stusb160x.c > index e7745d1c2a5c..8638f1d39896 100644 > --- a/drivers/usb/typec/stusb160x.c > +++ b/drivers/usb/typec/stusb160x.c > @@ -801,7 +801,7 @@ static int stusb160x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int stusb160x_remove(struct i2c_client *client) > +static void stusb160x_remove(struct i2c_client *client) >  { >         struct stusb160x *chip = i2c_get_clientdata(client); >   > @@ -823,8 +823,6 @@ static int stusb160x_remove(struct i2c_client > *client) >   >         if (chip->main_supply) >                 regulator_disable(chip->main_supply); > - > -       return 0; >  } >   >  static int __maybe_unused stusb160x_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/fusb302.c > b/drivers/usb/typec/tcpm/fusb302.c > index 96c55eaf3f80..5e9348f28d50 100644 > --- a/drivers/usb/typec/tcpm/fusb302.c > +++ b/drivers/usb/typec/tcpm/fusb302.c > @@ -1771,7 +1771,7 @@ static int fusb302_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fusb302_remove(struct i2c_client *client) > +static void fusb302_remove(struct i2c_client *client) >  { >         struct fusb302_chip *chip = i2c_get_clientdata(client); >   > @@ -1783,8 +1783,6 @@ static int fusb302_remove(struct i2c_client > *client) >         fwnode_handle_put(chip->tcpc_dev.fwnode); >         destroy_workqueue(chip->wq); >         fusb302_debugfs_exit(chip); > - > -       return 0; >  } >   >  static int fusb302_pm_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/tcpci.c > b/drivers/usb/typec/tcpm/tcpci.c > index f33e08eb7670..c48fca60bb06 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -869,7 +869,7 @@ static int tcpci_probe(struct i2c_client *client, >         return 0; >  } >   > -static int tcpci_remove(struct i2c_client *client) > +static void tcpci_remove(struct i2c_client *client) >  { >         struct tcpci_chip *chip = i2c_get_clientdata(client); >         int err; > @@ -880,8 +880,6 @@ static int tcpci_remove(struct i2c_client > *client) >                 dev_warn(&client->dev, "Failed to disable irqs > (%pe)\n", ERR_PTR(err)); >   >         tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c > b/drivers/usb/typec/tcpm/tcpci_maxim.c > index df2505570f07..a11be5754128 100644 > --- a/drivers/usb/typec/tcpm/tcpci_maxim.c > +++ b/drivers/usb/typec/tcpm/tcpci_maxim.c > @@ -493,14 +493,12 @@ static int max_tcpci_probe(struct i2c_client > *client, const struct i2c_device_id >         return ret; >  } >   > -static int max_tcpci_remove(struct i2c_client *client) > +static void max_tcpci_remove(struct i2c_client *client) >  { >         struct max_tcpci_chip *chip = i2c_get_clientdata(client); >   >         if (!IS_ERR_OR_NULL(chip->tcpci)) >                 tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id max_tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > index b56a0880a044..9ad4924b4ba7 100644 > --- a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > +++ b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > @@ -263,12 +263,11 @@ static int rt1711h_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rt1711h_remove(struct i2c_client *client) > +static void rt1711h_remove(struct i2c_client *client) >  { >         struct rt1711h_chip *chip = i2c_get_clientdata(client); >   >         tcpci_unregister_port(chip->tcpci); > -       return 0; >  } >   >  static const struct i2c_device_id rt1711h_id[] = { > diff --git a/drivers/usb/typec/tipd/core.c > b/drivers/usb/typec/tipd/core.c > index dfbba5ae9487..b637e8b378b3 100644 > --- a/drivers/usb/typec/tipd/core.c > +++ b/drivers/usb/typec/tipd/core.c > @@ -857,15 +857,13 @@ static int tps6598x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tps6598x_remove(struct i2c_client *client) > +static void tps6598x_remove(struct i2c_client *client) >  { >         struct tps6598x *tps = i2c_get_clientdata(client); >   >         tps6598x_disconnect(tps, 0); >         typec_unregister_port(tps->port); >         usb_role_switch_put(tps->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id tps6598x_of_match[] = { > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c > b/drivers/usb/typec/ucsi/ucsi_ccg.c > index 6db7c8ddd51c..920b7e743f56 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -1398,7 +1398,7 @@ static int ucsi_ccg_probe(struct i2c_client > *client, >         return status; >  } >   > -static int ucsi_ccg_remove(struct i2c_client *client) > +static void ucsi_ccg_remove(struct i2c_client *client) >  { >         struct ucsi_ccg *uc = i2c_get_clientdata(client); >   > @@ -1408,8 +1408,6 @@ static int ucsi_ccg_remove(struct i2c_client > *client) >         ucsi_unregister(uc->ucsi); >         ucsi_destroy(uc->ucsi); >         free_irq(uc->irq, uc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ucsi_ccg_device_id[] = { > diff --git a/drivers/usb/typec/wusb3801.c > b/drivers/usb/typec/wusb3801.c > index e63509f8b01e..3cc7a15ecbd3 100644 > --- a/drivers/usb/typec/wusb3801.c > +++ b/drivers/usb/typec/wusb3801.c > @@ -399,7 +399,7 @@ static int wusb3801_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int wusb3801_remove(struct i2c_client *client) > +static void wusb3801_remove(struct i2c_client *client) >  { >         struct wusb3801 *wusb3801 = i2c_get_clientdata(client); >   > @@ -411,8 +411,6 @@ static int wusb3801_remove(struct i2c_client > *client) >   >         if (wusb3801->vbus_on) >                 regulator_disable(wusb3801->vbus_supply); > - > -       return 0; >  } >   >  static const struct of_device_id wusb3801_of_match[] = { > diff --git a/drivers/video/backlight/adp8860_bl.c > b/drivers/video/backlight/adp8860_bl.c > index 8ec19425671f..b0fe02273e87 100644 > --- a/drivers/video/backlight/adp8860_bl.c > +++ b/drivers/video/backlight/adp8860_bl.c > @@ -753,7 +753,7 @@ static int adp8860_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8860_remove(struct i2c_client *client) > +static void adp8860_remove(struct i2c_client *client) >  { >         struct adp8860_bl *data = i2c_get_clientdata(client); >   > @@ -765,8 +765,6 @@ static int adp8860_remove(struct i2c_client > *client) >         if (data->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8860_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/adp8870_bl.c > b/drivers/video/backlight/adp8870_bl.c > index 8b5213a39527..5becace3fd0f 100644 > --- a/drivers/video/backlight/adp8870_bl.c > +++ b/drivers/video/backlight/adp8870_bl.c > @@ -925,7 +925,7 @@ static int adp8870_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8870_remove(struct i2c_client *client) > +static void adp8870_remove(struct i2c_client *client) >  { >         struct adp8870_bl *data = i2c_get_clientdata(client); >   > @@ -937,8 +937,6 @@ static int adp8870_remove(struct i2c_client > *client) >         if (data->pdata->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8870_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/arcxcnn_bl.c > b/drivers/video/backlight/arcxcnn_bl.c > index 7b1c0a0e6cad..060c0eef6a52 100644 > --- a/drivers/video/backlight/arcxcnn_bl.c > +++ b/drivers/video/backlight/arcxcnn_bl.c > @@ -362,7 +362,7 @@ static int arcxcnn_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int arcxcnn_remove(struct i2c_client *cl) > +static void arcxcnn_remove(struct i2c_client *cl) >  { >         struct arcxcnn *lp = i2c_get_clientdata(cl); >   > @@ -376,8 +376,6 @@ static int arcxcnn_remove(struct i2c_client *cl) >         lp->bl->props.brightness = 0; >   >         backlight_update_status(lp->bl); > - > -       return 0; >  } >   >  static const struct of_device_id arcxcnn_dt_ids[] = { > diff --git a/drivers/video/backlight/bd6107.c > b/drivers/video/backlight/bd6107.c > index 515184fbe33a..a506872d4396 100644 > --- a/drivers/video/backlight/bd6107.c > +++ b/drivers/video/backlight/bd6107.c > @@ -175,14 +175,12 @@ static int bd6107_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bd6107_remove(struct i2c_client *client) > +static void bd6107_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id bd6107_ids[] = { > diff --git a/drivers/video/backlight/lm3630a_bl.c > b/drivers/video/backlight/lm3630a_bl.c > index 1d17c439430e..475f35635bf6 100644 > --- a/drivers/video/backlight/lm3630a_bl.c > +++ b/drivers/video/backlight/lm3630a_bl.c > @@ -579,7 +579,7 @@ static int lm3630a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3630a_remove(struct i2c_client *client) > +static void lm3630a_remove(struct i2c_client *client) >  { >         int rval; >         struct lm3630a_chip *pchip = i2c_get_clientdata(client); > @@ -596,7 +596,6 @@ static int lm3630a_remove(struct i2c_client > *client) >                 free_irq(pchip->irq, pchip); >                 destroy_workqueue(pchip->irqthread); >         } > -       return 0; >  } >   >  static const struct i2c_device_id lm3630a_id[] = { > diff --git a/drivers/video/backlight/lm3639_bl.c > b/drivers/video/backlight/lm3639_bl.c > index 48c04155a5f9..6580911671a3 100644 > --- a/drivers/video/backlight/lm3639_bl.c > +++ b/drivers/video/backlight/lm3639_bl.c > @@ -390,7 +390,7 @@ static int lm3639_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3639_remove(struct i2c_client *client) > +static void lm3639_remove(struct i2c_client *client) >  { >         struct lm3639_chip_data *pchip = i2c_get_clientdata(client); >   > @@ -400,7 +400,6 @@ static int lm3639_remove(struct i2c_client > *client) >         led_classdev_unregister(&pchip->cdev_flash); >         if (pchip->bled) >                 device_remove_file(&(pchip->bled->dev), > &dev_attr_bled_mode); > -       return 0; >  } >   >  static const struct i2c_device_id lm3639_id[] = { > diff --git a/drivers/video/backlight/lp855x_bl.c > b/drivers/video/backlight/lp855x_bl.c > index 2b9e2bbbb03e..43b39cf68b04 100644 > --- a/drivers/video/backlight/lp855x_bl.c > +++ b/drivers/video/backlight/lp855x_bl.c > @@ -537,7 +537,7 @@ static int lp855x_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int lp855x_remove(struct i2c_client *cl) > +static void lp855x_remove(struct i2c_client *cl) >  { >         struct lp855x *lp = i2c_get_clientdata(cl); >   > @@ -548,8 +548,6 @@ static int lp855x_remove(struct i2c_client *cl) >         if (lp->supply) >                 regulator_disable(lp->supply); >         sysfs_remove_group(&lp->dev->kobj, &lp855x_attr_group); > - > -       return 0; >  } >   >  static const struct of_device_id lp855x_dt_ids[] = { > diff --git a/drivers/video/backlight/lv5207lp.c > b/drivers/video/backlight/lv5207lp.c > index 1842ae9a55f8..767b800d79fa 100644 > --- a/drivers/video/backlight/lv5207lp.c > +++ b/drivers/video/backlight/lv5207lp.c > @@ -124,14 +124,12 @@ static int lv5207lp_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lv5207lp_remove(struct i2c_client *client) > +static void lv5207lp_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id lv5207lp_ids[] = { > diff --git a/drivers/video/backlight/tosa_bl.c > b/drivers/video/backlight/tosa_bl.c > index 6df6fcd132e3..f55b3d616a87 100644 > --- a/drivers/video/backlight/tosa_bl.c > +++ b/drivers/video/backlight/tosa_bl.c > @@ -121,12 +121,11 @@ static int tosa_bl_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tosa_bl_remove(struct i2c_client *client) > +static void tosa_bl_remove(struct i2c_client *client) >  { >         struct tosa_bl_data *data = i2c_get_clientdata(client); >   >         data->bl = NULL; > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/fbdev/matrox/matroxfb_maven.c > b/drivers/video/fbdev/matrox/matroxfb_maven.c > index 9a98c4a6ba33..f2e02958673d 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_maven.c > +++ b/drivers/video/fbdev/matrox/matroxfb_maven.c > @@ -1276,11 +1276,10 @@ ERROR0:; >         return err; >  } >   > -static int maven_remove(struct i2c_client *client) > +static void maven_remove(struct i2c_client *client) >  { >         maven_shutdown_client(client); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  static const struct i2c_device_id maven_id[] = { > diff --git a/drivers/video/fbdev/ssd1307fb.c > b/drivers/video/fbdev/ssd1307fb.c > index 5c765655d000..fbf26cdfb1c0 100644 > --- a/drivers/video/fbdev/ssd1307fb.c > +++ b/drivers/video/fbdev/ssd1307fb.c > @@ -817,7 +817,7 @@ static int ssd1307fb_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ssd1307fb_remove(struct i2c_client *client) > +static void ssd1307fb_remove(struct i2c_client *client) >  { >         struct fb_info *info = i2c_get_clientdata(client); >         struct ssd1307fb_par *par = info->par; > @@ -836,8 +836,6 @@ static int ssd1307fb_remove(struct i2c_client > *client) >         fb_deferred_io_cleanup(info); >         __free_pages(__va(info->fix.smem_start), get_order(info- > >fix.smem_len)); >         framebuffer_release(info); > - > -       return 0; >  } >   >  static const struct i2c_device_id ssd1307fb_i2c_id[] = { > diff --git a/drivers/w1/masters/ds2482.c > b/drivers/w1/masters/ds2482.c > index 6c962e88501c..62c44616d8a9 100644 > --- a/drivers/w1/masters/ds2482.c > +++ b/drivers/w1/masters/ds2482.c > @@ -525,7 +525,7 @@ static int ds2482_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ds2482_remove(struct i2c_client *client) > +static void ds2482_remove(struct i2c_client *client) >  { >         struct ds2482_data   *data = i2c_get_clientdata(client); >         int idx; > @@ -538,7 +538,6 @@ static int ds2482_remove(struct i2c_client > *client) >   >         /* Free the memory */ >         kfree(data); > -       return 0; >  } >   >  /* > diff --git a/drivers/watchdog/ziirave_wdt.c > b/drivers/watchdog/ziirave_wdt.c > index c5a9b820d43a..d0e88875443a 100644 > --- a/drivers/watchdog/ziirave_wdt.c > +++ b/drivers/watchdog/ziirave_wdt.c > @@ -708,13 +708,11 @@ static int ziirave_wdt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ziirave_wdt_remove(struct i2c_client *client) > +static void ziirave_wdt_remove(struct i2c_client *client) >  { >         struct ziirave_wdt_data *w_priv = i2c_get_clientdata(client); >   >         watchdog_unregister_device(&w_priv->wdd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ziirave_wdt_id[] = { > diff --git a/include/linux/i2c.h b/include/linux/i2c.h > index fbda5ada2afc..066b541a0d5d 100644 > --- a/include/linux/i2c.h > +++ b/include/linux/i2c.h > @@ -273,7 +273,7 @@ struct i2c_driver { >   >         /* Standard driver model interfaces */ >         int (*probe)(struct i2c_client *client, const struct > i2c_device_id *id); > -       int (*remove)(struct i2c_client *client); > +       void (*remove)(struct i2c_client *client); >   >         /* New driver model interface to aid the seamless removal of > the >          * current probe()'s, more commonly unused than used second > parameter. > diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan > index f0973da583e0..366e61639cb2 100644 > --- a/lib/Kconfig.kasan > +++ b/lib/Kconfig.kasan > @@ -149,6 +149,7 @@ config KASAN_STACK >         depends on KASAN_GENERIC || KASAN_SW_TAGS >         depends on !ARCH_DISABLE_KASAN_INLINE >         default y if CC_IS_GCC > +       depends on !ARM >         help >           Disables stack instrumentation and thus KASAN's ability to > detect >           out-of-bounds bugs in stack variables. > diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c > index 1abee841cc45..2d0f904aba00 100644 > --- a/sound/aoa/codecs/onyx.c > +++ b/sound/aoa/codecs/onyx.c > @@ -1029,7 +1029,7 @@ static int onyx_i2c_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int onyx_i2c_remove(struct i2c_client *client) > +static void onyx_i2c_remove(struct i2c_client *client) >  { >         struct onyx *onyx = i2c_get_clientdata(client); >   > @@ -1037,7 +1037,6 @@ static int onyx_i2c_remove(struct i2c_client > *client) >         of_node_put(onyx->codec.node); >         kfree(onyx->codec_info); >         kfree(onyx); > -       return 0; >  } >   >  static const struct i2c_device_id onyx_i2c_id[] = { > diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c > index ab19a37e2a68..ab89475b7715 100644 > --- a/sound/aoa/codecs/tas.c > +++ b/sound/aoa/codecs/tas.c > @@ -912,7 +912,7 @@ static int tas_i2c_probe(struct i2c_client > *client, >         return -EINVAL; >  } >   > -static int tas_i2c_remove(struct i2c_client *client) > +static void tas_i2c_remove(struct i2c_client *client) >  { >         struct tas *tas = i2c_get_clientdata(client); >         u8 tmp = TAS_ACR_ANALOG_PDOWN; > @@ -925,7 +925,6 @@ static int tas_i2c_remove(struct i2c_client > *client) >   >         mutex_destroy(&tas->mtx); >         kfree(tas); > -       return 0; >  } >   >  static const struct i2c_device_id tas_i2c_id[] = { > diff --git a/sound/pci/hda/cs35l41_hda_i2c.c > b/sound/pci/hda/cs35l41_hda_i2c.c > index e810b278fb91..acab8c058e66 100644 > --- a/sound/pci/hda/cs35l41_hda_i2c.c > +++ b/sound/pci/hda/cs35l41_hda_i2c.c > @@ -30,11 +30,9 @@ static int cs35l41_hda_i2c_probe(struct i2c_client > *clt, const struct i2c_device >                                  devm_regmap_init_i2c(clt, > &cs35l41_regmap_i2c)); >  } >   > -static int cs35l41_hda_i2c_remove(struct i2c_client *clt) > +static void cs35l41_hda_i2c_remove(struct i2c_client *clt) >  { >         cs35l41_hda_remove(&clt->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cs35l41_hda_i2c_id[] = { > diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c > index 6e5daae18f9d..80e5108157ef 100644 > --- a/sound/ppc/keywest.c > +++ b/sound/ppc/keywest.c > @@ -71,14 +71,12 @@ static int keywest_attach_adapter(struct > i2c_adapter *adapter) >         return 0; >  } >   > -static int keywest_remove(struct i2c_client *client) > +static void keywest_remove(struct i2c_client *client) >  { >         if (! keywest_ctx) > -               return 0; > +               return; >         if (client == keywest_ctx->client) >                 keywest_ctx->client = NULL; > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/adau1761-i2c.c > b/sound/soc/codecs/adau1761-i2c.c > index 0683caf86aea..0cefff49569c 100644 > --- a/sound/soc/codecs/adau1761-i2c.c > +++ b/sound/soc/codecs/adau1761-i2c.c > @@ -30,10 +30,9 @@ static int adau1761_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1761_i2c_remove(struct i2c_client *client) > +static void adau1761_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1761_i2c_ids[] = { > diff --git a/sound/soc/codecs/adau1781-i2c.c > b/sound/soc/codecs/adau1781-i2c.c > index e046de0ebcc7..39021b8cfb62 100644 > --- a/sound/soc/codecs/adau1781-i2c.c > +++ b/sound/soc/codecs/adau1781-i2c.c > @@ -30,10 +30,9 @@ static int adau1781_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1781_i2c_remove(struct i2c_client *client) > +static void adau1781_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1781_i2c_ids[] = { > diff --git a/sound/soc/codecs/ak4375.c b/sound/soc/codecs/ak4375.c > index 9a7b662016b9..bfed08fe4b9e 100644 > --- a/sound/soc/codecs/ak4375.c > +++ b/sound/soc/codecs/ak4375.c > @@ -581,11 +581,9 @@ static int ak4375_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4375_i2c_remove(struct i2c_client *i2c) > +static void ak4375_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4375_of_match[] = { > diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c > index baa9ff5d0ce5..919aa0973050 100644 > --- a/sound/soc/codecs/ak4458.c > +++ b/sound/soc/codecs/ak4458.c > @@ -826,11 +826,9 @@ static int ak4458_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4458_i2c_remove(struct i2c_client *i2c) > +static void ak4458_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4458_of_match[] = { > diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c > index d8d9cc712d67..65a11cd39a43 100644 > --- a/sound/soc/codecs/ak4641.c > +++ b/sound/soc/codecs/ak4641.c > @@ -605,7 +605,7 @@ static int ak4641_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int ak4641_i2c_remove(struct i2c_client *i2c) > +static void ak4641_i2c_remove(struct i2c_client *i2c) >  { >         struct ak4641_platform_data *pdata = i2c->dev.platform_data; >   > @@ -617,8 +617,6 @@ static int ak4641_i2c_remove(struct i2c_client > *i2c) >                 if (gpio_is_valid(pdata->gpio_npdn)) >                         gpio_free(pdata->gpio_npdn); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ak4641_i2c_id[] = { > diff --git a/sound/soc/codecs/ak5558.c b/sound/soc/codecs/ak5558.c > index c94cfde3e4a8..df8140907ac5 100644 > --- a/sound/soc/codecs/ak5558.c > +++ b/sound/soc/codecs/ak5558.c > @@ -481,11 +481,9 @@ static int ak5558_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak5558_i2c_remove(struct i2c_client *i2c) > +static void ak5558_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak5558_i2c_dt_ids[] __maybe_unused > = { > diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c > index badfc55bc5fa..7aec12688da9 100644 > --- a/sound/soc/codecs/cs35l32.c > +++ b/sound/soc/codecs/cs35l32.c > @@ -498,14 +498,12 @@ static int cs35l32_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l32_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l32_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l32_private *cs35l32 = > i2c_get_clientdata(i2c_client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs35l32->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs35l33.c b/sound/soc/codecs/cs35l33.c > index 47dc0f6d90a2..46972c86fd88 100644 > --- a/sound/soc/codecs/cs35l33.c > +++ b/sound/soc/codecs/cs35l33.c > @@ -1251,7 +1251,7 @@ static int cs35l33_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l33_i2c_remove(struct i2c_client *client) > +static void cs35l33_i2c_remove(struct i2c_client *client) >  { >         struct cs35l33_private *cs35l33 = i2c_get_clientdata(client); >   > @@ -1260,8 +1260,6 @@ static int cs35l33_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l33->num_core_supplies, >                 cs35l33->core_supplies); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l33_of_match[] = { > diff --git a/sound/soc/codecs/cs35l34.c b/sound/soc/codecs/cs35l34.c > index 50d509a06071..c36b824b66e6 100644 > --- a/sound/soc/codecs/cs35l34.c > +++ b/sound/soc/codecs/cs35l34.c > @@ -1129,7 +1129,7 @@ static int cs35l34_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l34_i2c_remove(struct i2c_client *client) > +static void cs35l34_i2c_remove(struct i2c_client *client) >  { >         struct cs35l34_private *cs35l34 = i2c_get_clientdata(client); >   > @@ -1138,8 +1138,6 @@ static int cs35l34_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l34->num_core_supplies, >                 cs35l34->core_supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs35l34_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c > index 6b70afb70a67..0f6968a29ace 100644 > --- a/sound/soc/codecs/cs35l35.c > +++ b/sound/soc/codecs/cs35l35.c > @@ -1628,14 +1628,12 @@ static int cs35l35_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs35l35_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l35_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l35_private *cs35l35 = > i2c_get_clientdata(i2c_client); >   >         regulator_bulk_disable(cs35l35->num_supplies, cs35l35- > >supplies); >         gpiod_set_value_cansleep(cs35l35->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l35_of_match[] = { > diff --git a/sound/soc/codecs/cs35l36.c b/sound/soc/codecs/cs35l36.c > index dfe85dc2cd20..80844471309d 100644 > --- a/sound/soc/codecs/cs35l36.c > +++ b/sound/soc/codecs/cs35l36.c > @@ -1911,7 +1911,7 @@ static int cs35l36_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l36_i2c_remove(struct i2c_client *client) > +static void cs35l36_i2c_remove(struct i2c_client *client) >  { >         struct cs35l36_private *cs35l36 = i2c_get_clientdata(client); >   > @@ -1925,8 +1925,6 @@ static int cs35l36_i2c_remove(struct i2c_client > *client) >                 gpiod_set_value_cansleep(cs35l36->reset_gpio, 0); >   >         regulator_bulk_disable(cs35l36->num_supplies, cs35l36- > >supplies); > - > -       return 0; >  } >  static const struct of_device_id cs35l36_of_match[] = { >         {.compatible = "cirrus,cs35l36"}, > diff --git a/sound/soc/codecs/cs35l41-i2c.c > b/sound/soc/codecs/cs35l41-i2c.c > index 37c703c08fd5..3676b596f60b 100644 > --- a/sound/soc/codecs/cs35l41-i2c.c > +++ b/sound/soc/codecs/cs35l41-i2c.c > @@ -56,13 +56,11 @@ static int cs35l41_i2c_probe(struct i2c_client > *client) >         return cs35l41_probe(cs35l41, hw_cfg); >  } >   > -static int cs35l41_i2c_remove(struct i2c_client *client) > +static void cs35l41_i2c_remove(struct i2c_client *client) >  { >         struct cs35l41_private *cs35l41 = i2c_get_clientdata(client); >   >         cs35l41_remove(cs35l41); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/cs35l45-i2c.c > b/sound/soc/codecs/cs35l45-i2c.c > index 06c2ddffb9c5..39d28641429e 100644 > --- a/sound/soc/codecs/cs35l45-i2c.c > +++ b/sound/soc/codecs/cs35l45-i2c.c > @@ -36,13 +36,11 @@ static int cs35l45_i2c_probe(struct i2c_client > *client) >         return cs35l45_probe(cs35l45); >  } >   > -static int cs35l45_i2c_remove(struct i2c_client *client) > +static void cs35l45_i2c_remove(struct i2c_client *client) >  { >         struct cs35l45_private *cs35l45 = i2c_get_clientdata(client); >   >         cs35l45_remove(cs35l45); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l45_of_match[] = { > diff --git a/sound/soc/codecs/cs4234.c b/sound/soc/codecs/cs4234.c > index 881c5ba70c0e..18bddeb63762 100644 > --- a/sound/soc/codecs/cs4234.c > +++ b/sound/soc/codecs/cs4234.c > @@ -851,7 +851,7 @@ static int cs4234_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs4234_i2c_remove(struct i2c_client *i2c_client) > +static void cs4234_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4234 *cs4234 = i2c_get_clientdata(i2c_client); >         struct device *dev = &i2c_client->dev; > @@ -859,8 +859,6 @@ static int cs4234_i2c_remove(struct i2c_client > *i2c_client) >         snd_soc_unregister_component(dev); >         pm_runtime_disable(dev); >         cs4234_shutdown(cs4234); > - > -       return 0; >  } >   >  static int __maybe_unused cs4234_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c > index 86bfa8d5ec78..c16c0a0d3b56 100644 > --- a/sound/soc/codecs/cs4265.c > +++ b/sound/soc/codecs/cs4265.c > @@ -624,14 +624,12 @@ static int cs4265_i2c_probe(struct i2c_client > *i2c_client) >                         ARRAY_SIZE(cs4265_dai)); >  } >   > -static int cs4265_i2c_remove(struct i2c_client *i2c) > +static void cs4265_i2c_remove(struct i2c_client *i2c) >  { >         struct cs4265_private *cs4265 = i2c_get_clientdata(i2c); >   >         if (cs4265->reset_gpio) >                 gpiod_set_value_cansleep(cs4265->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs4265_of_match[] = { > diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c > index 531f63b01554..6bfddb1b9968 100644 > --- a/sound/soc/codecs/cs4270.c > +++ b/sound/soc/codecs/cs4270.c > @@ -651,13 +651,11 @@ static const struct regmap_config cs4270_regmap > = { >   * This function puts the chip into low power mode when the i2c > device >   * is removed. >   */ > -static int cs4270_i2c_remove(struct i2c_client *i2c_client) > +static void cs4270_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4270_private *cs4270 = > i2c_get_clientdata(i2c_client); >   >         gpiod_set_value_cansleep(cs4270->reset_gpio, 0); > - > -       return 0; >  } >   >  /** > diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c > index 4fade2388797..ab848fe5f721 100644 > --- a/sound/soc/codecs/cs42l42.c > +++ b/sound/soc/codecs/cs42l42.c > @@ -2342,7 +2342,7 @@ static int cs42l42_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs42l42_i2c_remove(struct i2c_client *i2c_client) > +static void cs42l42_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs42l42_private *cs42l42 = > i2c_get_clientdata(i2c_client); >   > @@ -2359,8 +2359,6 @@ static int cs42l42_i2c_remove(struct i2c_client > *i2c_client) >   >         gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); >         regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), > cs42l42->supplies); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l42_pm_ops = { > diff --git a/sound/soc/codecs/cs42l51-i2c.c > b/sound/soc/codecs/cs42l51-i2c.c > index 3613fb12d623..85238339fbca 100644 > --- a/sound/soc/codecs/cs42l51-i2c.c > +++ b/sound/soc/codecs/cs42l51-i2c.c > @@ -28,11 +28,9 @@ static int cs42l51_i2c_probe(struct i2c_client > *i2c) >         return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, > &config)); >  } >   > -static int cs42l51_i2c_remove(struct i2c_client *i2c) > +static void cs42l51_i2c_remove(struct i2c_client *i2c) >  { >         cs42l51_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l51_pm_ops = { > diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c > index 510c94265b1f..d1cae24d015f 100644 > --- a/sound/soc/codecs/cs42l56.c > +++ b/sound/soc/codecs/cs42l56.c > @@ -1321,13 +1321,12 @@ static int cs42l56_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs42l56_i2c_remove(struct i2c_client *client) > +static void cs42l56_i2c_remove(struct i2c_client *client) >  { >         struct cs42l56_private *cs42l56 = i2c_get_clientdata(client); >   >         regulator_bulk_disable(ARRAY_SIZE(cs42l56->supplies), >                                cs42l56->supplies); > -       return 0; >  } >   >  static const struct of_device_id cs42l56_of_match[] = { > diff --git a/sound/soc/codecs/cs42xx8-i2c.c > b/sound/soc/codecs/cs42xx8-i2c.c > index cb06a06d48b0..bd80e9fc907f 100644 > --- a/sound/soc/codecs/cs42xx8-i2c.c > +++ b/sound/soc/codecs/cs42xx8-i2c.c > @@ -30,11 +30,9 @@ static int cs42xx8_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cs42xx8_i2c_remove(struct i2c_client *i2c) > +static void cs42xx8_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_device_id cs42xx8_i2c_id[] = { > diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c > index a2bce0f9f247..944bb9a26ca9 100644 > --- a/sound/soc/codecs/cs43130.c > +++ b/sound/soc/codecs/cs43130.c > @@ -2584,7 +2584,7 @@ static int cs43130_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs43130_i2c_remove(struct i2c_client *client) > +static void cs43130_i2c_remove(struct i2c_client *client) >  { >         struct cs43130_private *cs43130 = i2c_get_clientdata(client); >   > @@ -2611,8 +2611,6 @@ static int cs43130_i2c_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130- > >supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs43130_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c > index 7069e9b54857..41472ed22209 100644 > --- a/sound/soc/codecs/cs4349.c > +++ b/sound/soc/codecs/cs4349.c > @@ -306,14 +306,12 @@ static int cs4349_i2c_probe(struct i2c_client > *client) >                 &cs4349_dai, 1); >  } >   > -static int cs4349_i2c_remove(struct i2c_client *client) > +static void cs4349_i2c_remove(struct i2c_client *client) >  { >         struct cs4349_private *cs4349 = i2c_get_clientdata(client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs4349->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c > index 360ca2ffd506..71298a18ee1a 100644 > --- a/sound/soc/codecs/cs53l30.c > +++ b/sound/soc/codecs/cs53l30.c > @@ -1044,7 +1044,7 @@ static int cs53l30_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs53l30_i2c_remove(struct i2c_client *client) > +static void cs53l30_i2c_remove(struct i2c_client *client) >  { >         struct cs53l30_private *cs53l30 = i2c_get_clientdata(client); >   > @@ -1053,8 +1053,6 @@ static int cs53l30_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_disable(ARRAY_SIZE(cs53l30->supplies), >                                cs53l30->supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cx2072x.c b/sound/soc/codecs/cx2072x.c > index b35debb5818d..c24915f7dec3 100644 > --- a/sound/soc/codecs/cx2072x.c > +++ b/sound/soc/codecs/cx2072x.c > @@ -1676,10 +1676,9 @@ static int cx2072x_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cx2072x_i2c_remove(struct i2c_client *i2c) > +static void cx2072x_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id cx2072x_i2c_id[] = { > diff --git a/sound/soc/codecs/max98090.c > b/sound/soc/codecs/max98090.c > index 576277a82d41..416e6f660541 100644 > --- a/sound/soc/codecs/max98090.c > +++ b/sound/soc/codecs/max98090.c > @@ -2618,11 +2618,9 @@ static void max98090_i2c_shutdown(struct > i2c_client *i2c) >         msleep(40); >  } >   > -static int max98090_i2c_remove(struct i2c_client *client) > +static void max98090_i2c_remove(struct i2c_client *client) >  { >         max98090_i2c_shutdown(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/max9860.c b/sound/soc/codecs/max9860.c > index 82f20a8e27ad..2b0d0298da83 100644 > --- a/sound/soc/codecs/max9860.c > +++ b/sound/soc/codecs/max9860.c > @@ -702,14 +702,13 @@ static int max9860_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max9860_remove(struct i2c_client *i2c) > +static void max9860_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct max9860_priv *max9860 = dev_get_drvdata(dev); >   >         pm_runtime_disable(dev); >         regulator_disable(max9860->dvddio); > -       return 0; >  } >   >  static const struct i2c_device_id max9860_i2c_id[] = { > diff --git a/sound/soc/codecs/max98927.c > b/sound/soc/codecs/max98927.c > index b7cff76d7b5b..c9694ba9c341 100644 > --- a/sound/soc/codecs/max98927.c > +++ b/sound/soc/codecs/max98927.c > @@ -935,15 +935,13 @@ static int max98927_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max98927_i2c_remove(struct i2c_client *i2c) > +static void max98927_i2c_remove(struct i2c_client *i2c) >  { >         struct max98927_priv *max98927 = i2c_get_clientdata(i2c); >   >         if (max98927->reset_gpio) { >                 gpiod_set_value_cansleep(max98927->reset_gpio, 1); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id max98927_i2c_id[] = { > diff --git a/sound/soc/codecs/mt6660.c b/sound/soc/codecs/mt6660.c > index ba11555796ad..4971cd0b90f8 100644 > --- a/sound/soc/codecs/mt6660.c > +++ b/sound/soc/codecs/mt6660.c > @@ -516,14 +516,13 @@ static int mt6660_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt6660_i2c_remove(struct i2c_client *client) > +static void mt6660_i2c_remove(struct i2c_client *client) >  { >         struct mt6660_chip *chip = i2c_get_clientdata(client); >   >         pm_runtime_disable(chip->dev); >         pm_runtime_set_suspended(chip->dev); >         mutex_destroy(&chip->io_lock); > -       return 0; >  } >   >  static int __maybe_unused mt6660_i2c_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/nau8821.c b/sound/soc/codecs/nau8821.c > index ce4e7f46bb06..dcae41ba2e02 100644 > --- a/sound/soc/codecs/nau8821.c > +++ b/sound/soc/codecs/nau8821.c > @@ -1665,13 +1665,11 @@ static int nau8821_i2c_probe(struct > i2c_client *i2c) >         return ret; >  } >   > -static int nau8821_i2c_remove(struct i2c_client *i2c_client) > +static void nau8821_i2c_remove(struct i2c_client *i2c_client) >  { >         struct nau8821 *nau8821 = i2c_get_clientdata(i2c_client); >   >         devm_free_irq(nau8821->dev, nau8821->irq, nau8821); > - > -       return 0; >  } >   >  static const struct i2c_device_id nau8821_i2c_ids[] = { > diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c > index 20e45a337b8f..bd34c84507da 100644 > --- a/sound/soc/codecs/nau8825.c > +++ b/sound/soc/codecs/nau8825.c > @@ -2669,10 +2669,8 @@ static int nau8825_i2c_probe(struct i2c_client > *i2c) >                 &nau8825_dai, 1); >  } >   > -static int nau8825_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void nau8825_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id nau8825_i2c_ids[] = { >         { "nau8825", 0 }, > diff --git a/sound/soc/codecs/pcm1789-i2c.c > b/sound/soc/codecs/pcm1789-i2c.c > index 1d2f7480a6e4..fafe0dcbe4ea 100644 > --- a/sound/soc/codecs/pcm1789-i2c.c > +++ b/sound/soc/codecs/pcm1789-i2c.c > @@ -27,11 +27,9 @@ static int pcm1789_i2c_probe(struct i2c_client > *client) >         return pcm1789_common_init(&client->dev, regmap); >  } >   > -static int pcm1789_i2c_remove(struct i2c_client *client) > +static void pcm1789_i2c_remove(struct i2c_client *client) >  { >         pcm1789_common_exit(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/pcm3168a-i2c.c > b/sound/soc/codecs/pcm3168a-i2c.c > index c0fa0dc80e8f..a0eec82e9872 100644 > --- a/sound/soc/codecs/pcm3168a-i2c.c > +++ b/sound/soc/codecs/pcm3168a-i2c.c > @@ -26,11 +26,9 @@ static int pcm3168a_i2c_probe(struct i2c_client > *i2c) >         return pcm3168a_probe(&i2c->dev, regmap); >  } >   > -static int pcm3168a_i2c_remove(struct i2c_client *i2c) > +static void pcm3168a_i2c_remove(struct i2c_client *i2c) >  { >         pcm3168a_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcm3168a_i2c_id[] = { > diff --git a/sound/soc/codecs/pcm512x-i2c.c > b/sound/soc/codecs/pcm512x-i2c.c > index 81754e141a55..9dfbbe8f4a0b 100644 > --- a/sound/soc/codecs/pcm512x-i2c.c > +++ b/sound/soc/codecs/pcm512x-i2c.c > @@ -29,10 +29,9 @@ static int pcm512x_i2c_probe(struct i2c_client > *i2c) >         return pcm512x_probe(&i2c->dev, regmap); >  } >   > -static int pcm512x_i2c_remove(struct i2c_client *i2c) > +static void pcm512x_i2c_remove(struct i2c_client *i2c) >  { >         pcm512x_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id pcm512x_i2c_id[] = { > diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c > index ab093bdb5552..cb2147f86818 100644 > --- a/sound/soc/codecs/rt274.c > +++ b/sound/soc/codecs/rt274.c > @@ -1207,14 +1207,12 @@ static int rt274_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt274_i2c_remove(struct i2c_client *i2c) > +static void rt274_i2c_remove(struct i2c_client *i2c) >  { >         struct rt274_priv *rt274 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt274); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c > index ad8ea1fa7c23..c66db0760a0f 100644 > --- a/sound/soc/codecs/rt286.c > +++ b/sound/soc/codecs/rt286.c > @@ -1254,14 +1254,12 @@ static int rt286_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt286_i2c_remove(struct i2c_client *i2c) > +static void rt286_i2c_remove(struct i2c_client *i2c) >  { >         struct rt286_priv *rt286 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt286); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c > index c291786dc82d..9f44eabfdbdb 100644 > --- a/sound/soc/codecs/rt298.c > +++ b/sound/soc/codecs/rt298.c > @@ -1297,14 +1297,12 @@ static int rt298_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt298_i2c_remove(struct i2c_client *i2c) > +static void rt298_i2c_remove(struct i2c_client *i2c) >  { >         struct rt298_priv *rt298 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt298); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c > index 37f1bf552eff..7a994abeedb0 100644 > --- a/sound/soc/codecs/rt5616.c > +++ b/sound/soc/codecs/rt5616.c > @@ -1389,10 +1389,8 @@ static int rt5616_i2c_probe(struct i2c_client > *i2c) >                                       rt5616_dai, > ARRAY_SIZE(rt5616_dai)); >  } >   > -static int rt5616_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void rt5616_i2c_remove(struct i2c_client *i2c) > +{} >   >  static void rt5616_i2c_shutdown(struct i2c_client *client) >  { > diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c > index c941e878471c..d82264edd25c 100644 > --- a/sound/soc/codecs/rt5631.c > +++ b/sound/soc/codecs/rt5631.c > @@ -1721,10 +1721,8 @@ static int rt5631_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5631_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void rt5631_i2c_remove(struct i2c_client *client) > +{} >   >  static struct i2c_driver rt5631_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c > index 507aba8de3cc..e77bdbc1a098 100644 > --- a/sound/soc/codecs/rt5645.c > +++ b/sound/soc/codecs/rt5645.c > @@ -4146,7 +4146,7 @@ static int rt5645_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5645_i2c_remove(struct i2c_client *i2c) > +static void rt5645_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5645_priv *rt5645 = i2c_get_clientdata(i2c); >   > @@ -4163,8 +4163,6 @@ static int rt5645_i2c_remove(struct i2c_client > *i2c) >         cancel_delayed_work_sync(&rt5645->rcclock_work); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5645->supplies), rt5645- > >supplies); > - > -       return 0; >  } >   >  static void rt5645_i2c_shutdown(struct i2c_client *i2c) > diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c > index e51eed8a79ab..15296e0fa545 100644 > --- a/sound/soc/codecs/rt5663.c > +++ b/sound/soc/codecs/rt5663.c > @@ -3711,7 +3711,7 @@ static int rt5663_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5663_i2c_remove(struct i2c_client *i2c) > +static void rt5663_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5663_priv *rt5663 = i2c_get_clientdata(i2c); >   > @@ -3719,8 +3719,6 @@ static int rt5663_i2c_remove(struct i2c_client > *i2c) >                 free_irq(i2c->irq, rt5663); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5663->supplies), rt5663- > >supplies); > - > -       return 0; >  } >   >  static void rt5663_i2c_shutdown(struct i2c_client *client) > diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c > index 8a97f6db04d5..eb73e262457c 100644 > --- a/sound/soc/codecs/rt5670.c > +++ b/sound/soc/codecs/rt5670.c > @@ -3321,11 +3321,9 @@ static int rt5670_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5670_i2c_remove(struct i2c_client *i2c) > +static void rt5670_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_driver rt5670_i2c_driver = { > diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c > index 4a8c267d4fbc..3161022f0757 100644 > --- a/sound/soc/codecs/rt5677.c > +++ b/sound/soc/codecs/rt5677.c > @@ -5694,11 +5694,9 @@ static int rt5677_i2c_probe(struct i2c_client > *i2c) >                                       rt5677_dai, > ARRAY_SIZE(rt5677_dai)); >  } >   > -static int rt5677_i2c_remove(struct i2c_client *i2c) > +static void rt5677_i2c_remove(struct i2c_client *i2c) >  { >         rt5677_free_gpio(i2c); > - > -       return 0; >  } >   >  static struct i2c_driver rt5677_i2c_driver = { > diff --git a/sound/soc/codecs/rt5682-i2c.c b/sound/soc/codecs/rt5682- > i2c.c > index 3f72f6093436..2935c1bb81f3 100644 > --- a/sound/soc/codecs/rt5682-i2c.c > +++ b/sound/soc/codecs/rt5682-i2c.c > @@ -302,11 +302,9 @@ static void rt5682_i2c_shutdown(struct > i2c_client *client) >         rt5682_reset(rt5682); >  } >   > -static int rt5682_i2c_remove(struct i2c_client *client) > +static void rt5682_i2c_remove(struct i2c_client *client) >  { >         rt5682_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682_of_match[] = { > diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c > index 4d44eddee901..a80c686613f4 100644 > --- a/sound/soc/codecs/rt5682s.c > +++ b/sound/soc/codecs/rt5682s.c > @@ -3195,11 +3195,9 @@ static void rt5682s_i2c_shutdown(struct > i2c_client *client) >         rt5682s_reset(rt5682s); >  } >   > -static int rt5682s_i2c_remove(struct i2c_client *client) > +static void rt5682s_i2c_remove(struct i2c_client *client) >  { >         rt5682s_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682s_of_match[] = { > diff --git a/sound/soc/codecs/rt9120.c b/sound/soc/codecs/rt9120.c > index da495bdc8415..644300e88b4c 100644 > --- a/sound/soc/codecs/rt9120.c > +++ b/sound/soc/codecs/rt9120.c > @@ -572,11 +572,10 @@ static int rt9120_probe(struct i2c_client *i2c) >                                                &rt9120_dai, 1); >  } >   > -static int rt9120_remove(struct i2c_client *i2c) > +static void rt9120_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); >         pm_runtime_set_suspended(&i2c->dev); > -       return 0; >  } >   >  static int __maybe_unused rt9120_runtime_suspend(struct device *dev) > diff --git a/sound/soc/codecs/sgtl5000.c > b/sound/soc/codecs/sgtl5000.c > index 2aa48aef6a97..f29bd50fe4cd 100644 > --- a/sound/soc/codecs/sgtl5000.c > +++ b/sound/soc/codecs/sgtl5000.c > @@ -1791,15 +1791,13 @@ static int sgtl5000_i2c_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int sgtl5000_i2c_remove(struct i2c_client *client) > +static void sgtl5000_i2c_remove(struct i2c_client *client) >  { >         struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client); >   >         clk_disable_unprepare(sgtl5000->mclk); >         regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000- > >supplies); >         regulator_bulk_free(sgtl5000->num_supplies, sgtl5000- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgtl5000_id[] = { > diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c > index 9189fb3648f7..0676c822458f 100644 > --- a/sound/soc/codecs/sta350.c > +++ b/sound/soc/codecs/sta350.c > @@ -1243,10 +1243,8 @@ static int sta350_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int sta350_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void sta350_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id sta350_i2c_id[] = { >         { "sta350", 0 }, > diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c > index b5c9c61ff5a8..0259ae96d97e 100644 > --- a/sound/soc/codecs/tas2552.c > +++ b/sound/soc/codecs/tas2552.c > @@ -737,10 +737,9 @@ static int tas2552_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas2552_i2c_remove(struct i2c_client *client) > +static void tas2552_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id tas2552_id[] = { > diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c > index 5c0df3cd4832..b0a73244ee31 100644 > --- a/sound/soc/codecs/tas5086.c > +++ b/sound/soc/codecs/tas5086.c > @@ -982,10 +982,8 @@ static int tas5086_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int tas5086_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void tas5086_i2c_remove(struct i2c_client *i2c) > +{} >   >  static struct i2c_driver tas5086_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c > index 7b599664db20..1a060e85621f 100644 > --- a/sound/soc/codecs/tas571x.c > +++ b/sound/soc/codecs/tas571x.c > @@ -885,13 +885,11 @@ static int tas571x_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas571x_i2c_remove(struct i2c_client *client) > +static void tas571x_i2c_remove(struct i2c_client *client) >  { >         struct tas571x_private *priv = i2c_get_clientdata(client); >   >         regulator_bulk_disable(priv->chip->num_supply_names, priv- > >supplies); > - > -       return 0; >  } >   >  static const struct of_device_id tas571x_of_match[] __maybe_unused = > { > diff --git a/sound/soc/codecs/tas5805m.c > b/sound/soc/codecs/tas5805m.c > index fa0e81ec875a..4782d9c47992 100644 > --- a/sound/soc/codecs/tas5805m.c > +++ b/sound/soc/codecs/tas5805m.c > @@ -523,7 +523,7 @@ static int tas5805m_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int tas5805m_i2c_remove(struct i2c_client *i2c) > +static void tas5805m_i2c_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct tas5805m_priv *tas5805m = dev_get_drvdata(dev); > @@ -532,7 +532,6 @@ static int tas5805m_i2c_remove(struct i2c_client > *i2c) >         gpiod_set_value(tas5805m->gpio_pdn_n, 0); >         usleep_range(10000, 15000); >         regulator_disable(tas5805m->pvdd); > -       return 0; >  } >   >  static const struct i2c_device_id tas5805m_i2c_id[] = { > diff --git a/sound/soc/codecs/tas6424.c b/sound/soc/codecs/tas6424.c > index 22b53856e691..fd1f37d48982 100644 > --- a/sound/soc/codecs/tas6424.c > +++ b/sound/soc/codecs/tas6424.c > @@ -775,7 +775,7 @@ static int tas6424_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas6424_i2c_remove(struct i2c_client *client) > +static void tas6424_i2c_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct tas6424_data *tas6424 = dev_get_drvdata(dev); > @@ -791,8 +791,6 @@ static int tas6424_i2c_remove(struct i2c_client > *client) >                                      tas6424->supplies); >         if (ret < 0) >                 dev_err(dev, "unable to disable supplies: %d\n", > ret); > - > -       return 0; >  } >   >  static const struct i2c_device_id tas6424_i2c_ids[] = { > diff --git a/sound/soc/codecs/tlv320adc3xxx.c > b/sound/soc/codecs/tlv320adc3xxx.c > index 82532ad00c3c..82d78e7c610e 100644 > --- a/sound/soc/codecs/tlv320adc3xxx.c > +++ b/sound/soc/codecs/tlv320adc3xxx.c > @@ -1427,7 +1427,7 @@ static int adc3xxx_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int __exit adc3xxx_i2c_remove(struct i2c_client *client) > +static void __exit adc3xxx_i2c_remove(struct i2c_client *client) >  { >         struct adc3xxx *adc3xxx = i2c_get_clientdata(client); >   > @@ -1435,7 +1435,6 @@ static int __exit adc3xxx_i2c_remove(struct > i2c_client *client) >                 clk_disable_unprepare(adc3xxx->mclk); >         adc3xxx_free_gpio(adc3xxx); >         snd_soc_unregister_component(&client->dev); > -       return 0; >  } >   >  static const struct of_device_id tlv320adc3xxx_of_match[] = { > diff --git a/sound/soc/codecs/tlv320aic32x4-i2c.c > b/sound/soc/codecs/tlv320aic32x4-i2c.c > index 0645239901b1..d1e543ca3521 100644 > --- a/sound/soc/codecs/tlv320aic32x4-i2c.c > +++ b/sound/soc/codecs/tlv320aic32x4-i2c.c > @@ -45,11 +45,9 @@ static int aic32x4_i2c_probe(struct i2c_client > *i2c) >         return aic32x4_probe(&i2c->dev, regmap); >  } >   > -static int aic32x4_i2c_remove(struct i2c_client *i2c) > +static void aic32x4_i2c_remove(struct i2c_client *i2c) >  { >         aic32x4_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id aic32x4_i2c_id[] = { > diff --git a/sound/soc/codecs/tlv320aic3x-i2c.c > b/sound/soc/codecs/tlv320aic3x-i2c.c > index 7bd9ce08bb7b..d7e94d564dbf 100644 > --- a/sound/soc/codecs/tlv320aic3x-i2c.c > +++ b/sound/soc/codecs/tlv320aic3x-i2c.c > @@ -41,11 +41,9 @@ static int aic3x_i2c_probe(struct i2c_client *i2c) >         return aic3x_probe(&i2c->dev, regmap, id->driver_data); >  } >   > -static int aic3x_i2c_remove(struct i2c_client *i2c) > +static void aic3x_i2c_remove(struct i2c_client *i2c) >  { >         aic3x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id aic3x_of_id[] = { > diff --git a/sound/soc/codecs/tlv320dac33.c > b/sound/soc/codecs/tlv320dac33.c > index 66f1d1cd6cf0..8a86bfe8266c 100644 > --- a/sound/soc/codecs/tlv320dac33.c > +++ b/sound/soc/codecs/tlv320dac33.c > @@ -1539,7 +1539,7 @@ static int dac33_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dac33_i2c_remove(struct i2c_client *client) > +static void dac33_i2c_remove(struct i2c_client *client) >  { >         struct tlv320dac33_priv *dac33 = i2c_get_clientdata(client); >   > @@ -1548,8 +1548,6 @@ static int dac33_i2c_remove(struct i2c_client > *client) >   >         if (dac33->power_gpio >= 0) >                 gpio_free(dac33->power_gpio); > - > -       return 0; >  } >   >  static const struct i2c_device_id tlv320dac33_i2c_id[] = { > diff --git a/sound/soc/codecs/wm1250-ev1.c b/sound/soc/codecs/wm1250- > ev1.c > index b6366dea15a6..49dbd19d26cc 100644 > --- a/sound/soc/codecs/wm1250-ev1.c > +++ b/sound/soc/codecs/wm1250-ev1.c > @@ -229,11 +229,9 @@ static int wm1250_ev1_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm1250_ev1_remove(struct i2c_client *i2c) > +static void wm1250_ev1_remove(struct i2c_client *i2c) >  { >         wm1250_ev1_free(i2c); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm1250_ev1_i2c_id[] = { > diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c > index 1cd544580c83..8557c33eeee7 100644 > --- a/sound/soc/codecs/wm2200.c > +++ b/sound/soc/codecs/wm2200.c > @@ -2415,7 +2415,7 @@ static int wm2200_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm2200_i2c_remove(struct i2c_client *i2c) > +static void wm2200_i2c_remove(struct i2c_client *i2c) >  { >         struct wm2200_priv *wm2200 = i2c_get_clientdata(i2c); >   > @@ -2428,8 +2428,6 @@ static int wm2200_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); >         regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), >                                wm2200->core_supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c > index a89870918174..211ef8190c61 100644 > --- a/sound/soc/codecs/wm5100.c > +++ b/sound/soc/codecs/wm5100.c > @@ -2636,7 +2636,7 @@ static int wm5100_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm5100_i2c_remove(struct i2c_client *i2c) > +static void wm5100_i2c_remove(struct i2c_client *i2c) >  { >         struct wm5100_priv *wm5100 = i2c_get_clientdata(i2c); >   > @@ -2652,8 +2652,6 @@ static int wm5100_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0); >                 gpio_free(wm5100->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8804-i2c.c b/sound/soc/codecs/wm8804- > i2c.c > index 04dc9fb5afb4..3ce1a39d76eb 100644 > --- a/sound/soc/codecs/wm8804-i2c.c > +++ b/sound/soc/codecs/wm8804-i2c.c > @@ -25,10 +25,9 @@ static int wm8804_i2c_probe(struct i2c_client > *i2c) >         return wm8804_probe(&i2c->dev, regmap); >  } >   > -static int wm8804_i2c_remove(struct i2c_client *i2c) > +static void wm8804_i2c_remove(struct i2c_client *i2c) >  { >         wm8804_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id wm8804_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c > index 84a3daf0c11e..28e296f2f969 100644 > --- a/sound/soc/codecs/wm8900.c > +++ b/sound/soc/codecs/wm8900.c > @@ -1283,10 +1283,8 @@ static int wm8900_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8900_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8900_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8900_i2c_id[] = { >         { "wm8900", 0 }, > diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c > index 3c95c2aea515..967be629b846 100644 > --- a/sound/soc/codecs/wm8903.c > +++ b/sound/soc/codecs/wm8903.c > @@ -2183,7 +2183,7 @@ static int wm8903_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8903_i2c_remove(struct i2c_client *client) > +static void wm8903_i2c_remove(struct i2c_client *client) >  { >         struct wm8903_priv *wm8903 = i2c_get_clientdata(client); >   > @@ -2192,8 +2192,6 @@ static int wm8903_i2c_remove(struct i2c_client > *client) >         if (client->irq) >                 free_irq(client->irq, wm8903); >         wm8903_free_gpio(wm8903); > - > -       return 0; >  } >   >  static const struct of_device_id wm8903_of_match[] = { > diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c > index 8c8f32b23083..3c4cd47f5ad9 100644 > --- a/sound/soc/codecs/wm8960.c > +++ b/sound/soc/codecs/wm8960.c > @@ -1487,10 +1487,8 @@ static int wm8960_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8960_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8960_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8960_i2c_id[] = { >         { "wm8960", 0 }, > diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c > index 5cca89364280..85089304f5e7 100644 > --- a/sound/soc/codecs/wm8962.c > +++ b/sound/soc/codecs/wm8962.c > @@ -3779,10 +3779,9 @@ static int wm8962_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8962_i2c_remove(struct i2c_client *client) > +static void wm8962_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c > index f4da77ec9d6c..fe1c5aab0ab6 100644 > --- a/sound/soc/codecs/wm8993.c > +++ b/sound/soc/codecs/wm8993.c > @@ -1723,15 +1723,13 @@ static int wm8993_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8993_i2c_remove(struct i2c_client *i2c) > +static void wm8993_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, wm8993); >         regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8993_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c > index f7bb27d1c76d..5f2b3af47c12 100644 > --- a/sound/soc/codecs/wm8996.c > +++ b/sound/soc/codecs/wm8996.c > @@ -3067,7 +3067,7 @@ static int wm8996_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8996_i2c_remove(struct i2c_client *client) > +static void wm8996_i2c_remove(struct i2c_client *client) >  { >         struct wm8996_priv *wm8996 = i2c_get_clientdata(client); >   > @@ -3076,8 +3076,6 @@ static int wm8996_i2c_remove(struct i2c_client > *client) >                 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); >                 gpio_free(wm8996->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8996_i2c_id[] = { > diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c > index 87b58448cea7..6184d8c06564 100644 > --- a/sound/soc/codecs/wm9081.c > +++ b/sound/soc/codecs/wm9081.c > @@ -1357,10 +1357,8 @@ static int wm9081_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm9081_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm9081_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm9081_i2c_id[] = { >         { "wm9081", 0 }, From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 94FC7C433EF for ; Wed, 29 Jun 2022 14:34:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zYmm+xJ4v/o4reEXwUCJRgAHsaJrC2ZjVzcHudWiZlI=; b=iNZ8xhBhWd+Gay ydd1TGvSfH3/K94yYKDe38GfRdebeKpMB8CXyMsisvpGXqKVewt0zaheZFtT864Gl2Fy+e+CRQ64m 3jh71JcJpTnIur65d6PEVO7U3Ku89wr9kx85JcyPq86AamaGvxBBfRVxsyKLBL74l0vWMOpNgoeiu CJ9tP3wNPyNM0Oc++Hgxg3dmoNMFDUq1DGZQyjzSWpcC2B5/8uaOujR+dj+4lH64dDJooZY1OLKvg x1NTUboIvjDIeBaVFBK1kiKIRjRPatnt2JR/6ZZO2MWIel55KUTiZJ7rX81A/YBwBjDmwunZdvv0M pZb1pf2qwma+VXgVMcPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o6YlF-00CW6e-GF; Wed, 29 Jun 2022 14:33:45 +0000 Received: from mga04.intel.com ([192.55.52.120]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o6Yl6-00CVyL-PS; Wed, 29 Jun 2022 14:33:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656513216; x=1688049216; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=ovERUMxy5cHPu6k6hYcCFHDSxfmFe62BgY6RoX75pBU=; b=PkuftmwZ4Fy2I0PShwe9ud5LAuF+dzhgZg2Xbr5IG12374AqCSlaxUI5 xef4RSzG6IKpO6v+Y7SnI7sy2Xs4gy2SK/mTWSEHuqneHbz8nvRI9OYKR xmtEAf5E41c4cerS55RXOMVteq186qytj79XweWoOtS3QOmlSF5u3kqRB ZzSebyT635gQebTaGd9LtujINdT6zpz7hiHG3lUXr1iwywOLwahv6H/Rw d/hT3uwhMnUqlCcdTDsr5pUUzv8dTX1iGn2P+VX6Wr9zLgqqJwXWw4eY/ wSIaoMF2luVn7SuwTjH4Eu4NPwmOefLmz3vaM22A0JshPtrk8r28whBp0 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="280806603" X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="280806603" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP; 29 Jun 2022 07:31:24 -0700 X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="647415537" Received: from egolubev-mobl.amr.corp.intel.com (HELO spandruv-desk1.amr.corp.intel.com) ([10.209.68.9]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2022 07:31:09 -0700 Message-ID: Subject: Re: [PATCH 6/6] i2c: Make remove callback return void From: srinivas pandruvada To: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Wolfram Sang Cc: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Sekhar Nori , Bartosz Golaszewski , Russell King , Scott Wood , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , Robin van der Gracht , Miguel Ojeda , Corey Minyard , Peter Huewe , Jarkko Sakkinen , Jason Gunthorpe , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Max Filippov , Michael Turquette , Stephen Boyd , Luca Ceresoli , Tudor Ambarus , Herbert Xu , "David S. Miller" , MyungJoo Ham , Chanwoo Choi , Michael Hennerich , Linus Walleij , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Benson Leung , Guenter Roeck , Phong LE , Adrien Grassein , Peter Senna Tschudin , Martin Donnelly , Martyn Welch , Douglas Anderson , Stefan Mavrodiev , Thierry Reding , Sam Ravnborg , Florian Fainelli , Broadcom internal kernel review list , Javier Martinez Canillas , Jiri Kosina , Benjamin Tissoires , Jean Delvare , George Joseph , Juerg Haefliger , Riku Voipio , Robert Marko , Luka Perkov , Marc Hulsman , Rudolf Marek , Peter Rosin , Jonathan Cameron , Lars-Peter Clausen , Dan Robertson , Rui Miguel Silva , Tomasz Duszynski , Kevin Tsai , Crt Mori , Dmitry Torokhov , Nick Dyer , Bastien Nocera , Hans de Goede , Maxime Coquelin , Alexandre Torgue , Sakari Ailus , Pavel Machek , Jan-Simon Moeller , Marek =?ISO-8859-1?Q?Beh=FAn?= , Colin Leroy , Joe Tessler , Hans Verkuil , Mauro Carvalho Chehab , Antti Palosaari , Jasmin Jessich , Matthias Schwarzott , Olli Salonen , Akihiro Tsukada , Kieran Bingham , Tianshu Qiu , Dongchun Zhu , Shawn Tu , Martin Kepplinger , Ricardo Ribalda , Dave Stevenson , Leon Luo , Manivannan Sadhasivam , Bingbu Cao , "Paul J. Murphy" , Daniele Alessandrelli , Michael Tretter , Pengutronix Kernel Team , Kyungmin Park , Heungjun Kim , Ramesh Shanmugasundaram , Jacopo Mondi , Niklas =?ISO-8859-1?Q?S=F6derlund?= , Jimmy Su , Arec Kao , "Lad, Prabhakar" , Shunqian Zheng , Steve Longerbeam , Chiranjeevi Rapolu , Daniel Scally , Wenyou Yang , Petr Cvek , Akinobu Mita , Sylwester Nawrocki , Benjamin Mugnier , Sylvain Petinot , Mats Randgaard , Tim Harvey , Matt Ranostay , Eduardo Valentin , "Daniel W. S. Almeida" , Lee Jones , Chen-Yu Tsai , Support Opensource , Robert Jones , Andy Shevchenko , Charles Keepax , Richard Fitzgerald , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Tony Lindgren , Jonathan =?ISO-8859-1?Q?Neusch=E4fer?= , Arnd Bergmann , Greg Kroah-Hartman , Eric Piel , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Andrew Lunn , Vivien Didelot , Vladimir Oltean , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Woojung Huh , UNGLinuxDriver@microchip.com, George McCollister , Ido Schimmel , Petr Machata , Jeremy Kerr , Matt Johnston , Charles Gorand , Krzysztof Opasiak , Rob Herring , Frank Rowand , Mark Gross , Maximilian Luz , Corentin Chary , Pali =?ISO-8859-1?Q?Roh=E1r?= , Sebastian Reichel , Tobias Schrammm , Liam Girdwood , Mark Brown , Alessandro Zummo , Jens Frederich , Jon Nettleton , Jiri Slaby , Felipe Balbi , Heikki Krogerus , Daniel Thompson , Jingoo Han , Helge Deller , Evgeniy Polyakov , Wim Van Sebroeck , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Johannes Berg , Jaroslav Kysela , Takashi Iwai , James Schulman , David Rhodes , Lucas Tanure , Nuno =?ISO-8859-1?Q?S=E1?= , Matthias Brugger , Oder Chiou , Fabio Estevam , Kevin Cernekee , Christophe Leroy , Maxime Ripard , Alvin =?UTF-8?Q?=C5=A0ipraga?= , Lucas Stach , Jagan Teki , Biju Das , Thomas Zimmermann , Alex Deucher , Lyude Paul , Xin Ji , Hsin-Yi Wang , =?ISO-8859-1?Q?Jos=E9_Exp=F3sito?= , Yang Li , Angela Czubak , Alistair Francis , Eddie James , Joel Stanley , Nathan Chancellor , Antoniu Miclaus , Alexandru Ardelean , Dmitry Rokosov , Stephan Gerhold , Miaoqian Lin , Gwendal Grignou , Yang Yingliang , Paul Cercueil , Daniel Palmer , Haibo Chen , Cai Huoqing , Marek Vasut , Jose Cazarin , Dan Carpenter , Jean-Baptiste Maneyrol , Michael Srba , Nikita Travkin , Maslov Dmitry , Jiri Valek - 2N , Arnaud Ferraris , Zheyu Ma , Marco Felsch , Oliver Graute , Zheng Yongjun , CGEL ZTE , Minghao Chi , Evgeny Novikov , Sean Young , Kirill Shilimanov , Moses Christopher Bollavarapu , Paul Kocialkowski , Janusz Krzysztofik , Dongliang Mu , Colin Ian King , lijian , Kees Cook , Yan Lei , Heiner Kallweit , Jonas Malaco , wengjianfeng , Rikard Falkeborn , Wei Yongjun , Tom Rix , Yizhuo , Martiros Shakhzadyan , Bjorn Andersson , Sven Peter , Alyssa Rosenzweig , Hector Martin , Saranya Gopal , Guido =?ISO-8859-1?Q?G=FCnther?= , Sing-Han Chen , Wayne Chang , Geert Uytterhoeven , Alexey Dobriyan , Masahiro Yamada , Vincent Knecht , Stephen Kitt , Pierre-Louis Bossart , Alexey Khoroshilov , Randy Dunlap , Alejandro Tafalla , Vijendar Mukunda , Seven Lee , Mac Chiang , David Lin , Daniel Beer , Ricard Wanderlof , Simon Trimmer , Shengjiu Wang , Viorel Suman , Nicola Lunghi , Adam Ford , linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, openipmi-developer@lists.sourceforge.net, linux-integrity@vger.kernel.org, linux-clk@vger.kernel.org, linux-crypto@vger.kernel.org, linux-gpio@vger.kernel.org, dri-devel@lists.freedesktop.org, chrome-platform@lists.linux.dev, linux-rpi-kernel@lists.infradead.org, linux-input@vger.kernel.org, linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-leds@vger.kernel.org, linux-media@vger.kernel.org, patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, platform-driver-x86@vger.kernel.org, acpi4asus-user@lists.sourceforge.net, linux-pm@vger.kernel.org, linux-pwm@vger.kernel.org, linux-rtc@vger.kernel.org, linux-staging@lists.linux.dev, linux-serial@vger.kernel.org, linux-usb@vger.kernel.org, linux-fbdev@vger.kernel.org, linux-watchdog@vger.kernel.org, kasan-dev@googlegroups.com, linux-mediatek@lists.infradead.org Date: Wed, 29 Jun 2022 07:31:08 -0700 In-Reply-To: <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> References: <20220628140313.74984-1-u.kleine-koenig@pengutronix.de> <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> User-Agent: Evolution 3.42.4 (3.42.4-2.fc35) MIME-Version: 1.0 X-Spam-Note: CRM114 run bypassed due to message size (569914 bytes) X-Spam-Score: -2.6 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Tue, 2022-06-28 at 16:03 +0200, Uwe Kleine-König wrote: > From: Uwe Kleine-König > > The value returned by an i2c driver's remove function is mostly > ignored. > (Only an [...] Content analysis details: (-2.6 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [192.55.52.120 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org T24gVHVlLCAyMDIyLTA2LTI4IGF0IDE2OjAzICswMjAwLCBVd2UgS2xlaW5lLUvDtm5pZyB3cm90 ZToKPiBGcm9tOiBVd2UgS2xlaW5lLUvDtm5pZyA8dXdlQGtsZWluZS1rb2VuaWcub3JnPgo+IAo+ IFRoZSB2YWx1ZSByZXR1cm5lZCBieSBhbiBpMmMgZHJpdmVyJ3MgcmVtb3ZlIGZ1bmN0aW9uIGlz IG1vc3RseQo+IGlnbm9yZWQuCj4gKE9ubHkgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIGlm IHRoZSB2YWx1ZSBpcyBub24temVybyB0aGF0IHRoZQo+IGVycm9yIGlzIGlnbm9yZWQuKQo+IAo+ IFNvIGNoYW5nZSB0aGUgcHJvdG90eXBlIG9mIHRoZSByZW1vdmUgZnVuY3Rpb24gdG8gcmV0dXJu IG5vIHZhbHVlLgo+IFRoaXMKPiB3YXkgZHJpdmVyIGF1dGhvcnMgYXJlIG5vdCB0ZW1wdGVkIHRv IGFzc3VtZSB0aGF0IHBhc3NpbmcgYW4gZXJyb3IgdG8KPiB0aGUgdXBwZXIgbGF5ZXIgaXMgYSBn b29kIGlkZWEuIEFsbCBkcml2ZXJzIGFyZSBhZGFwdGVkIGFjY29yZGluZ2x5Lgo+IFRoZXJlIGlz IG5vIGludGVuZGVkIGNoYW5nZSBvZiBiZWhhdmlvdXIsIGFsbCBjYWxsYmFja3Mgd2VyZSBwcmVw YXJlZAo+IHRvCj4gcmV0dXJuIDAgYmVmb3JlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVp bmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+CgpGb3IKIGRyaXZlcnMv aWlvL2FjY2VsL2JtYzE1MC1hY2NlbC1pMmMuYyAgICAgICAgICAgICAgICAgICAgICB8IDQgKy0t LQogZHJpdmVycy9paW8vYWNjZWwva3hjamstMTAxMy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgNCArLS0tCgpBY2tlZC1ieTogU3Jpbml2YXMgUGFuZHJ1dmFkYSA8c3Jpbml2YXMucGFu ZHJ1dmFkYUBsaW51eC5pbnRlbC5jb20+CgpUaGFua3MsClNyaW5pdmFzCgo+IC0tLQo+IMKgRG9j dW1lbnRhdGlvbi9pMmMvd3JpdGluZy1jbGllbnRzLnJzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAyICstCj4gwqBhcmNoL2FybS9tYWNoLWRhdmluY2kvYm9hcmQt ZG02NDR4LWV2bS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4g wqBhcmNoL2FybS9tYWNoLWRhdmluY2kvYm9hcmQtZG02NDZ4LWV2bS5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgz eHgvbWN1X21wYzgzNDllbWl0eC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBk cml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9hdXhkaXNw bGF5L2xjZDJzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2NoYXIvaXBtaS9pcG1iX2Rldl9p bnQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL2NoYXIvaXBtaS9pcG1pX2lwbWIuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL2NoYXIvaXBtaS9pcG1pX3NzaWYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKy0tLS0KPiDCoGRyaXZlcnMvY2hhci90cG0v c3QzM3pwMjQvaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfYXRtZWwuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0K PiDCoGRyaXZlcnMvY2hhci90cG0vdHBtX2kyY19pbmZpbmVvbi5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvY2hhci90cG0v dHBtX2kyY19udXZvdG9uLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19pMmNfY3I1MC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKg ZHJpdmVycy9jbGsvY2xrLWNkY2U3MDYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9jbGsv Y2xrLWNzMjAwMC1jcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2Nsay9jbGstc2k1MTQuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvY2xrL2Nsay1zaTUzNDEuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBkcml2ZXJzL2Nsay9jbGstc2k1NzAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMv Y2xrL2Nsay12ZXJzYWNsb2NrNS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvY3J5cHRvL2F0bWVsLWVj Yy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKgZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNiAr Ky0tLS0KPiDCoGRyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L2dwaW8vZ3Bpby1hZHA1NTg4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3Bpby9ncGlvLW1h eDczMDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvZ3Bpby9ncGlvLXRwaWMyODEwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4LWFueDYz NDUuY8KgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4LWFueDc4eHguY8KgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FueDc2MjUuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Nocm9udGVs LWNoNzAzMy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jcm9zLWVjLWFueDc2ODguY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRl LWl0NjUwNS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjYxMjEuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9sb250aXVtLWx0ODkxMmIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sb250aXVtLWx0OTIxMS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2xvbnRpdW0tbHQ5NjExLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1s dDk2MTF1eGMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9tZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3LmPCoCB8 IDggKystLS0tCj4gLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbnhwLXB0bjM0NjAuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjIyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJh ZGUtcHM4NjQwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zaWk5MjM0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWwtc2lp ODYyMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY3LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvdGMzNTg3NjguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc3NS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVkc2k4My5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS90aS10ZnA0MTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pMmMvY2g3MDA2X2Rydi5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk1MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pMmMvdGRhOTk4eF9kcnYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb2xpbWV4 LWxjZC1vbGludXhpbm8uY8KgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2dwdS9k cm0vcGFuZWwvcGFuZWwtcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4uY8KgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4LWkyYy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9oaWQvaTJjLWhp ZC9pMmMtaGlkLWNvcmUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaGlkL2kyYy1oaWQvaTJjLWhpZC5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyICstCj4g wqBkcml2ZXJzL2h3bW9uL2FkYzEyOGQ4MTguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2h3 bW9uL2FkdDc0NzAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvaHdtb24vYXNiMTAw LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNiArKy0tLS0KPiDCoGRyaXZlcnMvaHdtb24vYXNjNzYyMS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vZG1lMTczNy5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1ICsrLS0t Cj4gwqBkcml2ZXJzL2h3bW9uL2ZzY2htZC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4gwqBk cml2ZXJzL2h3bW9uL2Z0c3RldXRhdGVzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9od21vbi9p bmEyMDkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vaW5hMzIyMS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vamM0Mi5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9od21vbi9tY3AzMDIxLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9od21vbi9vY2MvcDhfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9od21vbi9wY2Y4NTkxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2h3bW9u L3NtbTY2NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2h3bW9uL3RwczIzODYx LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vdzgzNzgxZC5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaHdtb24vdzgzNzkxZC5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsr LS0tLQo+IMKgZHJpdmVycy9od21vbi93ODM3OTJkLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4g wqBkcml2ZXJzL2h3bW9uL3c4Mzc5My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4gwqBkcml2 ZXJzL2h3bW9uL3c4Mzc5NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9od21v bi93ODNsNzg1dHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKgZHJpdmVycy9pMmMvaTJjLWNvcmUt YmFzZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNiArLS0tLS0KPiDCoGRyaXZlcnMvaTJjL2kyYy1zbGF2ZS1lZXByb20uY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9pMmMvaTJjLXNsYXZlLXRlc3R1bml0LmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2ky Yy9pMmMtc21idXMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvaTJjL211eGVzL2ky Yy1tdXgtbHRjNDMwNi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaTJjL211eGVzL2kyYy1tdXgtcGNhOTU0MS5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVy cy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5NTR4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2lpby9hY2NlbC9ibWExODAuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9hY2NlbC9ibWE0MDBfaTJjLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvaWlvL2FjY2VsL2JtYzE1MC1hY2NlbC1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vYWNjZWwva3hj amstMTAxMy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9hY2NlbC9reHNkOS1pMmMuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL2lpby9hY2NlbC9tYzMyMzAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L2lpby9hY2NlbC9tbWE3NDU1X2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vYWNjZWwvbW1hNzY2 MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9hY2NlbC9tbWE4NDUyLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoGRyaXZlcnMvaWlvL2FjY2VsL21tYTk1NTEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9paW8vYWNjZWwvbW1hOTU1My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9hY2NlbC9z dGs4MzEyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2FjY2VsL3N0azhiYTUwLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL2lpby9hZGMvYWQ3OTl4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvaWlvL2FkYy9pbmEyeHgtYWRjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9h ZGMvbHRjMjQ5Ny5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vYWRjL3RpLWFkczEw MTUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2NoZW1pY2FsL2F0bGFzLXNlbnNvci5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvaWlvL2NoZW1pY2FsL2NjczgxMS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2NoZW1p Y2FsL3NncDMwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9kYWMvYWQ1MzgwLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2RhYy9hZDU0NDYuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy9paW8vZGFjL2FkNTU5M3IuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvaWlvL2RhYy9hZDU2OTYtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9kYWMvZHM0 NDI0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2RhYy9tNjIzMzIuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vZGFjL21jcDQ3MjUuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoGRyaXZlcnMvaWlvL2RhYy90aS1kYWM1NTcxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L2lpby9neXJvL2JtZzE2MF9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9neXJvL2Z4YXMy MTAwMmNfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2d5cm8vaXRnMzIwMF9jb3JlLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBk cml2ZXJzL2lpby9neXJvL21wdTMwNTAtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2hlYWx0 aC9hZmU0NDA0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAxMDAuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAxMDIuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL2lpby9odW1pZGl0eS9oZGMyMDEwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2ltdS9pbnZf bXB1NjA1MC9pbnZfbXB1X2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvaWlvL2ltdS9rbXg2MS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvaWlvL2xpZ2h0L2FwZHM5MzAwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9s aWdodC9hcGRzOTk2MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbGlnaHQvYmgxNzUwLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbGlnaHQvYmgxNzgwLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy9paW8vbGlnaHQvY20zMjMyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9paW8vbGlnaHQvY20zNjY1MS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9saWdodC9n cDJhcDAwMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbGlnaHQvZ3AyYXAwMjBhMDBmLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy9paW8vbGlnaHQvaXNsMjkwMjguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv aWlvL2xpZ2h0L2lzbDI5MTI1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9saWdodC9qc2Ex MjEyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2xpZ2h0L2x0cjUwMS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvaWlvL2xpZ2h0L29wdDMwMDEuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4gwqBk cml2ZXJzL2lpby9saWdodC9wYTEyMjAzMDAxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2xpZ2h0 L3JwcjA1MjEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbGlnaHQvc3RrMzMxMC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9saWdodC90Y3MzNDcyLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvaWlvL2xpZ2h0L3RzbDI1NjMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8v bGlnaHQvdHNsMjU4My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9saWdodC90c2w0NTMx LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL2xpZ2h0L3VzNTE4MmQuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy9paW8vbGlnaHQvdmNubDQwMDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv aWlvL2xpZ2h0L3Zjbmw0MDM1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9saWdodC92ZW1s NjA3MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2FrODk3NC5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBkcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL21hZ25l dG9tZXRlci9ibWMxNTBfbWFnbl9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2htYzU4NDNfaTJjLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9paW8v bWFnbmV0b21ldGVyL21hZzMxMTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL21hZ25ldG9tZXRlci95YW1haGEt eWFzNTMwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBk cml2ZXJzL2lpby9wb3RlbnRpb3N0YXQvbG1wOTEwMDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby9wcmVzc3VyZS9t cGwzMTE1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL3ByZXNzdXJlL21zNTYxMV9pMmMuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9paW8vcHJlc3N1cmUvenBhMjMyNl9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL3Byb3hpbWl0 eS9wdWxzZWRsaWdodC1saWRhci1saXRlLXYyLmPCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBkcml2ZXJzL2lpby9wcm94aW1pdHkvc3g5NTAwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaWlvL3Rl bXBlcmF0dXJlL21seDkwNjE0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lpby90ZW1wZXJhdHVyZS9tbHg5MDYzMi5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+ IMKgZHJpdmVycy9pbnB1dC9qb3lzdGljay9hczUwMTEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQv a2V5Ym9hcmQvYWRwNTU4OC1rZXlzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lucHV0L2tleWJvYXJkL2xtODMyMy5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+ IMKgZHJpdmVycy9pbnB1dC9rZXlib2FyZC9sbTgzMzMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQv a2V5Ym9hcmQvbWNzX3RvdWNoa2V5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lucHV0L2tleWJvYXJkL3F0MTA3MC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+ IMKgZHJpdmVycy9pbnB1dC9rZXlib2FyZC9xdDIxNjAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQv a2V5Ym9hcmQvdGNhNjQxNi1rZXlwYWQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9pbnB1dC9taXNjL2FkeGwzNHgtaTJjLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9pbnB1dC9taXNjL2JtYTE1MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2lucHV0 L21pc2MvY21hMzAwMF9kMHhfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQvbWlzYy9wY2Y4NTc0X2tleXBhZC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQvcm1pNC9y bWlfc21idXMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRf dHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvaW5wdXQvdG91Y2hzY3JlZW4vYnUyMTAxM190cy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vY3l0 dHNwNF9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+ IMKgZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9lZHQtZnQ1eDA2LmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9pbnB1dC90b3VjaHNj cmVlbi9nb29kaXguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vbWlnb3JfdHMuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9pbnB1dC90b3VjaHNjcmVlbi9zNnN5NzYxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9z dG1mdHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdHNjMjAwNC5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVk cy9mbGFzaC9sZWRzLWFzMzY0NWEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9sZWRzL2ZsYXNoL2xlZHMtbG0zNjAx eC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL2xlZHMvZmxhc2gvbGVkcy1ydDQ1MDUuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbGVk cy9sZWRzLWFuMzAyNTlhLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy1hdzIwMTMu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy1iZDI4MDIuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy1ibGlua20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZl cnMvbGVkcy9sZWRzLWlzMzFmbDMxOXguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy1pczMx ZmwzMnh4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxtMzUzMC5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICst LQo+IMKgZHJpdmVycy9sZWRzL2xlZHMtbG0zNTMyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9sZWRzL2xlZHMtbG0zNTV4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9sZWRzL2xlZHMt bG0zNjQyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy1sbTM2OTJ4LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxtMzY5Ny5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvbGVkcy9sZWRzLWxwMzk0NC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVk cy9sZWRzLWxwMzk1Mi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxwNTB4 eC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxwNTUyMS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxwNTUyMy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvbGVkcy9sZWRzLWxwNTU2Mi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9s ZWRzLWxwODUwMS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLWxwODg2MC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbGVkcy9sZWRzLXBjYTk1MzIuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKyst LS0tCj4gwqBkcml2ZXJzL2xlZHMvbGVkcy10Y2E2NTA3LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvbGVkcy9sZWRzLXR1cnJpcy1vbW5pYS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWFjaW50b3NoL2Ftcy9h bXMtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21hY2ludG9zaC90aGVybV9hZHQ3NDZ4LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tYWNpbnRvc2gvd2luZGZh cm1fYWQ3NDE3X3NlbnNvci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9mY3VfY29udHJvbHMuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWFjaW50b3NoL3dpbmRm YXJtX2xtNzVfc2Vuc29yLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9sbTg3X3NlbnNvci5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tYWNpbnRvc2gv d2luZGZhcm1fbWF4NjY5MF9zZW5zb3IuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvbWFjaW50b3NoL3dpbmRmYXJtX3NtdV9zYXQuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRp YS9jZWMvaTJjL2NoNzMyMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMv YTgyOTMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyAr LS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9hZjkwMTMuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL2FmOTAzMy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYXU4NTIyX2Rl Y29kZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVk aWEvZHZiLWZyb250ZW5kcy9jeGQyMDk5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjgy MHJfY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9tZWRpYS9kdmItZnJvbnRlbmRzL2R2Yi1wbGwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2xn ZHQzMzA2YS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbGdkdDMzMHguY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9u dGVuZHMvbTg4ZHMzMTAzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAz ICstLQo+IMKgZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL21uODg0NDN4LmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL21uODg0NzIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tbjg4NDczLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNjkyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5k cy9ydGwyODMwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMi5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL3NpMjE2NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zaTIxNjguY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3NwMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250 ZW5kcy9zdHYwOTB4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg MyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zdHY2MTEweC5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL3RjOTA1MjIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3RkYTEwMDcxLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJz L21lZGlhL2R2Yi1mcm9udGVuZHMvdHMyMDIwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvYWQ1ODIwLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9hZDkzODliLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKg ZHJpdmVycy9tZWRpYS9pMmMvYWRwMTY1My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlh L2kyYy9hZHY3MTcwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE3NS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2FkdjcxODAuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+ IMKgZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL2FkdjczNDMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvYWR2NzM5 My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9hZHY3NDh4L2Fkdjc0OHgtY29y ZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9tZWRpYS9pMmMvYWR2NzUxMS12NGwyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9hZHY3NjA0 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvYWR2Nzg0Mi5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0K PiDCoGRyaXZlcnMvbWVkaWEvaTJjL2FrNzM3NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv bWVkaWEvaTJjL2FrODgxeC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2J0 ODE5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2J0ODU2LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2J0ODY2LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDC oGRyaXZlcnMvbWVkaWEvaTJjL2Njcy9jY3MtY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJj L2NzMzMwOC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvY3M1MzQ1LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9jczUzbDMyYS5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBk cml2ZXJzL21lZGlhL2kyYy9jeDI1ODQwL2N4MjU4NDAtY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9kdzk3MTQuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9kdzk3NjguY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL21lZGlhL2kyYy9kdzk4MDctdmNtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL2V0OGVrOC9ldDhlazhfZHJpdmVyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9oaTU1Ni5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvaGk4NDYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvbWVkaWEvaTJjL2hpODQ3LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlh L2kyYy9pbXgyMDguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9pbXgyMTQu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9pbXgyMTkuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9pbXgyNTguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL21lZGlhL2kyYy9pbXgyNzQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJj L2lteDI5MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2lteDMxOS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2lteDMzNC5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoGRyaXZlcnMvbWVkaWEvaTJjL2lteDMzNS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv bWVkaWEvaTJjL2lteDM1NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2lt eDQxMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL2lyLWtiZC1pMmMuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvaXNsNzk5OHguY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvbWVkaWEvaTJjL2tzMDEyNy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMv bG0zNTYwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvbG0zNjQ2LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvbTUyNzkwLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4g wqBkcml2ZXJzL21lZGlhL2kyYy9tNW1vbHMvbTVtb2xzX2NvcmUuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9tYXgy MTc1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL21heDkyODYuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvbWw4NnY3NjY3LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9tZWRpYS9pMmMvbXNwMzQwMC1kcml2ZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTAwMS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9tdDltMDMyLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+ IMKgZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTExMS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21l ZGlhL2kyYy9tdDlwMDMxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL210OXQw MDEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9tdDl0MTEyLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL210OXYwMTEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9tZWRpYS9pMmMvbXQ5djAzMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9t dDl2MTExLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL25vb24wMTBwYzMwLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vZzAxYTFiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvbWVkaWEvaTJjL292MDJhMTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMv b3YwOGQxMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjEzODU4LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL292MTNiMTAuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9tZWRpYS9pMmMvb3YyNjQwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlh L2kyYy9vdjI2NTkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjI2ODAu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjI2ODUuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjI3NDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL21lZGlhL2kyYy9vdjU2NDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2ky Yy9vdjU2NDUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjU2NDcuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjU2NzAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L21lZGlhL2kyYy9vdjU2NzUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9v djU2OTMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjU2OTUuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjY2NTAuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDC oGRyaXZlcnMvbWVkaWEvaTJjL292NzI1MS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL292NzY0MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL292NzY3 MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzJ4LmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvb3Y3NzQwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2 ZXJzL21lZGlhL2kyYy9vdjg4NTYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2ky Yy9vdjg4NjUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjkyODIuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjk2NDAuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L21lZGlhL2kyYy9vdjk3MzQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9y ZGFjbTIwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3JkYWNtMjEuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvcmo1NG4xY2IwYy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvczVrNGVjZ3guY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3M1azViYWYuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9tZWRpYS9pMmMvczVrNmEzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlh L2kyYy9zNWs2YWEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9zYWE2NTg4 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3NhYTY3NTJocy5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+ IMKgZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL3NhYTcxMTUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9zYWE3MTI3 LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvc2FhNzE3eC5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0K PiDCoGRyaXZlcnMvbWVkaWEvaTJjL3NhYTcxODUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21l ZGlhL2kyYy9zb255LWJ0Zi1tcHguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy9zcjAzMHBjMzAu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3N0LW1pcGlkMDIuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9tZWRpYS9pMmMvdGMzNTg3NDMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJj L3RkYTE5OTd4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy90ZGE3NDMyLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvdGRhOTg0MC5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRy aXZlcnMvbWVkaWEvaTJjL3RlYTY0MTVjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJj L3RlYTY0MjAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy90aHM3MzAzLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3RoczgyMDAuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy9tZWRpYS9pMmMvdGx2MzIwYWljMjNiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy90 dmF1ZGlvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvdHZwNTE0eC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg MyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3R2cDUxNTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9tZWRpYS9pMmMvdHZwNzAwMi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJj L3R3MjgwNC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvdHc5OTAzLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy90dzk5MDYuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDC oGRyaXZlcnMvbWVkaWEvaTJjL3R3OTkxMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL3VkYTEzNDIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL2kyYy91cGQ2NDAz MWEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3VwZDY0MDgzLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDC oGRyaXZlcnMvbWVkaWEvaTJjL3ZpZGVvLWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEv aTJjL3ZwMjdzbXB4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvaTJjL3ZweDMyMjAuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS9pMmMvdnM2NjI0LmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4g wqBkcml2ZXJzL21lZGlhL2kyYy93bTg3MzkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVk aWEvaTJjL3dtODc3NS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS9yYWRpby9yYWRp by10ZWE1NzY0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlhL3JhZGlvL3NhYTc3MDZoLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVy cy9tZWRpYS9yYWRpby9zaTQ3MHgvcmFkaW8tc2k0NzB4LWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3NpNDcxMy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRy aXZlcnMvbWVkaWEvcmFkaW8vdGVmNjg2Mi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS90ZXN0 LWRyaXZlcnMvdmlkdHYvdmlkdHZfZGVtb2QuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoGRyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpZHR2L3ZpZHR2X3R1bmVyLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL3R1bmVycy9lNDAw MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4g wqBkcml2ZXJzL21lZGlhL3R1bmVycy9tODhyczYwMDB0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvdHVu ZXJzL210MjA2MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWVkaWEvdHVuZXJzL214bDMwMXJmLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyAr LS0KPiDCoGRyaXZlcnMvbWVkaWEvdHVuZXJzL3FtMWQxYjAwMDQuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21lZGlh L3R1bmVycy9xbTFkMWMwMDQyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS90dW5lcnMvc2kyMTU3LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhMTgyMTIuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv bWVkaWEvdHVuZXJzL3RkYTE4MjUwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21lZGlhL3R1bmVycy90dWE5 MDAxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAzICstLQo+IMKgZHJpdmVycy9tZWRpYS91c2IvZ283MDA3L3MyMjUwLWJvYXJkLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21l ZGlhL3Y0bDItY29yZS90dW5lci1jb3JlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZmQvODhwbTgwMC5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC84OHBtODA1LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvbWZkLzg4cG04NjB4LWNvcmUuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2 ZXJzL21mZC9hY2VyLWVjLWE1MDAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9hcml6 b25hLWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvYXhwMjB4LWkyYy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9kYTkwM3guY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgMyArLS0KPiDCoGRyaXZlcnMvbWZkL2RhOTA1Mi1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4g wqBkcml2ZXJzL21mZC9kYTkwNTUtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv bWZkL2RhOTA2Mi1jb3JlLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9kYTkxNTAt Y29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvZG0zNTVldm1fbXNwLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDMgKy0tCj4gwqBkcml2ZXJzL21mZC9lbmUta2IzOTMwLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoGRyaXZlcnMvbWZkL2dhdGV3b3Jrcy1nc2MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9t ZmQvaW50ZWxfc29jX3BtaWNfY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9pcXM2MnguY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9sbTM1MzMtY29yZS5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvbHA4Nzg4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0t Cj4gwqBkcml2ZXJzL21mZC9tYWRlcmEtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvbWZkL21heDE0NTc3LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9t YXg3NzY5My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvbWF4ODkwNy5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9tYXg4OTI1LWkyYy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21mZC9tYzEzeHh4LWkyYy5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0t Cj4gwqBkcml2ZXJzL21mZC9tZW5lbGF1cy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2 ZXJzL21mZC9udHhlYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9t ZmQvcGFsbWFzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvcGNm NTA2MzMtY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21mZC9yZXR1LW1mZC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvcms4MDguY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWZkL3JuNXQ2MTguY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy9tZmQvcnNtdV9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvbWZkL3J0NDgzMS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZl cnMvbWZkL3NpNDc2eC1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvc3Rt ZnguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWZkL3N0bXBlLWky Yy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbWZkL3RjMzU4OXguY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvdHBzNjEwNXguY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbWZkL3RwczY1MDEwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0K PiDCoGRyaXZlcnMvbWZkL3RwczY1MDg2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2 ZXJzL21mZC90cHM2NTIxNy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQv dHBzNjU4NnguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9tZmQvdHBzNjU5MTIt aTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tZmQvdHdsLWNvcmUuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAzICstLQo+IMKgZHJpdmVycy9tZmQvdHdsNjA0MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL21mZC93bTg5OTQtY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJp dmVycy9taXNjL2FkNTI1eF9kcG90LWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbWlzYy9hcGRzOTgw MmFscy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9taXNjL2FwZHM5OTB4LmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDMgKy0tCj4gwqBkcml2ZXJzL21pc2MvYmgxNzcwZ2xjLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoGRyaXZlcnMvbWlzYy9kczE2ODIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2 ZXJzL21pc2MvZWVwcm9tL2F0MjQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL21pc2MvZWVw cm9tL2VlMTAwNC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9taXNjL2VlcHJvbS9lZXByb20uY8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvbWlzYy9lZXByb20vaWR0Xzg5aHBlc3guY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9taXNjL2VlcHJvbS9tYXg2ODc1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9taXNjL2htYzYzNTIu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9taXNjL2ljczkzMnM0MDEuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA1ICsrLS0tCj4gwqBkcml2ZXJzL21pc2MvaXNsMjkwMDMuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyAr LS0KPiDCoGRyaXZlcnMvbWlzYy9pc2wyOTAyMC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJp dmVycy9taXNjL2xpczNsdjAyZC9saXMzbHYwMmRfaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL21pc2MvdHNsMjU1MC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9tdGQvbWFwcy9waXNtby5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL25ldC9kc2EvbGFuOTMwM19pMmMuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKy0tLS0KPiDCoGRy aXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJz NzAweF9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsr LS0tLQo+IMKgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvaTJjLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9uZXQvbWN0cC9t Y3RwLWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvbmZjL2ZkcC9pMmMuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9uZmMvbWljcm9yZWFkL2kyYy5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9uZmMvbnhwLW5jaS9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbmZjL3BuNTMz L2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbmZjL3BuNTQ0L2kyYy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvbmZjL3MzZndybjUvaTJjLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvb2Yv dW5pdHRlc3QuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4gwqBkcml2ZXJzL3BsYXRmb3Jt L2Nocm9tZS9jcm9zX2VjX2kyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL3N1cmZhY2UzX3Bvd2Vy LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9w bGF0Zm9ybS94ODYvYXN1cy10ZjEwM2MtZG9jay5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pbnQzNDcy L3RwczY4NDcwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv cG93ZXIvc3VwcGx5L2JxMjQxNXhfY2hhcmdlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjQxOTBfY2hh cmdlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDC oGRyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjQyNTdfY2hhcmdlci5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvcG93ZXIvc3VwcGx5L2Jx MjU4OTBfY2hhcmdlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjd4eHhfYmF0dGVyeV9pMmMuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9wb3dlci9zdXBw bHkvY3cyMDE1X2JhdHRlcnkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAzICstLQo+IMKgZHJpdmVycy9wb3dlci9zdXBwbHkvZHMyNzgyX2JhdHRlcnkuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMv cG93ZXIvc3VwcGx5L2xwODcyN19jaGFyZ2VyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvcG93ZXIvc3VwcGx5L3J0NTAzM19iYXR0 ZXJ5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBkcml2ZXJzL3Bvd2VyL3N1cHBseS9ydDk0NTVfY2hhcmdlci5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9wb3dlci9zdXBwbHkv c21iMzQ3LWNoYXJnZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCA0ICstLS0KPiDCoGRyaXZlcnMvcG93ZXIvc3VwcGx5L3oyX2JhdHRlcnkuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy9wd20vcHdtLXBjYTk2ODUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvcmVndWxhdG9y L2RhOTEyMS1yZWd1bGF0b3IuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL3JlZ3VsYXRvci9scDg3NTUuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0t Cj4gwqBkcml2ZXJzL3JlZ3VsYXRvci9ycGktcGFuZWwtYXR0aW55LXJlZ3VsYXRvci5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ydGMvcnRjLWJxMzJrLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ydGMvcnRjLWRzMTM3NC5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBkcml2ZXJzL3J0Yy9ydGMtaXNsMTIwMjYuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRy aXZlcnMvcnRjL3J0Yy1tNDF0ODAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9ydGMv cnRjLXJzNWMzNzIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9ydGMvcnRjLXgxMjA1LmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMv YXRvbWlzcC1nYzAzMTAuY8KgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3N0YWdp bmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1nYzIyMzUuY8KgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1sbTM1NTQu Y8KgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlz cC9pMmMvYXRvbWlzcC1tdDltMTE0LmPCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy9z dGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3Atb3YyNjgwLmPCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3Atb3Yy NzIyLmPCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0 b21pc3AvaTJjL292NTY5My9hdG9taXNwLW92NTY5My5jIHwgNCArLS0tCj4gwqBkcml2ZXJzL3N0 YWdpbmcvbWVkaWEvbWF4OTY3MTIvbWF4OTY3MTIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3N0YWdpbmcvbW9zdC9pMmMvaTJjLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoGRyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3R0eS9zZXJpYWwv c2MxNmlzN3h4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0 ICstLS0KPiDCoGRyaXZlcnMvdXNiL3BoeS9waHktaXNwMTMwMS1vbWFwLmPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3Vz Yi9waHkvcGh5LWlzcDEzMDEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy9oZDNzczMy MjAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy9tdXgvZnNhNDQ4MC5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKg ZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy9ydDE3 MTkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy9zdHVzYjE2MHguY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCAr LS0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy90Y3BtL2Z1c2IzMDIuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3Vz Yi90eXBlYy90Y3BtL3RjcGNpLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNw Y2lfbWF4aW0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BjaV9ydDE3MTFoLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL3VzYi90eXBl Yy90aXBkL2NvcmUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3VzYi90eXBlYy91Y3NpL3Vjc2lfY2Nn LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoGRyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJz L3ZpZGVvL2JhY2tsaWdodC9hZHA4ODYwX2JsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2FkcDg4 NzBfYmwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0t LQo+IMKgZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYXJjeGNubl9ibC5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9iZDYxMDcuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbTM2MzBhX2Js LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKg ZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG0zNjM5X2JsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdo dC9scDg1NXhfYmwuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNCArLS0tCj4gwqBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sdjUyMDdscC5jwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgZHJpdmVy cy92aWRlby9iYWNrbGlnaHQvdG9zYV9ibC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoGRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94 L21hdHJveGZiX21hdmVuLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDC oGRyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBkcml2ZXJzL3cxL21hc3Rl cnMvZHMyNDgyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBpbmNsdWRlL2xpbnV4L2kyYy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDIgKy0K PiDCoGxpYi9LY29uZmlnLmthc2FuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxICsKPiDCoHNv dW5kL2FvYS9jb2RlY3Mvb255eC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgc291bmQvYW9hL2Nv ZGVjcy90YXMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgc291bmQvcGNpL2hkYS9jczM1bDQx X2hkYV9pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3BwYy9rZXl3ZXN0LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNiArKy0tLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvYWRhdTE3NjEtaTJjLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoHNv dW5kL3NvYy9jb2RlY3MvYWRhdTE3ODEtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvYWs0 Mzc1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL2FrNDQ1OC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9hazQ2NDEuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoHNvdW5kL3NvYy9jb2RlY3MvYWs1NTU4LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9z b2MvY29kZWNzL2NzMzVsMzIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL2Nz MzVsMzMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL2NzMzVsMzQuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL2NzMzVsMzUuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4g wqBzb3VuZC9zb2MvY29kZWNzL2NzMzVsMzYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2Mv Y29kZWNzL2NzMzVsNDEtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvY3MzNWw0NS1p MmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9jczQyMzQuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoHNvdW5kL3NvYy9jb2RlY3MvY3M0MjY1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9z b2MvY29kZWNzL2NzNDI3MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9j czQybDQyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9jczQybDUxLWkyYy5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg NCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL2NzNDJsNTYuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoHNv dW5kL3NvYy9jb2RlY3MvY3M0Mnh4OC1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9j czQzMTMwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9jczQzNDkuY8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvY3M1M2wzMC5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoHNvdW5kL3NvYy9jb2RlY3MvY3gyMDcyeC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgc291bmQvc29j L2NvZGVjcy9tYXg5ODA5MC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL21heDk4 NjAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgMyArLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvbWF4OTg5MjcuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9tdDY2NjAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgc291 bmQvc29jL2NvZGVjcy9uYXU4ODIxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVj cy9uYXU4ODI1LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDYgKystLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3BjbTE3ODkt aTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvcGNtMzE2OGEtaTJjLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBz b3VuZC9zb2MvY29kZWNzL3BjbTUxMngtaTJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzICstLQo+IMKgc291bmQvc29jL2NvZGVjcy9y dDI3NC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3J0Mjg2LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvcnQyOTguY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9ydDU2MTYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKg c291bmQvc29jL2NvZGVjcy9ydDU2MzEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKgc291bmQvc29j L2NvZGVjcy9ydDU2NDUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvcnQ1 NjYzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3J0NTY3MC5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9ydDU2NzcuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0K PiDCoHNvdW5kL3NvYy9jb2RlY3MvcnQ1NjgyLWkyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9j b2RlY3MvcnQ1Njgycy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvcnQ5MTIw LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgMyArLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3Mvc2d0bDUwMDAuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQg Ky0tLQo+IMKgc291bmQvc29jL2NvZGVjcy9zdGEzNTAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrLS0tLQo+IMKg c291bmQvc29jL2NvZGVjcy90YXMyNTUyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBzb3VuZC9zb2MvY29k ZWNzL3RhczUwODYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKy0tLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvdGFzNTcx eC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvdGFzNTgwNW0uY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMg Ky0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3RhczY0MjQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3Vu ZC9zb2MvY29kZWNzL3RsdjMyMGFkYzN4eHguY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3MvdGx2MzIw YWljMzJ4NC1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC1pMmMuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3Nv Yy9jb2RlY3MvdGx2MzIwZGFjMzMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy93bTEyNTAt ZXYxLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVjcy93bTIyMDAuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0ICst LS0KPiDCoHNvdW5kL3NvYy9jb2RlY3Mvd201MTAwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNCArLS0tCj4gwqBzb3Vu ZC9zb2MvY29kZWNzL3dtODgwNC1pMmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3Mvd204 OTAwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNiArKy0tLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3Mvd204OTAzLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNCArLS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3dtODk2MC5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKyst LS0tCj4gwqBzb3VuZC9zb2MvY29kZWNzL3dtODk2Mi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDMgKy0tCj4gwqBzb3Vu ZC9zb2MvY29kZWNzL3dtODk5My5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKy0tLQo+IMKgc291bmQvc29jL2NvZGVj cy93bTg5OTYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICstLS0KPiDCoHNvdW5kL3NvYy9jb2RlY3Mvd205MDgxLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNiArKy0tLS0KPiDCoDYyMSBmaWxlcyBjaGFuZ2VkLCA2NDggaW5zZXJ0aW9ucygr KSwgMTczNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMv d3JpdGluZy1jbGllbnRzLnJzdAo+IGIvRG9jdW1lbnRhdGlvbi9pMmMvd3JpdGluZy1jbGllbnRz LnJzdAo+IGluZGV4IGUzYjEyNmNmNGEzYi4uYzFiNDY4NDRiMGZiIDEwMDY0NAo+IC0tLSBhL0Rv Y3VtZW50YXRpb24vaTJjL3dyaXRpbmctY2xpZW50cy5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9u L2kyYy93cml0aW5nLWNsaWVudHMucnN0Cj4gQEAgLTE1Niw3ICsxNTYsNyBAQCB0aG9zZSBkZXZp Y2VzLCBhbmQgYSByZW1vdmUoKSBtZXRob2QgdG8gdW5iaW5kLgo+IMKgOjoKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBzdGF0aWMgaW50IGZvb19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KTsKPiAtwqDCoMKgwqDCoMKgwqBzdGF0aWMgaW50IGZvb19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCk7Cj4gK8KgwqDCoMKgwqDCoMKgc3RhdGljIHZvaWQgZm9vX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKPiDCoAo+IMKgUmVtZW1iZXIgdGhhdCB0aGUgaTJjX2Ry aXZlciBkb2VzIG5vdCBjcmVhdGUgdGhvc2UgY2xpZW50IGhhbmRsZXMuwqAKPiBUaGUKPiDCoGhh bmRsZSBtYXkgYmUgdXNlZCBkdXJpbmcgZm9vX3Byb2JlKCkuwqAgSWYgZm9vX3Byb2JlKCkgcmVw b3J0cwo+IHN1Y2Nlc3MKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2JvYXJk LWRtNjQ0eC1ldm0uYwo+IGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2JvYXJkLWRtNjQ0eC1ldm0u Ywo+IGluZGV4IDlmNDA1YWYzNmE2Zi4uOTA1NWRhMzI1YTNmIDEwMDY0NAo+IC0tLSBhL2FyY2gv YXJtL21hY2gtZGF2aW5jaS9ib2FyZC1kbTY0NHgtZXZtLmMKPiArKysgYi9hcmNoL2FybS9tYWNo LWRhdmluY2kvYm9hcmQtZG02NDR4LWV2bS5jCj4gQEAgLTU1NCwxMCArNTU0LDkgQEAgc3RhdGlj IGludCBkbTY0NDZldm1fbXNwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkbTY0NDZl dm1fbXNwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBk bTY0NDZldm1fbXNwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBkbTY0NDZldm1fbXNwID0gTlVMTDsKPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGRt NjQ0NmV2bV9tc3BfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZGF2aW5j aS9ib2FyZC1kbTY0NngtZXZtLmMKPiBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1kbTY0 NngtZXZtLmMKPiBpbmRleCA4NGFkMDY1ZTk4YzIuLjI4N2JiNTgzM2VjMCAxMDA2NDQKPiAtLS0g YS9hcmNoL2FybS9tYWNoLWRhdmluY2kvYm9hcmQtZG02NDZ4LWV2bS5jCj4gKysrIGIvYXJjaC9h cm0vbWFjaC1kYXZpbmNpL2JvYXJkLWRtNjQ2eC1ldm0uYwo+IEBAIC00MDMsMTAgKzQwMyw5IEBA IHN0YXRpYyBpbnQgY3BsZF92aWRlb19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3Bs ZF92aWRlb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg Y3BsZF92aWRlb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgY3BsZF9jbGllbnQgPSBOVUxMOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgY3BsZF92 aWRlb19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgv bWN1X21wYzgzNDllbWl0eC5jCj4gYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvbWN1X21w YzgzNDllbWl0eC5jCj4gaW5kZXggYWJiNjJmYTYzMGVmLi43N2VkNjEzMDZhNzMgMTAwNjQ0Cj4g LS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L21jdV9tcGM4MzQ5ZW1pdHguYwo+ICsr KyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9tY3VfbXBjODM0OWVtaXR4LmMKPiBAQCAt MTc4LDcgKzE3OCw3IEBAIHN0YXRpYyBpbnQgbWN1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBtY3VfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IG1jdV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IG1jdSAqbWN1ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAK PiBAQCAtMTkzLDcgKzE5Myw2IEBAIHN0YXRpYyBpbnQgbWN1X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1jdV9ncGlvY2hpcF9yZW1vdmUo bWN1KTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUobWN1KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1j dV9pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYwo+ IGIvZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYwo+IGluZGV4IDRmYWIzYjJjNzAyMy4uMDI0 MjU5OTFjMTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmMKPiAr KysgYi9kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jCj4gQEAgLTc3NSw3ICs3NzUsNyBAQCBz dGF0aWMgaW50IGh0MTZrMzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaHQxNmsz M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaHQxNmsz M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGh0MTZrMzNfcHJpdiAqcHJpdiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaHQxNmszM19mYmRldiAqZmJkZXYgPSAmcHJpdi0+ ZmJkZXY7Cj4gQEAgLTc5Niw4ICs3OTYsNiBAQCBzdGF0aWMgaW50IGh0MTZrMzNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRldmljZV9yZW1vdmVfZmlsZSgmY2xpZW50LT5kZXYsCj4gJmRldl9hdHRyX21hcF9zZWcx NCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGh0MTZrMzNfaTJjX21hdGNoW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXV4ZGlzcGxheS9sY2Qycy5jIGIvZHJpdmVycy9hdXhkaXNw bGF5L2xjZDJzLmMKPiBpbmRleCBlNDY1MTA4ZDk5OTguLjEzNTgzMWExNjUxNCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2F1eGRpc3BsYXkvbGNkMnMuYwo+ICsrKyBiL2RyaXZlcnMvYXV4ZGlzcGxh eS9sY2Qycy5jCj4gQEAgLTM0MCwxMyArMzQwLDEyIEBAIHN0YXRpYyBpbnQgbGNkMnNfaTJjX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVy cjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxjZDJzX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgbGNkMnNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGNkMnNfZGF0YSAqbGNk MnMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBjaGFy bGNkX3VucmVnaXN0ZXIobGNkMnMtPmNoYXJsY2QpOwo+IMKgwqDCoMKgwqDCoMKgwqBjaGFybGNk X2ZyZWUobGNkMnMtPmNoYXJsY2QpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbGNkMnNfaTJjX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWJfZGV2X2ludC5jCj4gYi9k cml2ZXJzL2NoYXIvaXBtaS9pcG1iX2Rldl9pbnQuYwo+IGluZGV4IGRiNDAwMzdlYjM0Ny4uYTBl OWU4MGQ5MmVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWJfZGV2X2ludC5j Cj4gKysrIGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtYl9kZXZfaW50LmMKPiBAQCAtMzQxLDE0ICsz NDEsMTIgQEAgc3RhdGljIGludCBpcG1iX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBp cG1iX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpcG1i X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaXBtYl9kZXYgKmlwbWJfZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3NsYXZlX3VucmVnaXN0ZXIoY2xpZW50KTsKPiDC oMKgwqDCoMKgwqDCoMKgbWlzY19kZXJlZ2lzdGVyKCZpcG1iX2Rldi0+bWlzY2Rldik7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgaXBtYl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2No YXIvaXBtaS9pcG1pX2lwbWIuYwo+IGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9pcG1iLmMKPiBp bmRleCBhYjE5YjRiMzMxN2UuLjI1YzAxMGM5ZWMyNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2No YXIvaXBtaS9pcG1pX2lwbWIuYwo+ICsrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfaXBtYi5j Cj4gQEAgLTQyNCw3ICs0MjQsNyBAQCBzdGF0aWMgdm9pZCBpcG1pX2lwbWJfcmVxdWVzdF9ldmVu dHModm9pZAo+ICpzZW5kX2luZm8pCj4gwqDCoMKgwqDCoMKgwqDCoC8qIFdlIGRvbid0IGZldGNo IGV2ZW50cyBoZXJlLiAqLwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaXBtaV9pcG1iX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpcG1pX2lwbWJfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBpcG1pX2lwbWJfZGV2ICppaWRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gQEAgLTQzOCw4ICs0MzgsNiBAQCBzdGF0aWMgaW50IGlwbWlfaXBtYl9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBpcG1pX2lwbWJfc3Rv cF90aHJlYWQoaWlkZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlwbWlfdW5yZWdpc3Rlcl9z bWkoaWlkZXYtPmludGYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGludCBpcG1pX2lwbWJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zc2lmLmMKPiBiL2RyaXZl cnMvY2hhci9pcG1pL2lwbWlfc3NpZi5jCj4gaW5kZXggZmM3NDJlZTljMDQ2Li4xM2RhMDIxZTdj NmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zc2lmLmMKPiArKysgYi9k cml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NzaWYuYwo+IEBAIC0xMjgxLDEzICsxMjgxLDEzIEBAIHN0 YXRpYyB2b2lkIHNodXRkb3duX3NzaWYodm9pZCAqc2VuZF9pbmZvKQo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzc2lmX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzc2lmX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3NpZl9pbmZvICpzc2lmX2lu Zm8gPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHNzaWZfYWRkcl9pbmZvICphZGRyX2luZm87Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFz c2lmX2luZm8pCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgLyoKPiDCoMKgwqDCoMKgwqDCoMKgICogQWZ0ZXIgdGhpcyBwb2ludCwgd2Ugd29uJ3QgZGVs aXZlciBhbnl0aGluZyBhc3ljaHJvbm91c2x5Cj4gQEAgLTEzMDMsOCArMTMwMyw2IEBAIHN0YXRp YyBpbnQgc3NpZl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoc3NpZl9pbmZvKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgcmVhZF9y ZXNwb25zZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1bnNpZ25lZCBjaGFyCj4gKnJlc3Ap Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci90cG0vc3QzM3pwMjQvaTJjLmMKPiBiL2RyaXZl cnMvY2hhci90cG0vc3QzM3pwMjQvaTJjLmMKPiBpbmRleCAzMTcwZDU5ZDY2MGMuLmEzYWE0MTEz ODllNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvdHBtL3N0MzN6cDI0L2kyYy5jCj4gKysr IGIvZHJpdmVycy9jaGFyL3RwbS9zdDMzenAyNC9pMmMuYwo+IEBAIC0yNjQsMTMgKzI2NCwxMSBA QCBzdGF0aWMgaW50IHN0MzN6cDI0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqAgKiBAcGFyYW06IGNsaWVudCwgdGhlIGkyY19jbGllbnQgZGVzY3JpcHRpb24gKFRQ TSBJMkMgZGVzY3JpcHRpb24pLgo+IMKgICogQHJldHVybjogMCBpbiBjYXNlIG9mIHN1Y2Nlc3Mu Cj4gwqAgKi8KPiAtc3RhdGljIGludCBzdDMzenAyNF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0MzN6cDI0X2kyY19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRwbV9jaGlw ICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgc3QzM3pwMjRfcmVtb3ZlKGNoaXApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0MzN6cDI0 X2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfYXRt ZWwuYwo+IGIvZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX2F0bWVsLmMKPiBpbmRleCBkNWFjODU1 NTgyMTQuLjRiZTM2NzdjMTQ2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV9p MmNfYXRtZWwuYwo+ICsrKyBiL2RyaXZlcnMvY2hhci90cG0vdHBtX2kyY19hdG1lbC5jCj4gQEAg LTE3OSwxMiArMTc5LDExIEBAIHN0YXRpYyBpbnQgaTJjX2F0bWVsX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHRwbV9jaGlwX3JlZ2lz dGVyKGNoaXApOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaTJjX2F0bWVsX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpMmNfYXRtZWxfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBk ZXZpY2UgKmRldiA9ICYoY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHBt X2NoaXAgKmNoaXAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdHBt X2NoaXBfdW5yZWdpc3RlcihjaGlwKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGkyY19hdG1lbF9pZFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfaW5maW5lb24uYwo+ IGIvZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX2luZmluZW9uLmMKPiBpbmRleCBhMTlkMzJjYjRl OTQuLmZkM2MzNjYxZTY0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNf aW5maW5lb24uYwo+ICsrKyBiL2RyaXZlcnMvY2hhci90cG0vdHBtX2kyY19pbmZpbmVvbi5jCj4g QEAgLTcwNiwxNSArNzA2LDEzIEBAIHN0YXRpYyBpbnQgdHBtX3Rpc19pMmNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCB0cG1fdGlzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHBtX3Rpc19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0cG1fY2hpcCAqY2hp cCA9IHRwbV9kZXYuY2hpcDsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB0cG1fY2hpcF91bnJlZ2lz dGVyKGNoaXApOwo+IMKgwqDCoMKgwqDCoMKgwqByZWxlYXNlX2xvY2FsaXR5KGNoaXAsIHRwbV9k ZXYubG9jYWxpdHksIDEpOwo+IMKgwqDCoMKgwqDCoMKgwqB0cG1fZGV2LmNsaWVudCA9IE5VTEw7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3Ry dWN0IGkyY19kcml2ZXIgdHBtX3Rpc19pMmNfZHJpdmVyID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jCj4gYi9kcml2ZXJzL2NoYXIvdHBtL3RwbV9p MmNfbnV2b3Rvbi5jCj4gaW5kZXggYjc3YzE4ZTM4NjYyLi45NWMzNzM1MGNjOGUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX251dm90b24uYwo+ICsrKyBiL2RyaXZlcnMv Y2hhci90cG0vdHBtX2kyY19udXZvdG9uLmMKPiBAQCAtNjIyLDEyICs2MjIsMTEgQEAgc3RhdGlj IGludCBpMmNfbnV2b3Rvbl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiB0cG1fY2hpcF9yZWdpc3RlcihjaGlwKTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGkyY19udXZvdG9uX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBpMmNfbnV2b3Rvbl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRwbV9jaGlwICpjaGlwID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdHBtX2NoaXBf dW5yZWdpc3RlcihjaGlwKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGkyY19udXZvdG9uX2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19pMmNfY3I1MC5jCj4gYi9k cml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfaTJjX2NyNTAuYwo+IGluZGV4IDk3NDQ3OWExZWM1YS4u NzdjZWE1YjMxYzZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19pMmNf Y3I1MC5jCj4gKysrIGIvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX2kyY19jcjUwLmMKPiBAQCAt NzYzLDIwICs3NjMsMTggQEAgc3RhdGljIGludCB0cG1fY3I1MF9pMmNfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgICogLSAwOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgU3VjY2Vzcy4KPiDCoCAqIC0gLWVycm5vOsKgwqDCoEEgUE9TSVggZXJyb3IgY29kZS4K PiDCoCAqLwo+IC1zdGF0aWMgaW50IHRwbV9jcjUwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHBtX2NyNTBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHBtX2NoaXAg KmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlm ICghY2hpcCkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2NyaXQoZGV2 LCAiQ291bGQgbm90IGdldCBjbGllbnQgZGF0YSBhdCByZW1vdmUsCj4gbWVtb3J5IGNvcnJ1cHRp b24gYWhlYWRcbiIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdHBtX2NoaXBfdW5yZWdpc3RlcihjaGlwKTsKPiDC oMKgwqDCoMKgwqDCoMKgdHBtX2NyNTBfcmVsZWFzZV9sb2NhbGl0eShjaGlwLCB0cnVlKTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBTSU1QTEVf REVWX1BNX09QUyhjcjUwX2kyY19wbSwgdHBtX3BtX3N1c3BlbmQsCj4gdHBtX3BtX3Jlc3VtZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL2Nsay1jZGNlNzA2LmMgYi9kcml2ZXJzL2Nsay9j bGstY2RjZTcwNi5jCj4gaW5kZXggNTQ2N2Q5NDFkZGZkLi4xNDQ5ZDA1Mzc2NzQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9jbGsvY2xrLWNkY2U3MDYuYwo+ICsrKyBiL2RyaXZlcnMvY2xrL2Nsay1j ZGNlNzA2LmMKPiBAQCAtNjY1LDEwICs2NjUsOSBAQCBzdGF0aWMgaW50IGNkY2U3MDZfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNkY2UpOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY2RjZTcwNl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgY2RjZTcwNl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgb2ZfY2xrX2RlbF9wcm92aWRlcihjbGll bnQtPmRldi5vZl9ub2RlKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL2Nsay1jczIwMDAtY3AuYyBiL2RyaXZlcnMv Y2xrL2Nsay1jczIwMDAtCj4gY3AuYwo+IGluZGV4IGFhNWM3MmJhYjgzZS4uMzIwZDM5OTIyMjA2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY2xrL2Nsay1jczIwMDAtY3AuYwo+ICsrKyBiL2RyaXZl cnMvY2xrL2Nsay1jczIwMDAtY3AuYwo+IEBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGludCBj czIwMDBfdmVyc2lvbl9wcmludChzdHJ1Y3QKPiBjczIwMDBfcHJpdiAqcHJpdikKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczIwMDBfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzMjAwMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGNzMjAwMF9wcml2ICpwcml2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBkZXZpY2UgKmRldiA9IHByaXZfdG9fZGV2KHByaXYpOwo+IEBAIC01 NjYsOCArNTY2LDYgQEAgc3RhdGljIGludCBjczIwMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgb2ZfY2xrX2RlbF9wcm92aWRlcihucCk7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgY2xrX2h3X3VucmVnaXN0ZXIoJnByaXYtPmh3KTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgY3MyMDAw X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Y2xrL2Nsay1zaTUxNC5jIGIvZHJpdmVycy9jbGsvY2xrLXNpNTE0LmMKPiBpbmRleCA0NDgxYzQz MDM1MzQuLmMwMjhmYTEwM2JlZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Nsay9jbGstc2k1MTQu Ywo+ICsrKyBiL2RyaXZlcnMvY2xrL2Nsay1zaTUxNC5jCj4gQEAgLTM3MCwxMCArMzcwLDkgQEAg c3RhdGljIGludCBzaTUxNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc2k1MTRfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNpNTE0X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBvZl9j bGtfZGVsX3Byb3ZpZGVyKGNsaWVudC0+ZGV2Lm9mX25vZGUpOwo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQg c2k1MTRfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvY2xrLXNpNTM0MS5jIGIv ZHJpdmVycy9jbGsvY2xrLXNpNTM0MS5jCj4gaW5kZXggNGJjYTczMjEyNjYyLi4wZTUyOGQ3YmE2 NTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jbGsvY2xrLXNpNTM0MS5jCj4gKysrIGIvZHJpdmVy cy9jbGsvY2xrLXNpNTM0MS5jCj4gQEAgLTE3OTYsNyArMTc5Niw3IEBAIHN0YXRpYyBpbnQgc2k1 MzQxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNpNTM0MV9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgc2k1MzQxX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3Np NTM0MSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKg wqBpbnQgaTsKPiBAQCAtMTgwNyw4ICsxODA3LDYgQEAgc3RhdGljIGludCBzaTUzNDFfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChkYXRhLT5jbGtbaV0udmRkb19yZWcpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+Y2xrW2ld LnZkZG9fcmVnKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNp NTM0MV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9jbGstc2k1MzUxLmMgYi9k cml2ZXJzL2Nsay9jbGstc2k1MzUxLmMKPiBpbmRleCBiOWYwODhjNGJhMmYuLjllOTM5Yzk4YTQ1 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Nsay9jbGstc2k1MzUxLmMKPiArKysgYi9kcml2ZXJz L2Nsay9jbGstc2k1MzUxLmMKPiBAQCAtMTY1MSwxMSArMTY1MSw5IEBAIHN0YXRpYyBpbnQgc2k1 MzUxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc2k1MzUxX2kyY19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgc2k1MzUxX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgb2Zf Y2xrX2RlbF9wcm92aWRlcihjbGllbnQtPmRldi5vZl9ub2RlKTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzaTUz NTFfZHJpdmVyID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9jbGstc2k1NzAuYyBiL2Ry aXZlcnMvY2xrL2Nsay1zaTU3MC5jCj4gaW5kZXggMWZmOGYzMmY3MzRkLi4wYTZkNzBjNDk3MjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMKPiArKysgYi9kcml2ZXJzL2Ns ay9jbGstc2k1NzAuYwo+IEBAIC00OTgsMTAgKzQ5OCw5IEBAIHN0YXRpYyBpbnQgc2k1NzBfcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNpNTcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzaTU3MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgb2ZfY2xrX2RlbF9wcm92aWRlcihjbGll bnQtPmRldi5vZl9ub2RlKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2xrX3NpNTcwX29mX21hdGNoW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jIGIvZHJpdmVy cy9jbGsvY2xrLQo+IHZlcnNhY2xvY2s1LmMKPiBpbmRleCBlN2JlM2U1NGI5YmUuLjY1NzQ5M2Vj Y2U0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYwo+ICsrKyBi L2RyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jCj4gQEAgLTExMzgsNyArMTEzOCw3IEBAIHN0 YXRpYyBpbnQgdmM1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB2YzVfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHZjNV9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHZjNV9k cml2ZXJfZGF0YSAqdmM1ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAt MTE0Niw4ICsxMTQ2LDYgQEAgc3RhdGljIGludCB2YzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAodmM1LT5jaGlwX2luZm8tPmZs YWdzICYgVkM1X0hBU19JTlRFUk5BTF9YVEFMKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2xrX3VucmVnaXN0ZXJfZml4ZWRfcmF0ZSh2YzUtPnBpbl94aW4pOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3Vu dXNlZCB2YzVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvY3J5cHRvL2F0bWVsLWVjYy5jIGIvZHJpdmVycy9jcnlwdG8vYXRtZWwtZWNjLmMKPiBpbmRl eCBhNGIxM2QzMjZjZmMuLjgyYmYxNWQ0OTU2MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NyeXB0 by9hdG1lbC1lY2MuYwo+ICsrKyBiL2RyaXZlcnMvY3J5cHRvL2F0bWVsLWVjYy5jCj4gQEAgLTM0 Myw3ICszNDMsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2VjY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBhdG1lbF9lY2NfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGF0bWVsX2VjY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGF0bWVsX2kyY19jbGllbnRfcHJpdiAqaTJj X3ByaXYgPQo+IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTM1OCw3ICsz NTgsNyBAQCBzdGF0aWMgaW50IGF0bWVsX2VjY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYWNjZXNzaW5nIHRo ZSBmcmVlZCBtZW1vcnkuCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lbWVyZygmY2xpZW50LT5kZXYsICJE ZXZpY2UgaXMgYnVzeSwgZXhwZWN0Cj4gbWVtb3J5IGNvcnJ1cHRpb24uXG4iKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybjsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoGNyeXB0b191bnJlZ2lzdGVyX2twcCgmYXRtZWxfZWNkaF9uaXN0X3AyNTYpOwo+IEBAIC0z NjYsOCArMzY2LDYgQEAgc3RhdGljIGludCBhdG1lbF9lY2NfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgc3Bpbl9sb2NrKCZkcml2ZXJfZGF0YS5p MmNfbGlzdF9sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgbGlzdF9kZWwoJmkyY19wcml2LT5pMmNf Y2xpZW50X2xpc3Rfbm9kZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHNwaW5fdW5sb2NrKCZkcml2ZXJf ZGF0YS5pMmNfbGlzdF9sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfT0YKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8v YXRtZWwtc2hhMjA0YS5jIGIvZHJpdmVycy9jcnlwdG8vYXRtZWwtCj4gc2hhMjA0YS5jCj4gaW5k ZXggZTQwODdiZGQyNDc1Li5hODRiNjU3NTk4YzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jcnlw dG8vYXRtZWwtc2hhMjA0YS5jCj4gKysrIGIvZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5j Cj4gQEAgLTExNiwxOCArMTE2LDE2IEBAIHN0YXRpYyBpbnQgYXRtZWxfc2hhMjA0YV9wcm9iZShz dHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhdG1lbF9zaGEyMDRhX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhdG1lbF9zaGEyMDRhX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXRt ZWxfaTJjX2NsaWVudF9wcml2ICppMmNfcHJpdiA9Cj4gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVu dCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGF0b21pY19yZWFkKCZpMmNfcHJpdi0+dGZt X2NvdW50KSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VtZXJnKCZj bGllbnQtPmRldiwgIkRldmljZSBpcyBidXN5LCB3aWxsIHJlbW92ZQo+IGl0IGFueWhvd1xuIik7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqBrZnJlZSgodm9pZCAqKWkyY19wcml2LT5od3JuZy5wcml2KTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGF0bWVsX3NoYTIwNGFfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZXh0Y29uL2V4dGNvbi1ydDg5NzNhLmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24t Cj4gcnQ4OTczYS5jCj4gaW5kZXggNDBjMDdmNGQ2NTZlLi5kMWM2NzRmM2YyYjkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9leHRjb24vZXh0Y29uLXJ0ODk3M2EuYwo+ICsrKyBiL2RyaXZlcnMvZXh0 Y29uL2V4dGNvbi1ydDg5NzNhLmMKPiBAQCAtNjQ3LDEzICs2NDcsMTEgQEAgc3RhdGljIGludCBy dDg5NzNhX211aWNfaTJjX3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKmkyYywKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBydDg5NzNhX211aWNf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBydDg5NzNh X211aWNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgcnQ4OTczYV9tdWljX2luZm8gKmluZm8gPSBpMmNfZ2V0X2NsaWVudGRh dGEoaTJjKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWdtYXBfZGVsX2lycV9jaGlwKGluZm8t PmlycSwgaW5mby0+aXJxX2RhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnQ4OTczYV9kdF9t YXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bpby1hZHA1NTg4LmMgYi9k cml2ZXJzL2dwaW8vZ3Bpby0KPiBhZHA1NTg4LmMKPiBpbmRleCBlMzg4ZTc1MTAzZjQuLmFjYjY3 M2RjOTAwNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwaW8vZ3Bpby1hZHA1NTg4LmMKPiArKysg Yi9kcml2ZXJzL2dwaW8vZ3Bpby1hZHA1NTg4LmMKPiBAQCAtNDExLDE0ICs0MTEsMTIgQEAgc3Rh dGljIGludCBhZHA1NTg4X2dwaW9fcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkcDU1 ODhfZ3Bpb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg YWRwNTU4OF9ncGlvX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWRwNTU4OF9ncGlvICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZGV2LT5jbGllbnQtPmlycSkK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGRldi0+Y2xpZW50LT5p cnEsIGRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWRwNTU4OF9ncGlvX2lkW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3Bpby9ncGlvLW1heDczMDAuYyBiL2RyaXZlcnMvZ3Bpby9n cGlvLQo+IG1heDczMDAuYwo+IGluZGV4IGIyYjU0N2RkNmU4NC4uNDNkYTM4MWE0ZDdlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3Bpby9ncGlvLW1heDczMDAuYwo+ICsrKyBiL2RyaXZlcnMvZ3Bp by9ncGlvLW1heDczMDAuYwo+IEBAIC00OCwxMSArNDgsOSBAQCBzdGF0aWMgaW50IG1heDczMDBf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gX19tYXg3MzB4X3Byb2JlKHRzKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1heDczMDBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1heDczMDBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oF9fbWF4NzMweF9yZW1vdmUoJmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBt YXg3MzAwX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3gu YyBiL2RyaXZlcnMvZ3Bpby9ncGlvLQo+IHBjYTk1M3guYwo+IGluZGV4IDNlZWRlYWM5ZWM4ZC4u ZmM1ZjAzN2FhZjY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYwo+ ICsrKyBiL2RyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYwo+IEBAIC0xMDk1LDcgKzEwOTUsNyBA QCBzdGF0aWMgaW50IHBjYTk1M3hfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcGNh OTUzeF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcGNh OTUzeF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHBjYTk1M3hfcGxhdGZvcm1fZGF0YSAqcGRhdGEgPQo+IGRldl9nZXRfcGxh dGRhdGEoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBjYTk1M3hfY2hp cCAqY2hpcCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IEBAIC0xMTA2LDggKzExMDYs NiBAQCBzdGF0aWMgaW50IHBjYTk1M3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9k aXNhYmxlKGNoaXAtPnJlZ3VsYXRvcik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3Bpby9ncGlvLXBjZjg1N3guYyBiL2RyaXZlcnMvZ3Bpby9ncGlvLQo+IHBjZjg1N3guYwo+ IGluZGV4IDU5Y2MyN2U0ZGU1MS4uZTk4ZWE0N2Q3MjM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3Bpby9ncGlvLXBjZjg1N3guYwo+ICsrKyBiL2RyaXZlcnMvZ3Bpby9ncGlvLXBjZjg1N3guYwo+ IEBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIGludCBwY2Y4NTd4X3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHN0YXR1czsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHBjZjg1N3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIHBjZjg1N3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwY2Y4NTd4X3BsYXRmb3JtX2RhdGHC oMKgwqDCoCpwZGF0YSA9Cj4gZGV2X2dldF9wbGF0ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgcGNmODU3eMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCpncGlvID0KPiBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiBAQCAtNDA3LDggKzQw Nyw2IEBAIHN0YXRpYyBpbnQgcGNmODU3eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocGRhdGEgJiYgcGRhdGEtPnRlYXJkb3duKQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGRhdGEtPnRlYXJkb3duKGNsaWVudCwgZ3Bp by0+Y2hpcC5iYXNlLCBncGlvLQo+ID5jaGlwLm5ncGlvLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwZGF0YS0+Y29udGV4 dCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg dm9pZCBwY2Y4NTd4X3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3Bpby9ncGlvLXRwaWMyODEwLmMgYi9kcml2ZXJzL2dwaW8vZ3Bpby0K PiB0cGljMjgxMC5jCj4gaW5kZXggOTlkNWE4NGE5MTI5Li44ZDgyOTBmMzZjOGEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncGlvL2dwaW8tdHBpYzI4MTAuYwo+ICsrKyBiL2RyaXZlcnMvZ3Bpby9n cGlvLXRwaWMyODEwLmMKPiBAQCAtMTM0LDEzICsxMzQsMTEgQEAgc3RhdGljIGludCB0cGljMjgx MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdHBpYzI4MTBfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRwaWMyODEwX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHBpYzI4 MTAgKmdwaW8gPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBncGlvY2hpcF9yZW1vdmUoJmdwaW8tPmNoaXApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IHRwaWMyODEwX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fk djc1MTEvYWR2NzUxMV9kcnYuYwo+IGluZGV4IDViYjkzMDAwNDBkZC4uMDYxMDdiMDFlMTY5IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKPiBA QCAtMTMzNSw3ICsxMzM1LDcgQEAgc3RhdGljIGludCBhZHY3NTExX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmkyYywgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWR2NzUxMV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgYWR2NzUxMV9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFk djc1MTEgKmFkdjc1MTEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC0xMzUy LDggKzEzNTIsNiBAQCBzdGF0aWMgaW50IGFkdjc1MTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmkyYykKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoYWR2 NzUxMS0+aTJjX3BhY2tldCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGkyY191bnJlZ2lzdGVyX2Rldmlj ZShhZHY3NTExLT5pMmNfZWRpZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWR2NzUxMV9pMmNf aWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgv YW5hbG9naXgtYW54NjM0NS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2Fu YWxvZ2l4LWFueDYzNDUuYwo+IGluZGV4IGFlM2Q2ZTlhNjA2Yy4uNjYwYTU0ODU3OTI5IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXgtYW54NjM0 NS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeC1hbng2 MzQ1LmMKPiBAQCAtNzg3LDcgKzc4Nyw3IEBAIHN0YXRpYyBpbnQgYW54NjM0NV9pMmNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJy Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYW54NjM0NV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFueDYzNDVfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYW54NjM0 NSAqYW54NjM0NSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTc5OCw4 ICs3OTgsNiBAQCBzdGF0aWMgaW50IGFueDYzNDVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGFueDYzNDUtPmVkaWQpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJmFueDYzNDUtPmxvY2spOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIGFueDYzNDVfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeC1hbng3OHh4LmMKPiBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXgtYW54Nzh4eC5jCj4gaW5kZXggZDJmYzg2NzZm YWI2Li41OTk3MDQ5ZmRlNWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9h bmFsb2dpeC9hbmFsb2dpeC1hbng3OHh4LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2FuYWxvZ2l4L2FuYWxvZ2l4LWFueDc4eHguYwo+IEBAIC0xMzU3LDcgKzEzNTcsNyBAQCBzdGF0 aWMgaW50IGFueDc4eHhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFueDc4 eHhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBh bng3OHh4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGFueDc4eHggKmFueDc4eHggPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IEBAIC0xMzY2LDggKzEzNjYsNiBAQCBzdGF0aWMgaW50IGFueDc4eHhf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oHVucmVnaXN0ZXJfaTJjX2R1bW15X2NsaWVudHMoYW54Nzh4eCk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoYW54Nzh4eC0+ZWRpZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYW54Nzh4 eF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4 L2FueDc2MjUuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbng3NjI1LmMK PiBpbmRleCA1M2E1ZGE2YzQ5ZGQuLjczZjFkMzMzOGM4MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FueDc2MjUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvYW5hbG9naXgvYW54NzYyNS5jCj4gQEAgLTI3MzMsNyArMjczMyw3IEBAIHN0YXRp YyBpbnQgYW54NzYyNV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYW54NzYy NV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFu eDc2MjVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgYW54NzYyNV9kYXRhICpwbGF0Zm9ybSA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTI3NTUsOCArMjc1NSw2IEBAIHN0YXRpYyBpbnQgYW54 NzYyNV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBpZiAocGxhdGZvcm0tPnBkYXRhLmF1ZGlvX2VuKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYW54NzYyNV91bnJlZ2lzdGVyX2F1ZGlvKHBsYXRmb3JtKTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCBhbng3NjI1X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvY2hyb250ZWwtY2g3MDMzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvY2hyb250ZWwtY2g3MDMzLmMKPiBpbmRleCA0ODZmNDA1YzJlMTYuLmVmZDU4N2QyMDc1 ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Nocm9udGVsLWNoNzAzMy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jaHJvbnRlbC1jaDcwMzMuYwo+IEBAIC01 ODIsMTQgKzU4MiwxMiBAQCBzdGF0aWMgaW50IGNoNzAzM19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgY2g3MDMzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBjaDcwMzNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGNoNzAzM19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2JyaWRnZV9yZW1vdmUoJnByaXYtPmJyaWRn ZSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjaDcwMzNfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvY3Jvcy1lYy1hbng3Njg4LmMKPiBiL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvY3Jvcy1lYy1hbng3Njg4LmMKPiBpbmRleCAwZjZkOTA3NDMyZTMuLmZh OTFiZGVkZGVmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Nyb3MtZWMt YW54NzY4OC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jcm9zLWVjLWFueDc2ODgu Ywo+IEBAIC0xNTksMTMgKzE1OSwxMSBAQCBzdGF0aWMgaW50IGNyb3NfZWNfYW54NzY4OF9icmlk Z2VfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNyb3NfZWNfYW54NzY4OF9icmlkZ2Vf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNyb3NfZWNf YW54NzY4OF9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjcm9zX2VjX2FueDc2ODggKmFueDc2ODggPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkcm1fYnJpZGdlX3Jl bW92ZSgmYW54NzY4OC0+YnJpZGdlKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkCj4gY3Jvc19lY19h bng3Njg4X2JyaWRnZV9tYXRjaF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2l0ZS1pdDY1MDUuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pdGUt aXQ2NTA1LmMKPiBpbmRleCA0YjY3M2M0NzkyZDcuLjU0N2UwYzlkM2JkYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2l0ZS1pdDY1MDUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvaXRlLWl0NjUwNS5jCj4gQEAgLTMzMTYsNyArMzMxNiw3IEBAIHN0YXRpYyBp bnQgaXQ2NTA1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaXQ2NTA1X2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaXQ2NTA1X2ky Y19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGl0NjUwNSAqaXQ2NTA1ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4g wqAKPiBAQCAtMzMyNCw4ICszMzI0LDYgQEAgc3RhdGljIGludCBpdDY1MDVfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGRybV9kcF9hdXhf dW5yZWdpc3RlcigmaXQ2NTA1LT5hdXgpOwo+IMKgwqDCoMKgwqDCoMKgwqBpdDY1MDVfZGVidWdm c19yZW1vdmUoaXQ2NTA1KTsKPiDCoMKgwqDCoMKgwqDCoMKgaXQ2NTA1X3Bvd2Vyb2ZmKGl0NjUw NSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgaXQ2NTA1X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjYxMjEuYwo+IGIvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9pdGUtaXQ2NjEyMS5jCj4gaW5kZXggNDQ4YzU4ZTYwYzExLi44ZDA1YWMyMTkyZjIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pdGUtaXQ2NjEyMS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9pdGUtaXQ2NjEyMS5jCj4gQEAgLTE2MjIsMTUgKzE2 MjIsMTMgQEAgc3RhdGljIGludCBpdDY2MTIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBpdDY2MTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBpdDY2MTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgaXQ2NjEyMV9jdHggKmN0eCA9IGkyY19nZXRfY2xpZW50ZGF0YShj bGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGl0ZTY2MTIxX3Bvd2VyX29mZihjdHgpOwo+ IMKgwqDCoMKgwqDCoMKgwqBkcm1fYnJpZGdlX3JlbW92ZSgmY3R4LT5icmlkZ2UpOwo+IMKgwqDC oMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZjdHgtPmxvY2spOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgaXQ2NjEyMV9kdF9tYXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2xvbnRpdW0tbHQ4OTEyYi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2xvbnRp dW0tbHQ4OTEyYi5jCj4gaW5kZXggYzY0MmQxZTAyYjJmLi4yZjVjOWVhNDZlOTMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sb250aXVtLWx0ODkxMmIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1sdDg5MTJiLmMKPiBAQCAtNzE3LDcgKzcxNyw3 IEBAIHN0YXRpYyBpbnQgbHQ4OTEyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGx0 ODkxMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbHQ4 OTEyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgbHQ4OTEyICpsdCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg Cj4gQEAgLTcyNSw3ICs3MjUsNiBAQCBzdGF0aWMgaW50IGx0ODkxMl9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBkcm1fYnJpZGdlX3JlbW92ZSgm bHQtPmJyaWRnZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGx0ODkxMl9mcmVlX2kyYyhsdCk7Cj4gwqDC oMKgwqDCoMKgwqDCoGx0ODkxMl9wdXRfZHQobHQpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBsdDg5MTJf ZHRfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sb250 aXVtLWx0OTIxMS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2xvbnRpdW0tbHQ5MjExLmMK PiBpbmRleCBlOTI4MjFmYmM2MzkuLjA2NDZlYzI4YWQxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL2xvbnRpdW0tbHQ5MjExLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2xvbnRpdW0tbHQ5MjExLmMKPiBAQCAtNzY1LDEzICs3NjUsMTEgQEAgc3RhdGljIGlu dCBsdDkyMTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbHQ5MjExX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsdDkyMTFfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBs dDkyMTEgKmN0eCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoGRybV9icmlkZ2VfcmVtb3ZlKCZjdHgtPmJyaWRnZSk7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kZXZpY2VfaWQg bHQ5MjExX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9u dGl1bS1sdDk2MTEuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9sb250aXVtLWx0OTYxMS5j Cj4gaW5kZXggN2VmOGZlNWFiYzEyLi40OTJlOTQ4ZDYyNGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9sb250aXVtLWx0OTYxMS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9sb250aXVtLWx0OTYxMS5jCj4gQEAgLTEyMjAsNyArMTIyMCw3IEBAIHN0YXRpYyBp bnQgbHQ5NjExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGx0OTYxMV9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbHQ5NjExX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bHQ5NjExICpsdDk2MTEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0x MjMyLDggKzEyMzIsNiBAQCBzdGF0aWMgaW50IGx0OTYxMV9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG9mX25vZGVfcHV0KGx0OTYxMS0+ ZHNpMV9ub2RlKTsKPiDCoMKgwqDCoMKgwqDCoMKgb2Zfbm9kZV9wdXQobHQ5NjExLT5kc2kwX25v ZGUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGx0OTYxMV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2xvbnRpdW0tbHQ5NjExdXhjLmMKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvbG9udGl1bS1sdDk2MTF1eGMuYwo+IGluZGV4IDNkNjJlNmJmNjg5Mi4uYjVhNTgx MDZjMzI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1sdDk2 MTF1eGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbG9udGl1bS1sdDk2MTF1eGMu Ywo+IEBAIC05NzcsNyArOTc3LDcgQEAgc3RhdGljIGludCBsdDk2MTF1eGNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgbHQ5NjExdXhjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsdDk2MTF1eGNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsdDk2MTF1eGMgKmx0OTYx MXV4YyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTk5Miw4ICs5OTIs NiBAQCBzdGF0aWMgaW50IGx0OTYxMXV4Y19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG9mX25vZGVfcHV0KGx0OTYxMXV4Yy0+ZHNpMV9u b2RlKTsKPiDCoMKgwqDCoMKgwqDCoMKgb2Zfbm9kZV9wdXQobHQ5NjExdXhjLT5kc2kwX25vZGUp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0 cnVjdCBpMmNfZGV2aWNlX2lkIGx0OTYxMXV4Y19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL21lZ2FjaGlwcy1zdGRweHh4eC1nZS1iODUwdjMtZncuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9tZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3LmMK PiBpbmRleCBjY2U5OGJmMmE0ZTcuLjlmMTc1ZGYxMTU4MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL21lZ2FjaGlwcy1zdGRweHh4eC1nZS1iODUwdjMtZncuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbWVnYWNoaXBzLXN0ZHB4eHh4LWdlLWI4NTB2My1mdy5j Cj4gQEAgLTM1NSwxMSArMzU1LDkgQEAgc3RhdGljIGludCBzdGRwNDAyOF9nZV9iODUwdjNfZndf cHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqc3RkcDQwMjhfaTJjLAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gZ2VfYjg1MHYzX3JlZ2lzdGVyKCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBz dGRwNDAyOF9nZV9iODUwdjNfZndfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKnN0ZHA0MDI4 X2kyYykKPiArc3RhdGljIHZvaWQgc3RkcDQwMjhfZ2VfYjg1MHYzX2Z3X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpzdGRwNDAyOF9pMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGdlX2I4 NTB2M19sdmRzX3JlbW92ZSgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0ZHA0MDI4X2dlX2I4 NTB2M19md19pMmNfdGFibGVbXQo+ID0gewo+IEBAIC00MDUsMTEgKzQwMyw5IEBAIHN0YXRpYyBp bnQgc3RkcDI2OTBfZ2VfYjg1MHYzX2Z3X3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKnN0ZHAy NjkwX2kyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGdlX2I4NTB2M19yZWdpc3RlcigpOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc3RkcDI2OTBfZ2VfYjg1MHYzX2Z3X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpzdGRwMjY5MF9pMmMpCj4gK3N0YXRpYyB2b2lkIHN0ZHAyNjkwX2dl X2I4NTB2M19md19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqc3RkcDI2OTBfaTJjKQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBnZV9iODUwdjNfbHZkc19yZW1vdmUoKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCBzdGRwMjY5MF9nZV9iODUwdjNfZndfaTJjX3RhYmxlW10KPiA9IHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9ueHAtcHRuMzQ2MC5jCj4gYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL254cC1wdG4zNDYwLmMKPiBpbmRleCAxYWI5MWY0ZTA1N2IuLjA4NTEx MDFhOGM3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL254cC1wdG4zNDYw LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL254cC1wdG4zNDYwLmMKPiBAQCAtMzE1 LDEzICszMTUsMTEgQEAgc3RhdGljIGludCBwdG4zNDYwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBwdG4zNDYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBwdG4zNDYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcHRuMzQ2MF9icmlkZ2UgKnB0bl9icmlkZ2UgPQo+IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGRybV9icmlk Z2VfcmVtb3ZlKCZwdG5fYnJpZGdlLT5icmlkZ2UpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHB0 bjM0NjBfaTJjX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvcGFyYWRlLXBzODYyMi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2 MjIuYwo+IGluZGV4IDM3YjMwODg1MGI0ZS4uYjU0ZjQxOGQyYjdiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFyYWRlLXBzODYyMi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjIyLmMKPiBAQCAtNTI0LDE0ICs1MjQsMTIgQEAgc3RhdGlj IGludCBwczg2MjJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHBzODYyMl9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcHM4NjIyX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg cHM4NjIyX2JyaWRnZSAqcHM4NjIyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHBzODYyMi0+Ymwp Owo+IMKgwqDCoMKgwqDCoMKgwqBkcm1fYnJpZGdlX3JlbW92ZSgmcHM4NjIyLT5icmlkZ2UpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHBzODYyMl9pMmNfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQwLmMKPiBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvcGFyYWRlLXBzODY0MC5jCj4gaW5kZXggZWRiOTM5YjE0YzA0Li5hMDlkMTgy OGQ4ZTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJhZGUtcHM4NjQw LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhcmFkZS1wczg2NDAuYwo+IEBAIC02 OTAsMTMgKzY5MCwxMSBAQCBzdGF0aWMgaW50IHBzODY0MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBwczg2NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIHBzODY0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBzODY0MCAqcHNfYnJpZGdlID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2JyaWRnZV9yZW1vdmUo JnBzX2JyaWRnZS0+YnJpZGdlKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBzODY0MF9tYXRjaFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMKPiBpbmRleCA2NTU0OWZiZmRjODcuLmM1 ZTVmODNiOTdjZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMngu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jCj4gQEAgLTExNDMsNyAr MTE0Myw3IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBzaWk5MDJ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCBzaWk5MDJ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gQEAgLTExNTIsOCArMTE1Miw2IEBAIHN0YXRpYyBpbnQgc2lpOTAy eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBk cm1fYnJpZGdlX3JlbW92ZSgmc2lpOTAyeC0+YnJpZGdlKTsKPiDCoMKgwqDCoMKgwqDCoMKgcmVn dWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKHNpaTkwMngtPnN1cHBsaWVzKSwKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c2lpOTAyeC0+c3VwcGxpZXMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2lpOTAyeF9kdF9pZHNb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MjM0LmMKPiBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTIzNC5jCj4gaW5kZXggMTVjOThhN2JkODFjLi41 YjMwNjFkNGI1YzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MjM0 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkyMzQuYwo+IEBAIC05MzYsMTQg KzkzNiwxMiBAQCBzdGF0aWMgaW50IHNpaTkyMzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IHNpaTkyMzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIHNpaTkyMzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBzaWk5MjM0ICpjdHggPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBzaWk5MjM0X2NhYmxlX291dChjdHgpOwo+IMKg wqDCoMKgwqDCoMKgwqBkcm1fYnJpZGdlX3JlbW92ZSgmY3R4LT5icmlkZ2UpOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgc2lpOTIzNF9kdF9tYXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL3NpbC1zaWk4NjIwLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv c2lsLXNpaTg2MjAuYwo+IGluZGV4IGVjNzc0NWMzMWRhMC4uZWFiZDNlMDlhZGZhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lsLXNpaTg2MjAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc2lsLXNpaTg2MjAuYwo+IEBAIC0yMzQ2LDcgKzIzNDYsNyBAQCBz dGF0aWMgaW50IHNpaTg2MjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNpaTg2MjBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNpaTg2MjBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBzaWk4NjIwICpjdHggPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+ IEBAIC0yMzYwLDggKzIzNjAsNiBAQCBzdGF0aWMgaW50IHNpaTg2MjBfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNp aTg2MjBfY2FibGVfb3V0KGN0eCk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDC oMKgZHJtX2JyaWRnZV9yZW1vdmUoJmN0eC0+YnJpZGdlKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHNpaTg2MjBfZHRfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS90YzM1ODc2Ny5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY3LmMKPiBp bmRleCA0ODU3MTdjOGYwYjQuLmE1MDMxNjUzOGE5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3RjMzU4NzY3LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3Rj MzU4NzY3LmMKPiBAQCAtMjE0OCwxMyArMjE0OCwxMSBAQCBzdGF0aWMgaW50IHRjX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlk KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0Y19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHRjX2RhdGEgKnRjID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgZHJtX2JyaWRnZV9yZW1vdmUoJnRjLT5icmlkZ2UpOwo+IC0KPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIHRjMzU4NzY3X2kyY19pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS90YzM1ODc2OC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4 NzY4LmMKPiBpbmRleCBmZDU4NWJmOTI1ZmUuLjRjNGI3N2NlOGFiYSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY4LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3RjMzU4NzY4LmMKPiBAQCAtMTA3MiwxMyArMTA3MiwxMSBAQCBzdGF0aWMgaW50IHRj MzU4NzY4X2kyY19wcm9iZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBtaXBpX2RzaV9ob3N0X3JlZ2lzdGVyKCZwcml2LT5kc2lfaG9zdCk7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCB0YzM1ODc2OF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRjMzU4NzY4X2kyY19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRjMzU4NzY4 X3ByaXYgKnByaXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBtaXBpX2RzaV9ob3N0X3VucmVnaXN0ZXIoJnByaXYtPmRzaV9ob3N0KTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgaTJj X2RyaXZlciB0YzM1ODc2OF9kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvdGMzNTg3NzUuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc3NS5j Cj4gaW5kZXggNjJhN2VmMzUyZGFhLi4xZDA5NzcxN2I0N2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS90YzM1ODc3NS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS90YzM1ODc3NS5jCj4gQEAgLTcxMywxMyArNzEzLDExIEBAIHN0YXRpYyBpbnQgdGNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAq aWQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCB0Y19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCB0Y19kYXRhICp0YyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGRybV9icmlkZ2VfcmVtb3ZlKCZ0Yy0+YnJpZGdlKTsKPiAtCj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTJjX2RldmljZV9pZCB0YzM1ODc3NV9pMmNfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvdGktc242NWRzaTgzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvdGktc242NWRzaTgzLmMKPiBpbmRleCBhYzY2ZjQwOGI0MGMuLjhmOTNlMzc0ODQ4YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVkc2k4My5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODMuYwo+IEBAIC03MjYsMTQgKzcyNiwx MiBAQCBzdGF0aWMgaW50IHNuNjVkc2k4M19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBzbjY1ZHNpODNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIHNuNjVkc2k4M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHNuNjVkc2k4MyAqY3R4ID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZHJtX2JyaWRnZV9yZW1vdmUoJmN0eC0+ YnJpZGdlKTsKPiDCoMKgwqDCoMKgwqDCoMKgb2Zfbm9kZV9wdXQoY3R4LT5ob3N0X25vZGUpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVj dCBpMmNfZGV2aWNlX2lkIHNuNjVkc2k4M19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL3RpLXRmcDQxMC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3Rp LXRmcDQxMC5jCj4gaW5kZXggNzU2YjNlNmU3NzZiLi4yODFjZWI3Yjk4NDAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS10ZnA0MTAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9icmlkZ2UvdGktdGZwNDEwLmMKPiBAQCAtMzkyLDExICszOTIsOSBAQCBzdGF0aWMgaW50 IHRmcDQxMF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gdGZwNDEwX2luaXQoJmNsaWVudC0+ZGV2LCB0cnVlKTsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IHRmcDQxMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIHRmcDQxMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHRmcDQxMF9maW5pKCZjbGllbnQtPmRldik7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGZwNDEwX2kyY19pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2kyYy9jaDcwMDZfZHJ2LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9p MmMvY2g3MDA2X2Rydi5jCj4gaW5kZXggYjkxZTQ4ZDIxOTBkLi41NzhiNzM4ODU5YjkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2kyYy9jaDcwMDZfZHJ2LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTJjL2NoNzAwNl9kcnYuYwo+IEBAIC00MTcsMTEgKzQxNyw5IEBAIHN0YXRpYyBp bnQgY2g3MDA2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgKmkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBjaDcwMDZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIGNoNzAwNl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgY2g3MDA2X2RiZyhjbGllbnQsICJcbiIpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBjaDcw MDZfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2kyYy90ZGE5OTUwLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pMmMvdGRhOTk1MC5jCj4gaW5k ZXggNWIwM2ZkZDFlYWE0Li45ZWQ1NGU3Y2NmZjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2kyYy90ZGE5OTUwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTJjL3RkYTk5NTAuYwo+ IEBAIC00NzgsMTQgKzQ3OCwxMiBAQCBzdGF0aWMgaW50IHRkYTk5NTBfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IHRkYTk5NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIHRkYTk5NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0ZGE5OTUwX3ByaXYgKnByaXYgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBjZWNfbm90aWZp ZXJfY2VjX2FkYXBfdW5yZWdpc3Rlcihwcml2LT5ub3RpZnksIHByaXYtPmFkYXApOwo+IMKgwqDC oMKgwqDCoMKgwqBjZWNfdW5yZWdpc3Rlcl9hZGFwdGVyKHByaXYtPmFkYXApOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpMmNfZGV2 aWNlX2lkIHRkYTk5NTBfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p MmMvdGRhOTk4eF9kcnYuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jCj4g aW5kZXggYjdlYzZjMzc0ZmJkLi4xZjVjZTI5MmY1YjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2kyYy90ZGE5OTh4X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2kyYy90ZGE5 OTh4X2Rydi5jCj4gQEAgLTIwNzUsMTEgKzIwNzUsMTAgQEAgdGRhOTk4eF9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LAo+IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRkYTk5 OHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRkYTk5 OHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoGNvbXBvbmVudF9kZWwoJmNsaWVudC0+ZGV2LCAmdGRhOTk4eF9vcHMpOwo+IMKgwqDCoMKg wqDCoMKgwqB0ZGE5OTh4X2Rlc3Ryb3koJmNsaWVudC0+ZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19PRgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtb2xpbWV4LWxjZC1vbGludXhpbm8uYwo+IGIvZHJp dmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLW9saW1leC1sY2Qtb2xpbnV4aW5vLmMKPiBpbmRleCBj YjVjYjI3NDYyZGYuLjM2YTQ2Y2I3ZmUxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtb2xpbWV4LWxjZC1vbGludXhpbm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9wYW5lbC1vbGltZXgtbGNkLW9saW51eGluby5jCj4gQEAgLTI4OCw3ICsyODgsNyBA QCBzdGF0aWMgaW50IGxjZF9vbGludXhpbm9fcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGxjZF9vbGludXhpbm9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIGxjZF9vbGludXhpbm9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsY2Rfb2xpbnV4aW5vICpwYW5lbCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTI5Niw4ICsyOTYsNiBAQCBzdGF0aWMg aW50IGxjZF9vbGludXhpbm9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBkcm1fcGFuZWxfZGlzYWJsZSgmcGFuZWwtPnBhbmVsKTsKPiDC oMKgwqDCoMKgwqDCoMKgZHJtX3BhbmVsX3VucHJlcGFyZSgmcGFuZWwtPnBhbmVsKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGxjZF9vbGludXhpbm9fb2ZfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXNwYmVycnlwaS10b3VjaHNjcmVlbi5jCj4g Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcmFzcGJlcnJ5cGktdG91Y2hzY3JlZW4uYwo+ IGluZGV4IDE0NTA0N2UxOTM5NC4uNmRjNjdiNjA5ODczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1yYXNwYmVycnlwaS10b3VjaHNjcmVlbi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJhc3BiZXJyeXBpLXRvdWNoc2NyZWVuLmMKPiBAQCAt NDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyBpbnQgcnBpX3RvdWNoc2NyZWVuX3Byb2JlKHN0cnVjdAo+ IGkyY19jbGllbnQgKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FTk9ERVY7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBycGlfdG91Y2hzY3JlZW5fcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIHJwaV90b3VjaHNjcmVlbl9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJwaV90b3VjaHNj cmVlbiAqdHMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC00NTQsOCArNDU0 LDYgQEAgc3RhdGljIGludCBycGlfdG91Y2hzY3JlZW5fcmVtb3ZlKHN0cnVjdAo+IGkyY19jbGll bnQgKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgZHJtX3BhbmVsX3JlbW92ZSgmdHMtPmJhc2UpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKHRzLT5kc2kp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBycGlfdG91Y2hzY3JlZW5fZHNpX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vc3NkMTMweC1pMmMuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vc3NkMTMweC1pMmMuYwo+IGluZGV4IDFlMGZjZWM3YmU0 Ny4uZGRmYTBiYjVkOWM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL3Nz ZDEzMHgtaTJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9zc2QxMzB4LWkyYy5j Cj4gQEAgLTM5LDEzICszOSwxMSBAQCBzdGF0aWMgaW50IHNzZDEzMHhfaTJjX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBzc2QxMzB4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgc3NkMTMweF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzc2QxMzB4X2Rldmlj ZSAqc3NkMTMweCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoHNzZDEzMHhfcmVtb3ZlKHNzZDEzMHgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgc3NkMTMweF9pMmNfc2h1dGRvd24oc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaTJjLWhp ZC9pMmMtaGlkLWNvcmUuYyBiL2RyaXZlcnMvaGlkL2kyYy0KPiBoaWQvaTJjLWhpZC1jb3JlLmMK PiBpbmRleCBjMDc4ZjA5YTIzMTguLjk1Y2VmYWU0N2FkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2hpZC9pMmMtaGlkL2kyYy1oaWQtY29yZS5jCj4gKysrIGIvZHJpdmVycy9oaWQvaTJjLWhpZC9p MmMtaGlkLWNvcmUuYwo+IEBAIC0xMDY0LDcgKzEwNjQsNyBAQCBpbnQgaTJjX2hpZF9jb3JlX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwgc3RydWN0IGkyY2hpZF9vcHMgKm9wcywK PiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKGkyY19oaWRfY29yZV9wcm9iZSk7Cj4gwqAKPiAt aW50IGkyY19oaWRfY29yZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArdm9p ZCBpMmNfaGlkX2NvcmVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpMmNfaGlkICppaGlkID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7Cj4gQEAg LTEwNzgsOCArMTA3OCw2IEBAIGludCBpMmNfaGlkX2NvcmVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkyY19oaWRf ZnJlZV9idWZmZXJzKGloaWQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGkyY19oaWRfY29yZV9w b3dlcl9kb3duKGloaWQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oEVYUE9SVF9TWU1CT0xfR1BMKGkyY19oaWRfY29yZV9yZW1vdmUpOwo+IMKgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaGlkL2kyYy1oaWQvaTJjLWhpZC5oIGIvZHJpdmVycy9oaWQvaTJjLWhpZC9p MmMtCj4gaGlkLmgKPiBpbmRleCAyMzZjYzA2MmQ1ZWYuLjk2Yzc1NTEwYWQzZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2hpZC9pMmMtaGlkL2kyYy1oaWQuaAo+ICsrKyBiL2RyaXZlcnMvaGlkL2ky Yy1oaWQvaTJjLWhpZC5oCj4gQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IGkyY2hpZF9vcHMgewo+ IMKgCj4gwqBpbnQgaTJjX2hpZF9jb3JlX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs IHN0cnVjdCBpMmNoaWRfb3BzCj4gKm9wcywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MTYgaGlkX2Rlc2NyaXB0b3JfYWRkcmVzcywgdTMyIHF1aXJrcyk7 Cj4gLWludCBpMmNfaGlkX2NvcmVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+ ICt2b2lkIGkyY19oaWRfY29yZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4g wqAKPiDCoHZvaWQgaTJjX2hpZF9jb3JlX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpOwo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRjMTI4ZDgxOC5jIGIvZHJp dmVycy9od21vbi9hZGMxMjhkODE4LmMKPiBpbmRleCBmZDkzOGM3MDI5M2YuLjI5OTE2MDU0M2Iz NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL2FkYzEyOGQ4MTguYwo+ICsrKyBiL2RyaXZl cnMvaHdtb24vYWRjMTI4ZDgxOC5jCj4gQEAgLTQ5NSwxNCArNDk1LDEyIEBAIHN0YXRpYyBpbnQg YWRjMTI4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkYzEyOF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWRjMTI4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWRj MTI4X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBpZiAoZGF0YS0+cmVndWxhdG9yKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+cmVndWxhdG9yKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCBhZGMxMjhfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h ZHQ3NDcwLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NzAuYwo+IGluZGV4IGM2N2NkMDM3YTkzZi4u OTI3ZjhkZjA1YjdjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3MC5jCj4gKysr IGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKPiBAQCAtMTI5NiwxMiArMTI5NiwxMSBAQCBzdGF0 aWMgaW50IGFkdDc0NzBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkdDc0NzBfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFkdDc0NzBfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBhZHQ3NDcwX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBrdGhyZWFkX3N0b3AoZGF0YS0+YXV0b191cGRhdGUpOwo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgYWR0NzQ3MF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3 bW9uL2FzYjEwMC5jIGIvZHJpdmVycy9od21vbi9hc2IxMDAuYwo+IGluZGV4IDhjZjBiY2I4NWVi NC4uYTkxNjZjODU1NWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24vYXNiMTAwLmMKPiAr KysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCj4gQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMg dm9pZCBhc2IxMDBfd3JpdGVfdmFsdWUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LCB1MTYg cmVnLCB1MTYgdmFsKTsKPiDCoHN0YXRpYyBpbnQgYXNiMTAwX3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpOwo+IMKgc3RhdGljIGludCBhc2IxMDBfZGV0ZWN0KHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbyk7Cj4gLXN0YXRpYyBpbnQgYXNiMTAw X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKPiArc3RhdGljIHZvaWQgYXNiMTAw X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKPiDCoHN0YXRpYyBzdHJ1Y3QgYXNi MTAwX2RhdGEgKmFzYjEwMF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gwqBz dGF0aWMgdm9pZCBhc2IxMDBfaW5pdF9jbGllbnQoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7 Cj4gwqAKPiBAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyBpbnQgYXNiMTAwX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IGFzYjEwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgYXNiMTAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXNiMTAwX2RhdGEgKmRhdGEgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC04MzEsOCArODMxLDYgQEAgc3Rh dGljIGludCBhc2IxMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoZGF0YS0+bG03NVsxXSk7Cj4g wqDCoMKgwqDCoMKgwqDCoGkyY191bnJlZ2lzdGVyX2RldmljZShkYXRhLT5sbTc1WzBdKTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaHdtb24vYXNjNzYyMS5jIGIvZHJpdmVycy9od21vbi9hc2M3NjIxLmMKPiBp bmRleCBlODM1NjA1YTc0NTYuLjRmOTBmZGVlOWNjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3 bW9uL2FzYzc2MjEuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vYXNjNzYyMS5jCj4gQEAgLTExNjUs NyArMTE2NSw3IEBAIHN0YXRpYyBpbnQgYXNjNzYyMV9kZXRlY3Qoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT0RFVjsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGFzYzc2MjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGFzYzc2MjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBhc2M3NjIxX2RhdGEgKmRhdGEgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGk7Cj4gQEAgLTExNzYs OCArMTE3Niw2IEBAIHN0YXRpYyBpbnQgYXNjNzYyMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2aWNlX3JlbW92 ZV9maWxlKCZjbGllbnQtPmRldiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ICYoYXNjNzYyMV9wYXJhbXNbaV0u c2RhLmRldl9hdHRyKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBhc2M3NjIxX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZG1lMTczNy5j IGIvZHJpdmVycy9od21vbi9kbWUxNzM3LmMKPiBpbmRleCBlM2FkNGMyZDAwMzguLmIxY2QwMjhj ODI3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYwo+ICsrKyBiL2RyaXZl cnMvaHdtb24vZG1lMTczNy5jCj4gQEAgLTI1MDgsMTQgKzI1MDgsMTIgQEAgc3RhdGljIGludCBk bWUxNzM3X2kyY19wcm9iZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkbWUxNzM3X2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZG1lMTczN19p MmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBkbWUxNzM3X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBod21vbl9kZXZpY2VfdW5yZWdpc3RlcihkYXRhLT5o d21vbl9kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBkbWUxNzM3X3JlbW92ZV9maWxlcygmY2xpZW50 LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGRtZTE3MzdfaWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9od21vbi9mNzUzNzVzLmMgYi9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYwo+ IGluZGV4IDU3YzhhNDczNjk4ZC4uZmZlZWQ2YzFlMjBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv aHdtb24vZjc1Mzc1cy5jCj4gKysrIGIvZHJpdmVycy9od21vbi9mNzUzNzVzLmMKPiBAQCAtMTE0 LDcgKzExNCw3IEBAIHN0cnVjdCBmNzUzNzVfZGF0YSB7Cj4gwqBzdGF0aWMgaW50IGY3NTM3NV9k ZXRlY3Qoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGkyY19ib2FyZF9pbmZvICppbmZvKTsK PiDCoHN0YXRpYyBpbnQgZjc1Mzc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+ IC1zdGF0aWMgaW50IGY3NTM3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4g K3N0YXRpYyB2b2lkIGY3NTM3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBmNzUzNzVfaWRbXSA9IHsK PiDCoMKgwqDCoMKgwqDCoMKgeyAiZjc1MzczIiwgZjc1MzczIH0sCj4gQEAgLTg2NCwxMiArODY0 LDExIEBAIHN0YXRpYyBpbnQgZjc1Mzc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGY3NTM3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg Zjc1Mzc1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgZjc1Mzc1X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdt b25fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRl di5rb2JqLCAmZjc1Mzc1X2dyb3VwKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgLyogUmV0dXJuIDAgaWYgZGV0ZWN0aW9uIGlzIHN1Y2Nlc3NmdWwsIC1FTk9ERVYg b3RoZXJ3aXNlICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2 ZXJzL2h3bW9uL2ZzY2htZC5jCj4gaW5kZXggYzI2MTk1ZTNhYWQ3Li4zNDNlMjI3Y2EzOGEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi9mc2NobWQuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24v ZnNjaG1kLmMKPiBAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyBjb25zdCBpbnQgRlNDSE1EX05P X1RFTVBfU0VOU09SU1s3XSA9IHsgMywKPiAzLCA0LCAzLCA1LCA1LCAxMSB9Owo+IMKgc3RhdGlj IGludCBmc2NobWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqBzdGF0aWMg aW50IGZzY2htZF9kZXRlY3Qoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGkyY19ib2FyZF9p bmZvICppbmZvKTsKPiAtc3RhdGljIGludCBmc2NobWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpOwo+ICtzdGF0aWMgdm9pZCBmc2NobWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpOwo+IMKgc3RhdGljIHN0cnVjdCBmc2NobWRfZGF0YSAqZnNjaG1kX3VwZGF0ZV9k ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KTsKPiDCoAo+IMKgLyoKPiBAQCAtMTI0OCw3ICsxMjQ4 LDcgQEAgc3RhdGljIGludCBmc2NobWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg ZnNjaG1kX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBm c2NobWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBmc2NobWRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiBAQCAtMTI5MSw4ICsxMjkxLDYgQEAgc3Rh dGljIGludCBmc2NobWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmd2F0Y2hkb2dfZGF0YV9tdXRleCk7Cj4gwqDCoMKgwqDC oMKgwqDCoGtyZWZfcHV0KCZkYXRhLT5rcmVmLCBmc2NobWRfcmVsZWFzZV9yZXNvdXJjZXMpOwo+ IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJndhdGNoZG9nX2RhdGFfbXV0ZXgpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBm c2NobWRfZGF0YSAqZnNjaG1kX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Z0c3RldXRhdGVzLmMKPiBiL2RyaXZlcnMvaHdtb24v ZnRzdGV1dGF0ZXMuYwo+IGluZGV4IGNlZmZjNzZhMGM1MS4uOTE4NzYzODMyNDMyIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaHdtb24vZnRzdGV1dGF0ZXMuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24v ZnRzdGV1dGF0ZXMuYwo+IEBAIC03NDQsMTIgKzc0NCwxMSBAQCBzdGF0aWMgaW50IGZ0c19kZXRl Y3Qoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZ0c19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgZnRzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZnRzX2RhdGEgKmRhdGEgPSBkZXZf Z2V0X2RydmRhdGEoJmNsaWVudC0+ZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB3YXRjaGRv Z191bnJlZ2lzdGVyX2RldmljZSgmZGF0YS0+d2RkKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBmdHNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9pbmEyMDkuYyBiL2RyaXZlcnMv aHdtb24vaW5hMjA5LmMKPiBpbmRleCBmYzMwMDdjM2U4NWMuLjliNTg2NTVkMmRlNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2h3bW9uL2luYTIwOS5jCj4gKysrIGIvZHJpdmVycy9od21vbi9pbmEy MDkuYwo+IEBAIC01NjgsMTMgKzU2OCwxMSBAQCBzdGF0aWMgaW50IGluYTIwOV9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBpbmEyMDlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIGluYTIwOV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGluYTIwOV9kYXRhICpkYXRhID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaW5hMjA5 X3Jlc3RvcmVfY29uZihjbGllbnQsIGRhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGluYTIw OV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2luYTMyMjEuYyBiL2RyaXZl cnMvaHdtb24vaW5hMzIyMS5jCj4gaW5kZXggNThkMzgyOGUyZWMwLi5mODliYWMxOWJkNzMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi9pbmEzMjIxLmMKPiArKysgYi9kcml2ZXJzL2h3bW9u L2luYTMyMjEuYwo+IEBAIC05MTMsNyArOTEzLDcgQEAgc3RhdGljIGludCBpbmEzMjIxX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGluYTMyMjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGluYTMyMjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbmEzMjIxX2RhdGEg KmluYSA9IGRldl9nZXRfZHJ2ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBp bnQgaTsKPiBAQCAtOTI2LDggKzkyNiw2IEBAIHN0YXRpYyBpbnQgaW5hMzIyMV9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcG1fcnVudGltZV9wdXRfbm9pZGxlKGluYS0+cG1fZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBtdXRleF9kZXN0cm95KCZpbmEtPmxvY2spOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpbmEzMjIxX3N1 c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2pj NDIuYyBiL2RyaXZlcnMvaHdtb24vamM0Mi5jCj4gaW5kZXggMDdmN2Y4YjViNzNkLi43YjNjMTkw OTU5ZDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKPiArKysgYi9kcml2ZXJz L2h3bW9uL2pjNDIuYwo+IEBAIC01MjQsNyArNTI0LDcgQEAgc3RhdGljIGludCBqYzQyX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQVFJf RVJSX09SX1pFUk8oaHdtb25fZGV2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGpjNDJfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGpjNDJfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBqYzQyX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBA IC01MzcsNyArNTM3LDYgQEAgc3RhdGljIGludCBqYzQyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAoZGF0YS0+ Y29uZmlnICYgSkM0Ml9DRkdfSFlTVF9NQVNLKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGkyY19zbWJ1c193cml0ZV93b3JkX3N3YXBwZWQoY2xpZW50LCBKQzQyX1JFR19DT05G SUcsCj4gY29uZmlnKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvaHdtb24vbWNwMzAyMS5jIGIvZHJpdmVycy9od21vbi9tY3AzMDIxLmMKPiBpbmRleCBjZTI3 ODA3NjgwNzQuLjk5YzI5Y2VkMDg0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL21jcDMw MjEuYwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vbWNwMzAyMS5jCj4gQEAgLTE2NywxNCArMTY3LDEy IEBAIHN0YXRpYyBpbnQgbWNwMzAyMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBt Y3AzMDIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBt Y3AzMDIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgbWNwMzAyMV9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0 YS0+aHdtb25fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2ZpbGUoJmNsaWVu dC0+ZGV2LmtvYmosCj4gJmRldl9hdHRyX2luMF9pbnB1dC5hdHRyKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBtY3AzMDIxX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vb2Nj L3A4X2kyYy5jIGIvZHJpdmVycy9od21vbi9vY2MvcDhfaTJjLmMKPiBpbmRleCBkYTM5ZWEyOGRm MzEuLmQ4MmE0ODczYTBjNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL29jYy9wOF9pMmMu Ywo+ICsrKyBiL2RyaXZlcnMvaHdtb24vb2NjL3A4X2kyYy5jCj4gQEAgLTIyNiwxMyArMjI2LDEx IEBAIHN0YXRpYyBpbnQgcDhfaTJjX29jY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBvY2Nfc2V0dXAob2NjKTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IHA4X2kyY19vY2NfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIHA4X2kyY19vY2NfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvY2MgKm9jYyA9IGRldl9nZXRfZHJ2 ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG9jY19zaHV0ZG93bihv Y2MpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcDhfaTJjX29jY19vZl9tYXRjaFtdID0gewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BjZjg1OTEuYyBiL2RyaXZlcnMvaHdtb24vcGNmODU5 MS5jCj4gaW5kZXggYTk3YTUxMDA1YzYxLi5hZjk2MTRlOTE4YTQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9od21vbi9wY2Y4NTkxLmMKPiArKysgYi9kcml2ZXJzL2h3bW9uL3BjZjg1OTEuYwo+IEBA IC0yMjgsMTQgKzIyOCwxMyBAQCBzdGF0aWMgaW50IHBjZjg1OTFfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgcGNmODU5MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgcGNmODU5MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBjZjg1OTFfZGF0YSAqZGF0YSA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGh3bW9uX2Rldmlj ZV91bnJlZ2lzdGVyKGRhdGEtPmh3bW9uX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHN5c2ZzX3Jl bW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwKPiAmcGNmODU5MV9hdHRyX2dyb3VwX29wdCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwg JnBjZjg1OTFfYXR0cl9ncm91cCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoC8qIENhbGxlZCB3aGVuIHdlIGhhdmUgZm91bmQgYSBuZXcgUENGODU5MS4gKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9zbW02NjUuYyBiL2RyaXZlcnMvaHdtb24vc21tNjY1 LmMKPiBpbmRleCA4YzRlZDcyZTVkNjguLmMzNmJkYmU0MjNkZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2h3bW9uL3NtbTY2NS5jCj4gKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwo+IEBAIC02 NzEsMTIgKzY3MSwxMSBAQCBzdGF0aWMgaW50IHNtbTY2NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBzbW02NjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIHNtbTY2NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHNtbTY2NV9kYXRhICpkYXRhID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2 aWNlKGRhdGEtPmNtZHJlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzbW02NjVfaWRbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi90cHMyMzg2MS5jIGIvZHJpdmVycy9od21vbi90cHMy Mzg2MS5jCj4gaW5kZXggOGJkNjQzNWMxM2U4Li45Y2Y2OTMyODcyMzUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9od21vbi90cHMyMzg2MS5jCj4gKysrIGIvZHJpdmVycy9od21vbi90cHMyMzg2MS5j Cj4gQEAgLTU4NCwxMyArNTg0LDExIEBAIHN0YXRpYyBpbnQgdHBzMjM4NjFfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHRwczIzODYxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCB0cHMyMzg2MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRwczIzODYxX2RhdGEgKmRhdGEg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZGF0YS0+ZGVidWdmc19kaXIpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgX19tYXliZV91bnVzZWQgdHBzMjM4NjFfb2ZfbWF0Y2hbXQo+ID0gewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYyBiL2RyaXZlcnMvaHdtb24vdzgzNzgxZC5jCj4g aW5kZXggYjM1Nzk3MjEyNjVmLi41NWM3OGUxMmJiYmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9o d21vbi93ODM3ODFkLmMKPiArKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYwo+IEBAIC0xMjM5 LDcgKzEyMzksNyBAQCBzdGF0aWMgaW50IHc4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQKPiArc3RhdGljIHZvaWQKPiDCoHc4Mzc4MWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3ODM3ODFkX2RhdGEg KmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiBAQCAtMTI1MCw4ICsxMjUwLDYg QEAgdzgzNzgxZF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoZGF0YS0+bG03NVswXSk7Cj4gwqDCoMKg wqDCoMKgwqDCoGkyY191bnJlZ2lzdGVyX2RldmljZShkYXRhLT5sbTc1WzFdKTsKPiAtCj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwo+ IGluZGV4IDgwYTlhNzhkN2NlOS4uNWZlNWM5Mzg1NmFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv aHdtb24vdzgzNzkxZC5jCj4gKysrIGIvZHJpdmVycy9od21vbi93ODM3OTFkLmMKPiBAQCAtMzE1 LDcgKzMxNSw3IEBAIHN0cnVjdCB3ODM3OTFkX2RhdGEgewo+IMKgc3RhdGljIGludCB3ODM3OTFk X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+IMKgc3RhdGljIGludCB3ODM3OTFk X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5m byk7Cj4gLXN0YXRpYyBpbnQgdzgzNzkxZF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCk7Cj4gK3N0YXRpYyB2b2lkIHc4Mzc5MWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpOwo+IMKgCj4gwqBzdGF0aWMgaW50IHc4Mzc5MWRfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LCB1OCByZWcpOwo+IMKgc3RhdGljIGludCB3ODM3OTFkX3dyaXRlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQsIHU4IHJlZywgdTgKPiB2YWx1ZSk7Cj4gQEAgLTE0MDUsMTQgKzE0MDUs MTIgQEAgc3RhdGljIGludCB3ODM3OTFkX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHc4Mzc5MWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IHc4Mzc5MWRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB3ODM3OTFkX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBod21vbl9kZXZpY2VfdW5yZWdpc3Rlcihk YXRhLT5od21vbl9kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBzeXNmc19yZW1vdmVfZ3JvdXAoJmNs aWVudC0+ZGV2LmtvYmosICZ3ODM3OTFkX2dyb3VwKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHc4Mzc5MWRfaW5pdF9jbGllbnQoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3 OTJkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwo+IGluZGV4IDMxYTFjZGMzMDg3Ny4uMmVl OGVlNGYwZjFjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jCj4gKysrIGIv ZHJpdmVycy9od21vbi93ODM3OTJkLmMKPiBAQCAtMjg2LDcgKzI4Niw3IEBAIHN0cnVjdCB3ODM3 OTJkX2RhdGEgewo+IMKgc3RhdGljIGludCB3ODM3OTJkX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpOwo+IMKgc3RhdGljIGludCB3ODM3OTJkX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyAqaW5mbyk7Cj4gLXN0YXRpYyBpbnQgdzgzNzky ZF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gK3N0YXRpYyB2b2lkIHc4Mzc5 MmRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOwo+IMKgc3RhdGljIHN0cnVjdCB3 ODM3OTJkX2RhdGEgKnc4Mzc5MmRfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlCj4gKmRldik7 Cj4gwqAKPiDCoCNpZmRlZiBERUJVRwo+IEBAIC0xNDI5LDcgKzE0MjksNyBAQCB3ODM3OTJkX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBl cnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludAo+ICtzdGF0aWMgdm9pZAo+IMKgdzgzNzkyZF9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHc4Mzc5MmRfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IEBAIC0xNDQwLDggKzE0NDAsNiBAQCB3ODM3OTJkX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3ODM3 OTJkX2dyb3VwX2Zhbik7IGkrKykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5 c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdzgzNzky ZF9ncm91cF9mYW5baV0pOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTMuYyBi L2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKPiBpbmRleCAwYTY1ZDE2NGM4ZjAuLmRhZWFhZGVkNmI3 NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCj4gKysrIGIvZHJpdmVycy9o d21vbi93ODM3OTMuYwo+IEBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGludCB3ODM3OTNfd3Jp dGVfdmFsdWUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LCB1MTYgcmVnLCB1OCB2YWx1ZSk7 Cj4gwqBzdGF0aWMgaW50IHc4Mzc5M19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsK PiDCoHN0YXRpYyBpbnQgdzgzNzkzX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg aTJjX2JvYXJkX2luZm8gKmluZm8pOwo+IC1zdGF0aWMgaW50IHc4Mzc5M19yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gK3N0YXRpYyB2b2lkIHc4Mzc5M19yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqBzdGF0aWMgdm9pZCB3ODM3OTNfaW5pdF9jbGllbnQo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqBzdGF0aWMgdm9pZCB3ODM3OTNfdXBkYXRl X25vbnZvbGF0aWxlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gwqBzdGF0aWMgc3RydWN0IHc4Mzc5 M19kYXRhICp3ODM3OTNfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+IEBAIC0x NDk1LDcgKzE0OTUsNyBAQCBzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHdhdGNoZG9nX25v dGlmaWVyCj4gPSB7Cj4gwqAgKiBJbml0IC8gcmVtb3ZlIHJvdXRpbmVzCj4gwqAgKi8KPiDCoAo+ IC1zdGF0aWMgaW50IHc4Mzc5M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgdzgzNzkzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdzgzNzkzX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2ID0g JmNsaWVudC0+ZGV2Owo+IEBAIC0xNTU0LDggKzE1NTQsNiBAQCBzdGF0aWMgaW50IHc4Mzc5M19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtdXRl eF9sb2NrKCZ3YXRjaGRvZ19kYXRhX211dGV4KTsKPiDCoMKgwqDCoMKgwqDCoMKga3JlZl9wdXQo JmRhdGEtPmtyZWYsIHc4Mzc5M19yZWxlYXNlX3Jlc291cmNlcyk7Cj4gwqDCoMKgwqDCoMKgwqDC oG11dGV4X3VubG9jaygmd2F0Y2hkb2dfZGF0YV9tdXRleCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvaHdtb24vdzgzNzk1LmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCj4gaW5kZXggNDViMTJj NDI4N2RmLi5iMTcwY2RmM2MyYmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi93ODM3OTUu Ywo+ICsrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzk1LmMKPiBAQCAtMjIzNSwxNCArMjIzNSwxMiBA QCBzdGF0aWMgaW50IHc4Mzc5NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB3ODM3 OTVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHc4Mzc5 NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHc4Mzc5NV9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdt b25fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdzgzNzk1X2hhbmRsZV9maWxlcygmY2xpZW50LT5k ZXYsCj4gZGV2aWNlX3JlbW92ZV9maWxlX3dyYXBwZXIpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgz bDc4NXRzLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCj4gaW5kZXggYTQxZjk4OWQ2NmUy Li45OWY2ODM1ODM3OGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYwo+ ICsrKyBiL2RyaXZlcnMvaHdtb24vdzgzbDc4NXRzLmMKPiBAQCAtNjUsNyArNjUsNyBAQCBzdGF0 aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyAweDJlLAo+IEkyQ19DTElF TlRfRU5EIH07Cj4gwqBzdGF0aWMgaW50IHc4M2w3ODV0c19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KTsKPiDCoHN0YXRpYyBpbnQgdzgzbDc4NXRzX2RldGVjdChzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gKmluZm8pOwo+IC1zdGF0aWMgaW50 IHc4M2w3ODV0c19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gK3N0YXRpYyB2 b2lkIHc4M2w3ODV0c19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqBzdGF0 aWMgdTggdzgzbDc4NXRzX3JlYWRfdmFsdWUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTgg cmVnLCB1OAo+IGRlZnZhbCk7Cj4gwqBzdGF0aWMgc3RydWN0IHc4M2w3ODV0c19kYXRhICp3ODNs Nzg1dHNfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlCj4gKmRldik7Cj4gwqAKPiBAQCAtMjAz LDcgKzIwMyw3IEBAIHN0YXRpYyBpbnQgdzgzbDc4NXRzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgaW50IHc4M2w3ODV0c19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgdzgzbDc4NXRzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKmRhdGEgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0yMTIsOCArMjEyLDYgQEAgc3RhdGlj IGludCB3ODNsNzg1dHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzZW5zb3Jf ZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIpOwo+IMKgwqDCoMKgwqDCoMKgwqBkZXZpY2Vf cmVtb3ZlX2ZpbGUoJmNsaWVudC0+ZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9tYXguZGV2X2F0 dHIpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IHU4IHc4M2w3ODV0c19yZWFkX3ZhbHVlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHJl ZywgdTgKPiBkZWZ2YWwpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2Uu YyBiL2RyaXZlcnMvaTJjL2kyYy1jb3JlLQo+IGJhc2UuYwo+IGluZGV4IDhhZTQ3ZTBiYmQ2Ny4u NjhmYzY2YTQyNGVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYwo+ ICsrKyBiL2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYwo+IEBAIC01OTksMTMgKzU5OSw5IEBA IHN0YXRpYyB2b2lkIGkyY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoGRyaXZlciA9IHRvX2kyY19kcml2ZXIoZGV2LT5kcml2ZXIpOwo+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoZHJpdmVyLT5yZW1vdmUpIHsKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaW50IHN0YXR1czsKPiAtCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZXZfZGJnKGRldiwgInJlbW92ZVxuIik7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3RhdHVzID0gZHJpdmVyLT5yZW1vdmUoY2xpZW50KTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0YXR1cykKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl93YXJuKGRldiwgInJlbW92ZSBmYWlsZWQg KCVwZSksIHdpbGwgYmUKPiBpZ25vcmVkXG4iLCBFUlJfUFRSKHN0YXR1cykpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcml2ZXItPnJlbW92ZShjbGllbnQpOwo+IMKgwqDCoMKg wqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZGV2cmVzX3JlbGVhc2VfZ3JvdXAoJmNs aWVudC0+ZGV2LCBjbGllbnQtPmRldnJlc19ncm91cF9pZCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvaTJjL2kyYy1zbGF2ZS1lZXByb20uYyBiL2RyaXZlcnMvaTJjL2kyYy1zbGF2ZS0KPiBlZXBy b20uYwo+IGluZGV4IDVjN2FlNDIxY2FjZi4uNGFiYzJkOTE5ODgxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvaTJjL2kyYy1zbGF2ZS1lZXByb20uYwo+ICsrKyBiL2RyaXZlcnMvaTJjL2kyYy1zbGF2 ZS1lZXByb20uYwo+IEBAIC0xODEsMTQgKzE4MSwxMiBAQCBzdGF0aWMgaW50IGkyY19zbGF2ZV9l ZXByb21fcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJj X2RlCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgaW50 IGkyY19zbGF2ZV9lZXByb21fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIGkyY19zbGF2ZV9lZXByb21fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBlZXByb21fZGF0YSAqZWVwcm9tID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3Ns YXZlX3VucmVnaXN0ZXIoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2Jp bl9maWxlKCZjbGllbnQtPmRldi5rb2JqLCAmZWVwcm9tLT5iaW4pOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2 aWNlX2lkIGkyY19zbGF2ZV9lZXByb21faWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9p MmMvaTJjLXNsYXZlLXRlc3R1bml0LmMgYi9kcml2ZXJzL2kyYy9pMmMtCj4gc2xhdmUtdGVzdHVu aXQuYwo+IGluZGV4IDU2ZGFlMDhkZmQ0OC4uNzVlZTdlYmRiNjE0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvaTJjL2kyYy1zbGF2ZS10ZXN0dW5pdC5jCj4gKysrIGIvZHJpdmVycy9pMmMvaTJjLXNs YXZlLXRlc3R1bml0LmMKPiBAQCAtMTUzLDEzICsxNTMsMTIgQEAgc3RhdGljIGludCBpMmNfc2xh dmVfdGVzdHVuaXRfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gaTJjX3NsYXZlX3JlZ2lzdGVyKGNsaWVudCwKPiBpMmNfc2xhdmVfdGVz dHVuaXRfc2xhdmVfY2IpOwo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgaW50IGkyY19zbGF2ZV90ZXN0 dW5pdF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaTJj X3NsYXZlX3Rlc3R1bml0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGVzdHVuaXRfZGF0YSAqdHUgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBjYW5jZWxfZGVsYXllZF93b3Jr X3N5bmMoJnR1LT53b3JrZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfc2xhdmVfdW5yZWdpc3Rl cihjbGllbnQpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgaTJjX3NsYXZlX3Rlc3R1bml0X2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2kyYy1zbWJ1cy5jIGIvZHJpdmVycy9pMmMvaTJj LXNtYnVzLmMKPiBpbmRleCA3NzUzMzI5NDVhZDAuLmIwZjFkYTdlYzBmMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2kyYy9pMmMtc21idXMuYwo+ICsrKyBiL2RyaXZlcnMvaTJjL2kyYy1zbWJ1cy5j Cj4gQEAgLTE1MywxMiArMTUzLDExIEBAIHN0YXRpYyBpbnQgc21iYWxlcnRfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqYXJhLAo+IMKgfQo+IMKgCj4gwqAvKiBJUlEgYW5kIG1lbW9yeSByZXNv dXJjZXMgYXJlIG1hbmFnZWQgc28gdGhleSBhcmUgZnJlZWQKPiBhdXRvbWF0aWNhbGx5ICovCj4g LXN0YXRpYyBpbnQgc21iYWxlcnRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICphcmEpCj4gK3N0 YXRpYyB2b2lkIHNtYmFsZXJ0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqYXJhKQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTJjX3NtYnVzX2FsZXJ0ICphbGVydCA9IGkyY19nZXRf Y2xpZW50ZGF0YShhcmEpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGNhbmNlbF93b3JrX3N5bmMo JmFsZXJ0LT5hbGVydCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzbWJhbGVydF9pZHNbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1sdGM0MzA2LmMKPiBiL2RyaXZl cnMvaTJjL211eGVzL2kyYy1tdXgtbHRjNDMwNi5jCj4gaW5kZXggNzA0ZjFlNTBmNmY0Li43MDgz NTgyNTA4M2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1sdGM0MzA2 LmMKPiArKysgYi9kcml2ZXJzL2kyYy9tdXhlcy9pMmMtbXV4LWx0YzQzMDYuYwo+IEBAIC0yOTQs MTMgKzI5NCwxMSBAQCBzdGF0aWMgaW50IGx0YzQzMDZfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGx0YzQzMDZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIGx0YzQzMDZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpMmNfbXV4X2NvcmUgKm11eGMgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfbXV4X2RlbF9hZGFwdGVy cyhtdXhjKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MzA2X2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5NTQxLmMKPiBiL2RyaXZlcnMvaTJjL211eGVz L2kyYy1tdXgtcGNhOTU0MS5jCj4gaW5kZXggNmRhZWM4ZDNkMzMxLi5lYTgzZGU3OGY1MmQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5NTQxLmMKPiArKysgYi9k cml2ZXJzL2kyYy9tdXhlcy9pMmMtbXV4LXBjYTk1NDEuYwo+IEBAIC0zMjUsMTIgKzMyNSwxMSBA QCBzdGF0aWMgaW50IHBjYTk1NDFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHBjYTk1 NDFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHBjYTk1 NDFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBpMmNfbXV4X2NvcmUgKm11eGMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfbXV4X2RlbF9hZGFwdGVycyhtdXhjKTsKPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpMmNf ZHJpdmVyIHBjYTk1NDFfZHJpdmVyID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9tdXhl cy9pMmMtbXV4LXBjYTk1NHguYwo+IGIvZHJpdmVycy9pMmMvbXV4ZXMvaTJjLW11eC1wY2E5NTR4 LmMKPiBpbmRleCA0YWQ2NjU3NTdkZDguLmE1ZjQ1OGI2MzVkZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2kyYy9tdXhlcy9pMmMtbXV4LXBjYTk1NHguYwo+ICsrKyBiL2RyaXZlcnMvaTJjL211eGVz L2kyYy1tdXgtcGNhOTU0eC5jCj4gQEAgLTUyMSwxNCArNTIxLDEzIEBAIHN0YXRpYyBpbnQgcGNh OTU0eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBwY2E5NTR4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBwY2E5NTR4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTJj X211eF9jb3JlICptdXhjID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgZGV2aWNlX3JlbW92ZV9maWxlKCZjbGllbnQtPmRldiwgJmRldl9hdHRyX2lk bGVfc3RhdGUpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBjYTk1NHhfY2xlYW51cChtdXhjKTsK PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19Q TV9TTEVFUAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hY2NlbC9ibWExODAuYyBiL2RyaXZl cnMvaWlvL2FjY2VsL2JtYTE4MC5jCj4gaW5kZXggOWM5ZTk4NTc4NjY3Li5kMDNmYzM0MDBmOTQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmMKPiArKysgYi9kcml2ZXJz L2lpby9hY2NlbC9ibWExODAuYwo+IEBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMgaW50IGJt YTE4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBibWExODBfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJtYTE4MF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19k ZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgYm1hMTgwX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBA IC0xMDYyLDggKzEwNjIsNiBAQCBzdGF0aWMgaW50IGJtYTE4MF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRhdGEtPm11 dGV4KTsKPiDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+dmRkaW9fc3Vw cGx5KTsKPiDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+dmRkX3N1cHBs eSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg aW50IGJtYTE4MF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vYWNjZWwvYm1hNDAwX2kyYy5jCj4gYi9kcml2ZXJzL2lpby9hY2NlbC9ibWE0MDBf aTJjLmMKPiBpbmRleCBkYTEwNGZmZDNmZTAuLjkwYzk5YWI4YzhmMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2lpby9hY2NlbC9ibWE0MDBfaTJjLmMKPiArKysgYi9kcml2ZXJzL2lpby9hY2NlbC9i bWE0MDBfaTJjLmMKPiBAQCAtMjcsMTEgKzI3LDkgQEAgc3RhdGljIGludCBibWE0MDBfaTJjX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IGJtYTQwMF9wcm9iZSgmY2xpZW50LT5kZXYsIHJlZ21hcCwgaWQtPm5hbWUpOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgYm1hNDAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgYm1hNDAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYm1hNDAwX3JlbW92ZSgmY2xpZW50LT5kZXYp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGJtYTQwMF9pMmNfaWRzW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaWlvL2FjY2VsL2JtYzE1MC1hY2NlbC1pMmMuYwo+IGIvZHJpdmVycy9paW8v YWNjZWwvYm1jMTUwLWFjY2VsLWkyYy5jCj4gaW5kZXggZGZmNGQ3ZGQxMDFjLi5iZThjYzU5OGI4 OGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vYWNjZWwvYm1jMTUwLWFjY2VsLWkyYy5jCj4g KysrIGIvZHJpdmVycy9paW8vYWNjZWwvYm1jMTUwLWFjY2VsLWkyYy5jCj4gQEAgLTIwOSwxMyAr MjA5LDExIEBAIHN0YXRpYyBpbnQgYm1jMTUwX2FjY2VsX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBibWMxNTBfYWNjZWxfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGJtYzE1MF9hY2NlbF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYm1jMTUwX2FjcGlfZHVhbF9hY2NlbF9yZW1vdmUo Y2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBibWMxNTBfYWNjZWxfY29yZV9yZW1vdmUo JmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgYm1jMTUwX2FjY2VsX2FjcGlf bWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwva3hjamstMTAxMy5j Cj4gYi9kcml2ZXJzL2lpby9hY2NlbC9reGNqay0xMDEzLmMKPiBpbmRleCA3NDhiMzVjMmYwYzMu Ljk0ZjdiNmFjNWM4NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9hY2NlbC9reGNqay0xMDEz LmMKPiArKysgYi9kcml2ZXJzL2lpby9hY2NlbC9reGNqay0xMDEzLmMKPiBAQCAtMTYxMSw3ICsx NjExLDcgQEAgc3RhdGljIGludCBreGNqazEwMTNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQga3hjamsxMDEzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBreGNqazEwMTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGt4Y2prMTAxM19kYXRh ICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtMTYzMCw4ICsxNjMwLDYgQEAgc3Rh dGljIGludCBreGNqazEwMTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmZGF0YS0+bXV0ZXgpOwo+IMKgwqDCoMKgwqDCoMKg wqBreGNqazEwMTNfc2V0X21vZGUoZGF0YSwgU1RBTkRCWSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11 dGV4X3VubG9jaygmZGF0YS0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2lpby9hY2NlbC9reHNkOS1pMmMuYyBiL2RyaXZlcnMvaWlvL2FjY2VsL2t4c2Q5LQo+IGky Yy5jCj4gaW5kZXggYzhkYzUyZjExMDM3Li44NmMwZDcwZDBkYTcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vYWNjZWwva3hzZDktaTJjLmMKPiArKysgYi9kcml2ZXJzL2lpby9hY2NlbC9reHNk OS1pMmMuYwo+IEBAIC0zMiwxMSArMzIsOSBAQCBzdGF0aWMgaW50IGt4c2Q5X2kyY19wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpMmMtPm5hbWUpOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQga3hzZDlfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBreHNkOV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGt4c2Q5X2NvbW1vbl9yZW1vdmUoJmNsaWVudC0+ ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGt4c2Q5X29mX21hdGNoW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jIGIvZHJpdmVycy9paW8vYWNjZWwvbWMz MjMwLmMKPiBpbmRleCBjMTVkMTZlN2YxZGEuLjI0NjIwMDBlMDUxOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2lpby9hY2NlbC9tYzMyMzAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL21jMzIz MC5jCj4gQEAgLTE1MSwxNSArMTUxLDEzIEBAIHN0YXRpYyBpbnQgbWMzMjMwX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IG1jMzIzMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgbWMzMjMwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX2Rl dmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbWMzMjMw X3NldF9vcGNvbihpaW9fcHJpdihpbmRpb19kZXYpLAo+IE1DMzIzMF9NT0RFX09QQ09OX1NUQU5E QlkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGludCBtYzMyMzBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaWlvL2FjY2VsL21tYTc0NTVfaTJjLmMKPiBiL2RyaXZlcnMvaWlvL2FjY2VsL21tYTc0 NTVfaTJjLmMKPiBpbmRleCBhM2I4NGU4YTNlYTguLmM2M2IzMjFiMDFjZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9hY2NlbC9tbWE3NDU1X2kyYy5jCj4gKysrIGIvZHJpdmVycy9paW8vYWNj ZWwvbW1hNzQ1NV9pMmMuYwo+IEBAIC0yNiwxMSArMjYsOSBAQCBzdGF0aWMgaW50IG1tYTc0NTVf aTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIG1tYTc0NTVfY29yZV9wcm9iZSgmaTJjLT5kZXYsIHJlZ21hcCwgbmFtZSk7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBtbWE3NDU1X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmky YykKPiArc3RhdGljIHZvaWQgbW1hNzQ1NV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoG1tYTc0NTVfY29yZV9yZW1vdmUoJmkyYy0+ZGV2 KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBj b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtbWE3NDU1X2kyY19pZHNbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vYWNjZWwvbW1hNzY2MC5jCj4gYi9kcml2ZXJzL2lpby9hY2NlbC9t bWE3NjYwLmMKPiBpbmRleCAxMTJhNWEzM2MyOWYuLmFkMmFhYzBlYzFkNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9hY2NlbC9tbWE3NjYwLmMKPiArKysgYi9kcml2ZXJzL2lpby9hY2NlbC9t bWE3NjYwLmMKPiBAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBpbnQgbW1hNzY2MF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtbWE3NjYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtbWE3NjYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBy ZXQ7Cj4gQEAgLTIxOCw4ICsyMTgsNiBAQCBzdGF0aWMgaW50IG1tYTc2NjBfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl93YXJuKCZjbGllbnQtPmRldiwgIkZhaWxl ZCB0byBwdXQgZGV2aWNlIGluCj4gc3RhbmQtYnkgbW9kZSAoJXBlKSwgaWdub3JpbmdcbiIsCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIo cmV0KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgaW50IG1tYTc2NjBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaWlvL2FjY2VsL21tYTg0NTIuYwo+IGIvZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1 Mi5jCj4gaW5kZXggYzdkOWNhOTZkYmFhLi4zYmEyOGMyZmY2OGEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jCj4gKysrIGIvZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1 Mi5jCj4gQEAgLTE3MzUsNyArMTczNSw3IEBAIHN0YXRpYyBpbnQgbW1hODQ1Ml9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBtbWE4NDUyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtbWE4NDUyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBt bWE4NDUyX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC0xNzUxLDggKzE3 NTEsNiBAQCBzdGF0aWMgaW50IG1tYTg0NTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfZGlzYWJsZShkYXRhLT52ZGRp b19yZWcpOwo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfZGlzYWJsZShkYXRhLT52ZGRfcmVn KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBD T05GSUdfUE0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwvbW1hOTU1MS5jCj4gYi9k cml2ZXJzL2lpby9hY2NlbC9tbWE5NTUxLmMKPiBpbmRleCAxMjNjZGJiYjI2NWMuLmY3YTc5M2Y0 YThlMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9hY2NlbC9tbWE5NTUxLmMKPiArKysgYi9k cml2ZXJzL2lpby9hY2NlbC9tbWE5NTUxLmMKPiBAQCAtNTA5LDcgKzUwOSw3IEBAIHN0YXRpYyBp bnQgbW1hOTU1MV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtbWE5NTUxX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtbWE5NTUxX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBtbWE5NTUxX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19k ZXYpOwo+IEBAIC01MjIsOCArNTIyLDYgQEAgc3RhdGljIGludCBtbWE5NTUxX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRh dGEtPm11dGV4KTsKPiDCoMKgwqDCoMKgwqDCoMKgbW1hOTU1MV9zZXRfZGV2aWNlX3N0YXRlKGRh dGEtPmNsaWVudCwgZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRhdGEt Pm11dGV4KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBpbnQgbW1hOTU1MV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hY2NlbC9tbWE5NTUzLmMKPiBiL2RyaXZlcnMvaWlvL2Fj Y2VsL21tYTk1NTMuYwo+IGluZGV4IDA5ZGY1OGQ0YmUzMy4uMmRhMGUwMDViMTNlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaWlvL2FjY2VsL21tYTk1NTMuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2Fj Y2VsL21tYTk1NTMuYwo+IEBAIC0xMTQ4LDcgKzExNDgsNyBAQCBzdGF0aWMgaW50IG1tYTk1NTNf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbW1hOTU1M19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbW1hOTU1M19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYg KmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbW1hOTU1M19kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAt MTE2MSw4ICsxMTYxLDYgQEAgc3RhdGljIGludCBtbWE5NTUzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEtPm11dGV4 KTsKPiDCoMKgwqDCoMKgwqDCoMKgbW1hOTU1MV9zZXRfZGV2aWNlX3N0YXRlKGRhdGEtPmNsaWVu dCwgZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRhdGEtPm11dGV4KTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQg bW1hOTU1M19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2lpby9hY2NlbC9zdGs4MzEyLmMKPiBiL2RyaXZlcnMvaWlvL2FjY2VsL3N0azgz MTIuYwo+IGluZGV4IGNlY2EyODkxMzM1NS4uN2IxZDZmYjY5MmIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvaWlvL2FjY2VsL3N0azgzMTIuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL3N0azgz MTIuYwo+IEBAIC01OTcsNyArNTk3LDcgQEAgc3RhdGljIGludCBzdGs4MzEyX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IHN0azgzMTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0azgzMTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN0 azgzMTJfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTYwOSw4ICs2MDks NiBAQCBzdGF0aWMgaW50IHN0azgzMTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlpb190cmlnZ2VyX3VucmVnaXN0 ZXIoZGF0YS0+ZHJlYWR5X3RyaWcpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHN0azgzMTJfc2V0 X21vZGUoZGF0YSwgU1RLODMxMl9NT0RFX1NUQU5EQlkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBzdGs4MzEyX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hY2NlbC9zdGs4YmE1MC5j Cj4gYi9kcml2ZXJzL2lpby9hY2NlbC9zdGs4YmE1MC5jCj4gaW5kZXggN2Q1OWVmYjQxZTIyLi4y ZjVlNGFiMmE2ZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vYWNjZWwvc3RrOGJhNTAuYwo+ ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL3N0azhiYTUwLmMKPiBAQCAtNDkwLDcgKzQ5MCw3IEBA IHN0YXRpYyBpbnQgc3RrOGJhNTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc3Rr OGJhNTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0 azhiYTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdGs4YmE1MF9kYXRhICpkYXRhID0gaWlv X3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtNTAyLDggKzUwMiw2IEBAIHN0YXRpYyBpbnQgc3RrOGJh NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlpb190cmlnZ2VyX3VucmVnaXN0ZXIoZGF0YS0+ZHJlYWR5X3RyaWcp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHN0azhiYTUwX3NldF9wb3dlcihkYXRhLCBTVEs4QkE1 MF9NT0RFX1NVU1BFTkQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGludCBzdGs4YmE1MF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL2FkNzk5eC5jIGIvZHJpdmVycy9paW8vYWRjL2Fk Nzk5eC5jCj4gaW5kZXggMjIwMjI4YzM3NWQzLi43NDZiZjlhMDFjMjUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9paW8vYWRjL2FkNzk5eC5jCj4gKysrIGIvZHJpdmVycy9paW8vYWRjL2FkNzk5eC5j Cj4gQEAgLTg4MCw3ICs4ODAsNyBAQCBzdGF0aWMgaW50IGFkNzk5eF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBhZDc5OXhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIGFkNzk5eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWQ3OTl4X3N0 YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTg5Miw4ICs4OTIsNiBAQCBzdGF0 aWMgaW50IGFkNzk5eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoc3QtPnZyZWYpOwo+ IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfZGlzYWJsZShzdC0+cmVnKTsKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoc3QtPnJ4X2J1Zik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGFkNzk5eF9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL2luYTJ4eC1h ZGMuYyBiL2RyaXZlcnMvaWlvL2FkYy9pbmEyeHgtCj4gYWRjLmMKPiBpbmRleCAyNDBlNmM0MjA3 MDEuLjkxMGU3ZTk2NWZjNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9hZGMvaW5hMnh4LWFk Yy5jCj4gKysrIGIvZHJpdmVycy9paW8vYWRjL2luYTJ4eC1hZGMuYwo+IEBAIC0xMDM0LDcgKzEw MzQsNyBAQCBzdGF0aWMgaW50IGluYTJ4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rl dik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpbmEyeHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGluYTJ4eF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlv X2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaW5hMnh4X2NoaXBfaW5mbyAqY2hpcCA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTEw NDgsOCArMTA0OCw2IEBAIHN0YXRpYyBpbnQgaW5hMnh4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZXZfd2FybigmY2xpZW50LT5kZXYsICJGYWlsZWQgdG8gcG93ZXIg ZG93biBkZXZpY2UKPiAoJXBlKVxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRVJSX1BUUihyZXQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBp bmEyeHhfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL2x0YzI0OTcuYyBi L2RyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMKPiBpbmRleCAxYWRkZGY1YTg4YTkuLmJlNTdmMTE1 Nzc5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9hZGMvbHRjMjQ5Ny5jCj4gKysrIGIvZHJp dmVycy9paW8vYWRjL2x0YzI0OTcuYwo+IEBAIC03NCwxMyArNzQsMTEgQEAgc3RhdGljIGludCBs dGMyNDk3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGx0YzI0OTdjb3JlX3Byb2JlKGRldiwgaW5kaW9fZGV2KTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGx0YzI0OTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGx0YzI0OTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBsdGMyNDk3Y29yZV9y ZW1vdmUoaW5kaW9fZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBsdGMyNDk3X2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy90aS1hZHMxMDE1LmMgYi9kcml2ZXJzL2lp by9hZGMvdGktCj4gYWRzMTAxNS5jCj4gaW5kZXggZTNkZmMxNTVmYmUyLi44YmNlYmE2OTQwMjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vYWRjL3RpLWFkczEwMTUuYwo+ICsrKyBiL2RyaXZl cnMvaWlvL2FkYy90aS1hZHMxMDE1LmMKPiBAQCAtMTA5NCw3ICsxMDk0LDcgQEAgc3RhdGljIGlu dCBhZHMxMDE1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhZHMxMDE1X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZHMxMDE1X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBhZHMxMDE1X2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYp Owo+IEBAIC0xMTEwLDggKzExMTAsNiBAQCBzdGF0aWMgaW50IGFkczEwMTVfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl93YXJuKCZjbGllbnQtPmRldiwgIkZhaWxl ZCB0byBwb3dlciBkb3duCj4gKCVwZSlcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIocmV0KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaWlvL2NoZW1pY2FsL2F0bGFzLXNlbnNvci5jCj4gYi9kcml2ZXJzL2lpby9jaGVt aWNhbC9hdGxhcy1zZW5zb3IuYwo+IGluZGV4IDgzNzhjMDBmYTJmZi4uN2NhYzc3YTkzMWM3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2NoZW1pY2FsL2F0bGFzLXNlbnNvci5jCj4gKysrIGIv ZHJpdmVycy9paW8vY2hlbWljYWwvYXRsYXMtc2Vuc29yLmMKPiBAQCAtNzIyLDcgKzcyMiw3IEBA IHN0YXRpYyBpbnQgYXRsYXNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGF0bGFzX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhdGxhc19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXRsYXNfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rl dik7Cj4gQEAgLTczOSw4ICs3MzksNiBAQCBzdGF0aWMgaW50IGF0bGFzX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0 byBwb3dlciBkb3duIGRldmljZQo+ICglcGUpXG4iLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVSUl9QVFIocmV0KSk7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IGF0bGFzX3J1bnRpbWVfc3Vz cGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2NoZW1p Y2FsL2NjczgxMS5jCj4gYi9kcml2ZXJzL2lpby9jaGVtaWNhbC9jY3M4MTEuYwo+IGluZGV4IDU2 MDE4M2VmYjM2Zi4uYmE0MDQ1ZTIwMzAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2NoZW1p Y2FsL2NjczgxMS5jCj4gKysrIGIvZHJpdmVycy9paW8vY2hlbWljYWwvY2NzODExLmMKPiBAQCAt NTMyLDcgKzUzMiw3IEBAIHN0YXRpYyBpbnQgY2NzODExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgaW50IGNjczgxMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgY2NzODExX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjY3M4MTFfZGF0YSAqZGF0 YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTU0OCw4ICs1NDgsNiBAQCBzdGF0aWMgaW50 IGNjczgxMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3dhcm4o JmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHBvd2VyIGRvd24gZGV2aWNlCj4gKCVwZSlcbiIsCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVSUl9QVFIo cmV0KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgY2NzODExX2lkW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaWlvL2NoZW1pY2FsL3NncDMwLmMKPiBiL2RyaXZlcnMvaWlvL2NoZW1pY2Fs L3NncDMwLmMKPiBpbmRleCAyMzQzZDQ0NDYwNGQuLmUyYzEzYzc4YzdlMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9jaGVtaWNhbC9zZ3AzMC5jCj4gKysrIGIvZHJpdmVycy9paW8vY2hlbWlj YWwvc2dwMzAuYwo+IEBAIC01NTIsMTUgKzU1MiwxMyBAQCBzdGF0aWMgaW50IHNncF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IHNncF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgc2dwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzZ3BfZGF0YSAq ZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGRh dGEtPmlhcV90aHJlYWQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrdGhyZWFk X3N0b3AoZGF0YS0+aWFxX3RocmVhZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc2dwX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2RhYy9hZDUzODAuYyBiL2RyaXZlcnMvaWlv L2RhYy9hZDUzODAuYwo+IGluZGV4IGE0NGM4MzI0MmZiMS4uNjJkN2ZjNTNjN2Y0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaWlvL2RhYy9hZDUzODAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2RhYy9h ZDUzODAuYwo+IEBAIC01NjEsMTEgKzU2MSw5IEBAIHN0YXRpYyBpbnQgYWQ1MzgwX2kyY19wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBhZDUz ODBfcHJvYmUoJmkyYy0+ZGV2LCByZWdtYXAsIGlkLT5kcml2ZXJfZGF0YSwgaWQtCj4gPm5hbWUp Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWQ1MzgwX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgYWQ1MzgwX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYWQ1MzgwX3JlbW92ZSgmaTJjLT5k ZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFkNTM4MF9pMmNfaWRzW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaWlvL2RhYy9hZDU0NDYuYyBiL2RyaXZlcnMvaWlvL2RhYy9hZDU0NDYu Ywo+IGluZGV4IDA5ZTI0Mjk0OWNkMC4uNzMyNDA2NWQzNzgyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvaWlvL2RhYy9hZDU0NDYuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2RhYy9hZDU0NDYuYwo+IEBA IC01NzUsMTEgKzU3NSw5IEBAIHN0YXRpYyBpbnQgYWQ1NDQ2X2kyY19wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmYWQ1NDQ2 X2kyY19jaGlwX2luZm9baWQtPmRyaXZlcl9kYXRhXSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBhZDU0NDZfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9p ZCBhZDU0NDZfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBhZDU0NDZfcmVtb3ZlKCZpMmMtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgYWQ1NDQ2X2kyY19pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2Fk NTU5M3IuYyBiL2RyaXZlcnMvaWlvL2RhYy9hZDU1OTNyLmMKPiBpbmRleCAzNGUxMzE5YTk3MTIu LjkyYmU2NjEwMzRhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9kYWMvYWQ1NTkzci5jCj4g KysrIGIvZHJpdmVycy9paW8vZGFjL2FkNTU5M3IuYwo+IEBAIC05NywxMSArOTcsOSBAQCBzdGF0 aWMgaW50IGFkNTU5M3JfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIGFkNTU5MnJfcHJvYmUoJmkyYy0+ZGV2LCBpZC0+bmFtZSwgJmFk NTU5M3Jfcndfb3BzKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkNTU5M3JfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBhZDU1OTNyX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYWQ1NTky cl9yZW1vdmUoJmkyYy0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhZDU1OTNyX2kyY19p ZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2FkNTY5Ni1pMmMuYyBiL2Ry aXZlcnMvaWlvL2RhYy9hZDU2OTYtCj4gaTJjLmMKPiBpbmRleCA3NjI1MDNjMTkwMWIuLmFhMzZj YmYwMTM3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9kYWMvYWQ1Njk2LWkyYy5jCj4gKysr IGIvZHJpdmVycy9paW8vZGFjL2FkNTY5Ni1pMmMuYwo+IEBAIC02NSwxMSArNjUsOSBAQCBzdGF0 aWMgaW50IGFkNTY4Nl9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjLAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZDU2ODZf aTJjX3dyaXRlLCBhZDU2ODZfaTJjX3JlYWQpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWQ1 Njg2X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgYWQ1 Njg2X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgYWQ1Njg2X3JlbW92ZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFk NTY4Nl9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL2RzNDQyNC5j IGIvZHJpdmVycy9paW8vZGFjL2RzNDQyNC5jCj4gaW5kZXggNWE1ZTk2N2IwYmU0Li5lM2RjZjFl ZmI3ZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vZGFjL2RzNDQyNC5jCj4gKysrIGIvZHJp dmVycy9paW8vZGFjL2RzNDQyNC5jCj4gQEAgLTI4MSwxNSArMjgxLDEzIEBAIHN0YXRpYyBpbnQg ZHM0NDI0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGRzNDQyNF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZHM0NDI0X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBkczQ0MjRfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX2RldmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7Cj4g wqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9kaXNhYmxlKGRhdGEtPnZjY19yZWcpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIGRzNDQyNF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lp by9kYWMvbTYyMzMyLmMgYi9kcml2ZXJzL2lpby9kYWMvbTYyMzMyLmMKPiBpbmRleCAyMmIwMmY1 MGZlNDEuLjVhODEyZjg3OTcwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9kYWMvbTYyMzMy LmMKPiArKysgYi9kcml2ZXJzL2lpby9kYWMvbTYyMzMyLmMKPiBAQCAtMjE4LDcgKzIxOCw3IEBA IHN0YXRpYyBpbnQgbTYyMzMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG02MjMz Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbTYyMzMy X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqAKPiBAQCAtMjI2LDggKzIyNiw2IEBAIHN0YXRpYyBpbnQgbTYyMzMyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlpb19tYXBfYXJyYXlf dW5yZWdpc3RlcihpbmRpb19kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtNjIzMzJfc2V0X3ZhbHVl KGluZGlvX2RldiwgMCwgMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoG02MjMzMl9zZXRfdmFsdWUoaW5k aW9fZGV2LCAwLCAxKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtNjIzMzJfaWRbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vZGFjL21jcDQ3MjUuYyBiL2RyaXZlcnMvaWlvL2RhYy9t Y3A0NzI1LmMKPiBpbmRleCA3ZmNiODYyODg4MjMuLjI5YWIyMTkwNGFjYSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9kYWMvbWNwNDcyNS5jCj4gKysrIGIvZHJpdmVycy9paW8vZGFjL21jcDQ3 MjUuYwo+IEBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGljIGludCBtY3A0NzI1X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IG1jcDQ3MjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIG1jcDQ3MjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1j cDQ3MjVfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTQ5NSw4ICs0OTUs NiBAQCBzdGF0aWMgaW50IG1jcDQ3MjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGRhdGEtPnZyZWZfcmVnKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUoZGF0YS0+dnJlZl9yZWcpOwo+IMKg wqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfZGlzYWJsZShkYXRhLT52ZGRfcmVnKTsKPiAtCj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTJjX2RldmljZV9pZCBtY3A0NzI1X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlv L2RhYy90aS1kYWM1NTcxLmMgYi9kcml2ZXJzL2lpby9kYWMvdGktCj4gZGFjNTU3MS5jCj4gaW5k ZXggNGI2YjA0MDM4ZTk0Li45NmI4ZDgwYjcyYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8v ZGFjL3RpLWRhYzU1NzEuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2RhYy90aS1kYWM1NTcxLmMKPiBA QCAtMzgxLDE1ICszODEsMTMgQEAgc3RhdGljIGludCBkYWM1NTcxX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IGRhYzU1NzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4g K3N0YXRpYyB2b2lkIGRhYzU1NzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoaTJjKTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRhYzU1NzFfZGF0YSAqZGF0 YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX2Rldmlj ZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9kaXNh YmxlKGRhdGEtPnZyZWYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZGFjNTU3MV9vZl9pZFtdID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9neXJvL2JtZzE2MF9pMmMuYwo+IGIvZHJpdmVy cy9paW8vZ3lyby9ibWcxNjBfaTJjLmMKPiBpbmRleCBiM2ZhNDZiZDAyY2IuLjkwOGNjYzM4NTI1 NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9neXJvL2JtZzE2MF9pMmMuYwo+ICsrKyBiL2Ry aXZlcnMvaWlvL2d5cm8vYm1nMTYwX2kyYy5jCj4gQEAgLTMyLDExICszMiw5IEBAIHN0YXRpYyBp bnQgYm1nMTYwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiBibWcxNjBfY29yZV9wcm9iZSgmY2xpZW50LT5kZXYsIHJlZ21hcCwg Y2xpZW50LT5pcnEsCj4gbmFtZSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBibWcxNjBfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBibWcxNjBf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBibWcxNjBfY29yZV9yZW1vdmUoJmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZp Y2VfaWQgYm1nMTYwX2FjcGlfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8v Z3lyby9meGFzMjEwMDJjX2kyYy5jCj4gYi9kcml2ZXJzL2lpby9neXJvL2Z4YXMyMTAwMmNfaTJj LmMKPiBpbmRleCBhNzgwN2ZkOTc0ODMuLjEzYmI1MmM1OTRkMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2lpby9neXJvL2Z4YXMyMTAwMmNfaTJjLmMKPiArKysgYi9kcml2ZXJzL2lpby9neXJvL2Z4 YXMyMTAwMmNfaTJjLmMKPiBAQCAtMzMsMTEgKzMzLDkgQEAgc3RhdGljIGludCBmeGFzMjEwMDJj X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBmeGFzMjEwMDJjX2NvcmVfcHJvYmUoJmkyYy0+ZGV2LCByZWdtYXAsIGkyYy0+aXJxLAo+ IGkyYy0+bmFtZSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBmeGFzMjEwMDJjX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgZnhhczIxMDAyY19pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGZ4 YXMyMTAwMmNfY29yZV9yZW1vdmUoJmkyYy0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBm eGFzMjEwMDJjX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9neXJvL2l0 ZzMyMDBfY29yZS5jCj4gYi9kcml2ZXJzL2lpby9neXJvL2l0ZzMyMDBfY29yZS5jCj4gaW5kZXgg YTdmMWJiYjVmMjg5Li44YjM3NThlM2I5ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vZ3ly by9pdGczMjAwX2NvcmUuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2d5cm8vaXRnMzIwMF9jb3JlLmMK PiBAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyBpbnQgaXRnMzIwMF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBpdGczMjAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBpdGczMjAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMzYwLDggKzM2MCw2IEBAIHN0YXRp YyBpbnQgaXRnMzIwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaXRnMzIwMF9yZW1vdmVfdHJpZ2dlcihpbmRpb19k ZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGl0ZzMyMDBfYnVmZmVyX3VuY29uZmlndXJlKGlu ZGlvX2Rldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGl0ZzMyMDBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2d5cm8vbXB1MzA1MC1pMmMuYwo+IGIvZHJp dmVycy9paW8vZ3lyby9tcHUzMDUwLWkyYy5jCj4gaW5kZXggNWI1ZjU4YmFhZjdmLi40ZDVlNGIw NDc0NWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vZ3lyby9tcHUzMDUwLWkyYy5jCj4gKysr IGIvZHJpdmVycy9paW8vZ3lyby9tcHUzMDUwLWkyYy5jCj4gQEAgLTc4LDcgKzc4LDcgQEAgc3Rh dGljIGludCBtcHUzMDUwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbXB1MzA1 MF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1w dTMwNTBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gZGV2X2dldF9kcnZkYXRhKCZj bGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtcHUzMDUwICptcHUzMDUwID0g aWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtODcsOCArODcsNiBAQCBzdGF0aWMgaW50IG1wdTMw NTBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpMmNfbXV4X2RlbF9hZGFwdGVycyhtcHUzMDUwLT5pMmNtdXgp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1wdTMwNTBfY29tbW9uX3JlbW92ZSgmY2xpZW50LT5k ZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyoKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaGVhbHRoL2FmZTQ0MDQuYwo+IGIvZHJpdmVycy9paW8v aGVhbHRoL2FmZTQ0MDQuYwo+IGluZGV4IDFiYjdkZTYwZjhjYS4uYTg3MzM3NDUzODI0IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2hlYWx0aC9hZmU0NDA0LmMKPiArKysgYi9kcml2ZXJzL2lp by9oZWFsdGgvYWZlNDQwNC5jCj4gQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGF0aWMgaW50IGFmZTQ0 MDRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWZlNDQwNF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWZlNDQwNF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19k ZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgYWZlNDQwNF9kYXRhICphZmUgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBA IC01OTMsOCArNTkzLDYgQEAgc3RhdGljIGludCBhZmU0NDA0X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ3VsYXRvcl9kaXNhYmxl KGFmZS0+cmVndWxhdG9yKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoYWZlLT5kZXYsICJVbmFibGUgdG8gZGlzYWJs ZSByZWd1bGF0b3JcbiIpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFmZTQ0MDRfaWRzW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jCj4gYi9kcml2ZXJz L2lpby9oZWFsdGgvbWF4MzAxMDAuYwo+IGluZGV4IGFkNTcxNzk2NTIyMy4uMmNjYTVlMDUxOWY4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jCj4gKysrIGIvZHJp dmVycy9paW8vaGVhbHRoL21heDMwMTAwLmMKPiBAQCAtNDcxLDE1ICs0NzEsMTMgQEAgc3RhdGlj IGludCBtYXgzMDEwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBtYXgzMDEwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgbWF4MzAxMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heDMw MTAwX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoGlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRpb19kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBt YXgzMDEwMF9zZXRfcG93ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBtYXgzMDEwMF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9oZWFsdGgvbWF4 MzAxMDIuYwo+IGIvZHJpdmVycy9paW8vaGVhbHRoL21heDMwMTAyLmMKPiBpbmRleCBhYmJjZWY1 NjM4MDcuLjQzNzI5OGEyOWYyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9oZWFsdGgvbWF4 MzAxMDIuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMi5jCj4gQEAgLTU5Miwx NSArNTkyLDEzIEBAIHN0YXRpYyBpbnQgbWF4MzAxMDJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gaWlvX2RldmljZV9yZWdpc3Rlcihp bmRpb19kZXYpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbWF4MzAxMDJfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1heDMwMTAyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBtYXgzMDEwMl9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsK PiDCoMKgwqDCoMKgwqDCoMKgbWF4MzAxMDJfc2V0X3Bvd2VyKGRhdGEsIGZhbHNlKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTJjX2RldmljZV9pZCBtYXgzMDEwMl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2lpby9odW1pZGl0eS9oZGMyMDEwLmMKPiBiL2RyaXZlcnMvaWlvL2h1bWlkaXR5L2hkYzIwMTAu Ywo+IGluZGV4IDEzODFkZjQ2MTg3Yy4uZDY4NThjY2IwNTZlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvaWlvL2h1bWlkaXR5L2hkYzIwMTAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2h1bWlkaXR5L2hk YzIwMTAuYwo+IEBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIGludCBoZGMyMDEwX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGlpb19k ZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGhkYzIw MTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGhkYzIw MTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGhkYzIwMTBfZGF0YSAqZGF0YSA9IGlpb19wcml2 KGluZGlvX2Rldik7Cj4gQEAgLTMxOCw4ICszMTgsNiBAQCBzdGF0aWMgaW50IGhkYzIwMTBfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgLyogRGlz YWJsZSBBdXRvbWF0aWMgTWVhc3VyZW1lbnQgTW9kZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAo aGRjMjAxMF91cGRhdGVfZHJkeV9jb25maWcoZGF0YSwgSERDMjAxMF9BTU0sIDApKQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3dhcm4oJmNsaWVudC0+ZGV2LCAiVW5hYmxl IHRvIHJlc3RvcmUgZGVmYXVsdAo+IEFNTVxuIik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgaGRj MjAxMF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X21wdTYwNTAv aW52X21wdV9pMmMuYwo+IGIvZHJpdmVycy9paW8vaW11L2ludl9tcHU2MDUwL2ludl9tcHVfaTJj LmMKPiBpbmRleCAyYWE2NDc3MDRhNzkuLjE0MjU1YTkxOGViMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2lpby9pbXUvaW52X21wdTYwNTAvaW52X21wdV9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvaWlv L2ltdS9pbnZfbXB1NjA1MC9pbnZfbXB1X2kyYy5jCj4gQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0 aWMgaW50IGludl9tcHVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gcmVzdWx0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaW52X21w dV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaW52X21w dV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW52X21wdTYwNTBfc3RhdGUgKnN0ID0gaWlvX3By aXYoaW5kaW9fZGV2KTsKPiBAQCAtMTY2LDggKzE2Niw2IEBAIHN0YXRpYyBpbnQgaW52X21wdV9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaW52X21wdV9hY3BpX2RlbGV0ZV9tdXhfY2xpZW50KGNsaWVudCk7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpMmNfbXV4X2RlbF9hZGFwdGVycyhzdC0+bXV4 Yyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2ltdS9rbXg2MS5jIGIv ZHJpdmVycy9paW8vaW11L2tteDYxLmMKPiBpbmRleCBlYzIzYjFlZTQ3MmIuLmIxMGMwZGNhYzBi YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9pbXUva214NjEuYwo+ICsrKyBiL2RyaXZlcnMv aWlvL2ltdS9rbXg2MS5jCj4gQEAgLTE0MTgsNyArMTQxOCw3IEBAIHN0YXRpYyBpbnQga214NjFf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQga214NjFfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGtteDYxX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qga214NjFfZGF0YSAq ZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTE0MzksOCArMTQz OSw2IEBAIHN0YXRpYyBpbnQga214NjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Cj4gwqDCoMKgwqDC oMKgwqDCoGtteDYxX3NldF9tb2RlKGRhdGEsIEtNWDYxX0FMTF9TVEJZLCBLTVg2MV9BQ0MgfCBL TVg2MV9NQUcsCj4gdHJ1ZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGF0YS0+ bG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgaW50IGtteDYxX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9saWdodC9hcGRzOTMwMC5jCj4gYi9kcml2ZXJzL2lpby9saWdodC9hcGRzOTMw MC5jCj4gaW5kZXggMGY5ZDc3NTk4OTk3Li5iNzBmMjY4MWJjYjMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vbGlnaHQvYXBkczkzMDAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L2FwZHM5 MzAwLmMKPiBAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBpbnQgYXBkczkzMDBfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYXBkczkzMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFwZHM5MzAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBhcGRzOTMwMF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtNDYyLDgg KzQ2Miw2IEBAIHN0YXRpYyBpbnQgYXBkczkzMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgLyogRW5zdXJlIHRoYXQgcG93ZXIgb2ZmIGFuZCBp bnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCAqLwo+IMKgwqDCoMKgwqDCoMKgwqBhcGRzOTMwMF9zZXRf aW50cl9zdGF0ZShkYXRhLCAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgYXBkczkzMDBfc2V0X3Bvd2Vy X3N0YXRlKGRhdGEsIDApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGludCBhcGRzOTMwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbGlnaHQvYXBkczk5NjAuYwo+IGIvZHJpdmVycy9paW8v bGlnaHQvYXBkczk5NjAuYwo+IGluZGV4IDA5YjgzMWY5ZjQwYi4uYjYyYzEzOWJhZjQxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L2FwZHM5OTYwLmMKPiArKysgYi9kcml2ZXJzL2lp by9saWdodC9hcGRzOTk2MC5jCj4gQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHN0YXRpYyBpbnQgYXBk czk5NjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYXBkczk5NjBfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFwZHM5OTYwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBhcGRzOTk2MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2 KTsKPiBAQCAtMTA3Niw4ICsxMDc2LDYgQEAgc3RhdGljIGludCBhcGRzOTk2MF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rp c2FibGUoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3Vz cGVuZGVkKCZjbGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGFwZHM5OTYwX3NldF9wb3dl cm1vZGUoZGF0YSwgMCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2xpZ2h0L2Jo MTc1MC5jIGIvZHJpdmVycy9paW8vbGlnaHQvYmgxNzUwLmMKPiBpbmRleCA0ODQ4NGI5NDAxYjku LjAzNGM0N2VmNmUzMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9saWdodC9iaDE3NTAuYwo+ ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L2JoMTc1MC5jCj4gQEAgLTI2Myw3ICsyNjMsNyBAQCBz dGF0aWMgaW50IGJoMTc1MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBiaDE3NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIGJoMTc1MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYmgxNzUw X2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC0yNzMsOCArMjczLDYgQEAg c3RhdGljIGludCBiaDE3NTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Cj4gwqDCoMKgwqDCoMKgwqDC oGkyY19zbWJ1c193cml0ZV9ieXRlKGNsaWVudCwgQkgxNzUwX1BPV0VSX0RPV04pOwo+IMKgwqDC oMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmRhdGEtPmxvY2spOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBiaDE3 NTBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlv L2xpZ2h0L2JoMTc4MC5jIGIvZHJpdmVycy9paW8vbGlnaHQvYmgxNzgwLmMKPiBpbmRleCBmYzcx NDEzOTAxMTcuLjkwYmNhMzkyYjI2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9saWdodC9i aDE3ODAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L2JoMTc4MC5jCj4gQEAgLTIwMiw3ICsy MDIsNyBAQCBzdGF0aWMgaW50IGJoMTc4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBiaDE3ODBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IGJoMTc4MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShj bGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYmgxNzgwX2RhdGEgKmJoMTc4MCA9IGlp b19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTIxNiw4ICsyMTYsNiBAQCBzdGF0aWMgaW50IGJoMTc4 MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBp ZiAocmV0IDwgMCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoJmNs aWVudC0+ZGV2LCAiZmFpbGVkIHRvIHBvd2VyIG9mZiAoJXBlKVxuIiwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUlJfUFRSKHJldCkpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBiaDE3ODBf cnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9paW8vbGlnaHQvY20zMjMyLmMgYi9kcml2ZXJzL2lpby9saWdodC9jbTMyMzIuYwo+IGluZGV4 IDJjODBhMDUzNWQyYy4uNTIxNGNkMDE0Y2Y4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xp Z2h0L2NtMzIzMi5jCj4gKysrIGIvZHJpdmVycy9paW8vbGlnaHQvY20zMjMyLmMKPiBAQCAtMzU3 LDcgKzM1Nyw3IEBAIHN0YXRpYyBpbnQgY20zMjMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5k aW9fZGV2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNtMzIzMl9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY20zMjMyX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMzY1LDgg KzM2NSw2IEBAIHN0YXRpYyBpbnQgY20zMjMyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBDTTMyMzJfQ01EX0FMU19E SVNBQkxFKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5k aW9fZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBjbTMyMzJfaWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vbGlnaHQvY20zNjY1MS5jCj4gYi9kcml2ZXJzL2lpby9saWdodC9j bTM2NjUxLmMKPiBpbmRleCA4OWY1ZTQ4YTY2NDIuLjY2MTVjOThiNjAxYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9saWdodC9jbTM2NjUxLmMKPiArKysgYi9kcml2ZXJzL2lpby9saWdodC9j bTM2NjUxLmMKPiBAQCAtNzAwLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgY20zNjY1MV9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjbTM2NjUxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjbTM2NjUxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBjbTM2NjUxX2RhdGEgKmNtMzY2NTEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC03MTAs OCArNzEwLDYgQEAgc3RhdGljIGludCBjbTM2NjUxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGNsaWVudC0+aXJxLCBpbmRpb19k ZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoY20zNjY1MS0+cHNf Y2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGNtMzY2NTEt PmFyYV9jbGllbnQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGNtMzY2NTFfaWRbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbGlnaHQvZ3AyYXAwMDIuYwo+IGIvZHJpdmVycy9paW8v bGlnaHQvZ3AyYXAwMDIuYwo+IGluZGV4IGM2ZDFkODhkMzc3NS4uODU1ZGM2M2ZiMGE1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L2dwMmFwMDAyLmMKPiArKysgYi9kcml2ZXJzL2lp by9saWdodC9ncDJhcDAwMi5jCj4gQEAgLTYxOSw3ICs2MTksNyBAQCBzdGF0aWMgaW50IGdwMmFw MDAyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGdwMmFwMDAyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBncDJhcDAwMl9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgZ3AyYXAwMDIgKmdwMmFwMDAyID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsK PiBAQCAtNjMxLDggKzYzMSw2IEBAIHN0YXRpYyBpbnQgZ3AyYXAwMDJfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX2RldmljZV91bnJlZ2lz dGVyKGluZGlvX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9kaXNhYmxlKGdwMmFw MDAyLT52aW8pOwo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfZGlzYWJsZShncDJhcDAwMi0+ dmRkKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBpbnQgX19tYXliZV91bnVzZWQgZ3AyYXAwMDJfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UKPiAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdodC9ncDJhcDAyMGEwMGYu Ywo+IGIvZHJpdmVycy9paW8vbGlnaHQvZ3AyYXAwMjBhMDBmLmMKPiBpbmRleCBiODIwMDQxMTU5 ZjcuLjgyNjQzOTI5OWU4YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9saWdodC9ncDJhcDAy MGEwMGYuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L2dwMmFwMDIwYTAwZi5jCj4gQEAgLTE1 NzMsNyArMTU3Myw3IEBAIHN0YXRpYyBpbnQgZ3AyYXAwMjBhMDBmX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IGdwMmFwMDIwYTAwZl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgZ3AyYXAwMjBhMDBmX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBncDJhcDAyMGEwMGZfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTE1 ODksOCArMTU4OSw2IEBAIHN0YXRpYyBpbnQgZ3AyYXAwMjBhMDBmX3JlbW92ZShzdHJ1Y3QKPiBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGNsaWVudC0+aXJx LCBpbmRpb19kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBpaW9fdHJpZ2dlcmVkX2J1ZmZlcl9jbGVh bnVwKGluZGlvX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9kaXNhYmxlKGRhdGEt PnZsZWRfcmVnKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBncDJhcDAyMGEwMGZfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbGlnaHQvaXNsMjkwMjguYwo+IGIvZHJpdmVycy9p aW8vbGlnaHQvaXNsMjkwMjguYwo+IGluZGV4IDcyMGZhODNkNDRlMC4uNmMzNDQ4NzVjNzkxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L2lzbDI5MDI4LmMKPiArKysgYi9kcml2ZXJz L2lpby9saWdodC9pc2wyOTAyOC5jCj4gQEAgLTYzNiw3ICs2MzYsNyBAQCBzdGF0aWMgaW50IGlz bDI5MDI4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpc2wyOTAyOF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaXNsMjkwMjhfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBp aW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGlzbDI5MDI4X2NoaXAgKmNoaXAgPSBpaW9fcHJpdihpbmRpb19kZXYp Owo+IEBAIC02NDcsOCArNjQ3LDYgQEAgc3RhdGljIGludCBpc2wyOTAyOF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9z dXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpc2wyOTAyOF9j bGVhcl9jb25maWd1cmVfcmVnKGNoaXApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBpc2wyOTAyOF9zdXNwZW5k KHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbGlnaHQvaXNs MjkxMjUuYwo+IGIvZHJpdmVycy9paW8vbGlnaHQvaXNsMjkxMjUuYwo+IGluZGV4IGViNjhhNTJh YWI4Mi4uYzE5OWU2M2NjZTgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L2lzbDI5 MTI1LmMKPiArKysgYi9kcml2ZXJzL2lpby9saWdodC9pc2wyOTEyNS5jCj4gQEAgLTMwMCwxNSAr MzAwLDEzIEBAIHN0YXRpYyBpbnQgaXNsMjkxMjVfcG93ZXJkb3duKHN0cnVjdAo+IGlzbDI5MTI1 X2RhdGEgKmRhdGEpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoZGF0YS0+Y29u ZjEgJiB+SVNMMjkxMjVfTU9ERV9NQVNLKSB8Cj4gSVNMMjkxMjVfTU9ERV9QRCk7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBpc2wyOTEyNV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgaXNsMjkxMjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpaW9fZGV2 aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX3RyaWdnZXJl ZF9idWZmZXJfY2xlYW51cChpbmRpb19kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBpc2wyOTEyNV9w b3dlcmRvd24oaWlvX3ByaXYoaW5kaW9fZGV2KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IGlzbDI5MTI1X3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdodC9qc2ExMjEyLmMKPiBi L2RyaXZlcnMvaWlvL2xpZ2h0L2pzYTEyMTIuYwo+IGluZGV4IDUzODdjMTIyMzFjZi4uNTdjZTZk NzU5NjZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L2pzYTEyMTIuYwo+ICsrKyBi L2RyaXZlcnMvaWlvL2xpZ2h0L2pzYTEyMTIuYwo+IEBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGlj IGludCBqc2ExMjEyX3Bvd2VyX29mZihzdHJ1Y3QganNhMTIxMl9kYXRhCj4gKmRhdGEpCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBqc2ExMjEy X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBqc2ExMjEy X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBqc2ExMjEyX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihp bmRpb19kZXYpOwo+IEBAIC0zODEsOCArMzgxLDYgQEAgc3RhdGljIGludCBqc2ExMjEyX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlpb19kZXZp Y2VfdW5yZWdpc3RlcihpbmRpb19kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGpzYTEyMTJf cG93ZXJfb2ZmKGRhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGludCBqc2ExMjEyX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdodC9sdHI1MDEuYyBiL2RyaXZlcnMvaWlvL2xpZ2h0 L2x0cjUwMS5jCj4gaW5kZXggNjc5YTFlMTA4NmFlLi43NGExY2NkYThiOWMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9paW8vbGlnaHQvbHRyNTAxLmMKPiArKysgYi9kcml2ZXJzL2lpby9saWdodC9s dHI1MDEuYwo+IEBAIC0xNjAwLDE1ICsxNjAwLDEzIEBAIHN0YXRpYyBpbnQgbHRyNTAxX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGx0cjUwMV9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbHRyNTAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg aWlvX2RldmljZV91bnJlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGlpb190 cmlnZ2VyZWRfYnVmZmVyX2NsZWFudXAoaW5kaW9fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgbHRy NTAxX3Bvd2VyZG93bihpaW9fcHJpdihpbmRpb19kZXYpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgbHRyNTAxX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdodC9vcHQzMDAxLmMK PiBiL2RyaXZlcnMvaWlvL2xpZ2h0L29wdDMwMDEuYwo+IGluZGV4IGEzMjZkNDdhZmM5Yi4uYTI2 ZDFjM2Y5NTQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2xpZ2h0L29wdDMwMDEuYwo+ICsr KyBiL2RyaXZlcnMvaWlvL2xpZ2h0L29wdDMwMDEuYwo+IEBAIC03OTQsNyArNzk0LDcgQEAgc3Rh dGljIGludCBvcHQzMDAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBvcHQzMDAxX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvcHQzMDAxX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgaWlvX2RldiAqaWlvID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBvcHQzMDAxICpvcHQgPSBpaW9fcHJpdihpaW8pOwo+IEBAIC04MDgs NyArODA4LDcgQEAgc3RhdGljIGludCBvcHQzMDAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQgPCAwKSB7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKG9wdC0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgcmVn aXN0ZXIgJTAyeFxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgT1BUMzAwMV9DT05GSUdVUkFUSU9OKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybjsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoHJlZyA9IHJldDsKPiBAQCAtODIwLDggKzgyMCw2IEBAIHN0YXRpYyBpbnQgb3B0MzAwMV9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGV2X2VycihvcHQtPmRldiwgImZhaWxlZCB0byB3cml0ZSByZWdpc3RlciAl MDJ4XG4iLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBPUFQzMDAxX0NPTkZJR1VSQVRJT04pOwo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgb3B0MzAwMV9pZFtdID0gewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2lpby9saWdodC9wYTEyMjAzMDAxLmMKPiBiL2RyaXZlcnMvaWlvL2xpZ2h0L3Bh MTIyMDMwMDEuYwo+IGluZGV4IDc3Mjg3NGU3MDdhZS4uM2NiMmRlNTFmNGFhIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvaWlvL2xpZ2h0L3BhMTIyMDMwMDEuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xp Z2h0L3BhMTIyMDMwMDEuYwo+IEBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIGludCBwYTEyMjAz MDAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHBhMTIyMDMwMDFfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHBhMTIyMDMwMDFfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKg wqDCoMKgwqDCoMKgaW50IHJldDsKPiBAQCAtNDA4LDggKzQwOCw2IEBAIHN0YXRpYyBpbnQgcGEx MjIwMzAwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3dhcm4o JmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHBvd2VyIGRvd24KPiAoJXBlKVxuIiwKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRVJSX1BUUihyZXQpKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZiBkZWZpbmVk KENPTkZJR19QTV9TTEVFUCkgfHwgZGVmaW5lZChDT05GSUdfUE0pCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaWlvL2xpZ2h0L3JwcjA1MjEuYwo+IGIvZHJpdmVycy9paW8vbGlnaHQvcnByMDUyMS5j Cj4gaW5kZXggZGFiZGQwNWYwZTJjLi5kMWMxNmRkNzYwNTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9paW8vbGlnaHQvcnByMDUyMS5jCj4gKysrIGIvZHJpdmVycy9paW8vbGlnaHQvcnByMDUyMS5j Cj4gQEAgLTEwNDEsNyArMTA0MSw3IEBAIHN0YXRpYyBpbnQgcnByMDUyMV9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBycHIwNTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCBycHIwNTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMTA1MSw4ICsxMDUxLDYgQEAg c3RhdGljIGludCBycHIwNTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4g wqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJwcjA1MjFfcG93ZXJvZmYoaWlvX3ByaXYoaW5kaW9fZGV2 KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg aW50IHJwcjA1MjFfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9paW8vbGlnaHQvc3RrMzMxMC5jCj4gYi9kcml2ZXJzL2lpby9saWdodC9z dGszMzEwLmMKPiBpbmRleCBmN2NjN2E2YzBjOGQuLjdiOGUwZGE2YWFiYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9saWdodC9zdGszMzEwLmMKPiArKysgYi9kcml2ZXJzL2lpby9saWdodC9z dGszMzEwLmMKPiBAQCAtNjQ5LDE0ICs2NDksMTIgQEAgc3RhdGljIGludCBzdGszMzEwX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHN0azMzMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0azMzMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqBpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Rr MzMxMF9zZXRfc3RhdGUoaWlvX3ByaXYoaW5kaW9fZGV2KSwKPiBTVEszMzEwX1NUQVRFX1NUQU5E QlkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGludCBzdGszMzEwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9saWdodC90Y3MzNDcyLmMKPiBiL2RyaXZlcnMvaWlvL2xpZ2h0L3RjczM0NzIu Ywo+IGluZGV4IDgyMzQzNWY1OWJiNi4uZGIxN2ZlYzYzNGJlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvaWlvL2xpZ2h0L3RjczM0NzIuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L3RjczM0NzIu Ywo+IEBAIC01NTksNyArNTU5LDcgQEAgc3RhdGljIGludCB0Y3MzNDcyX3Bvd2VyZG93bihzdHJ1 Y3QgdGNzMzQ3Ml9kYXRhCj4gKmRhdGEpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCB0Y3MzNDcyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0Y3MzNDcyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNTY4LDggKzU2OCw2IEBA IHN0YXRpYyBpbnQgdGNzMzQ3Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZV9pcnEoY2xpZW50LT5pcnEsIGlu ZGlvX2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGlpb190cmlnZ2VyZWRfYnVmZmVyX2NsZWFudXAo aW5kaW9fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdGNzMzQ3Ml9wb3dlcmRvd24oaWlvX3ByaXYo aW5kaW9fZGV2KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgaW50IHRjczM0NzJfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaWlvL2xpZ2h0L3RzbDI1NjMuYwo+IGIvZHJpdmVycy9paW8vbGlnaHQv dHNsMjU2My5jCj4gaW5kZXggMGEyNzhlZWEzNmNhLi4xZmExODlmZTZlYjYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9paW8vbGlnaHQvdHNsMjU2My5jCj4gKysrIGIvZHJpdmVycy9paW8vbGlnaHQv dHNsMjU2My5jCj4gQEAgLTc5Niw3ICs3OTYsNyBAQCBzdGF0aWMgaW50IHRzbDI1NjNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJy Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdHNsMjU2M19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHNsMjU2M19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlv X2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgdHNsMjU2M19jaGlwICpjaGlwID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtODEwLDgg KzgxMCw2IEBAIHN0YXRpYyBpbnQgdHNsMjU2M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjaGlwLT5pbnRyKTsKPiDCoMKgwqDCoMKgwqDCoMKgZmx1c2hf c2NoZWR1bGVkX3dvcmsoKTsKPiDCoMKgwqDCoMKgwqDCoMKgdHNsMjU2M19zZXRfcG93ZXIoY2hp cCwgMCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgaW50IHRzbDI1NjNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaWlvL2xpZ2h0L3RzbDI1ODMuYwo+IGIvZHJpdmVycy9paW8vbGlnaHQvdHNsMjU4 My5jCj4gaW5kZXggZWZiM2MxM2NmYzg3Li41OWU3ZWY2MjQyODMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vbGlnaHQvdHNsMjU4My5jCj4gKysrIGIvZHJpdmVycy9paW8vbGlnaHQvdHNsMjU4 My5jCj4gQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgaW50IHRzbDI1ODNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50cCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCB0c2wyNTgzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCB0c2wyNTgzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0c2wy NTgzX2NoaXAgKmNoaXAgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC04ODQsOCArODg0LDYg QEAgc3RhdGljIGludCB0c2wyNTgzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHRzbDI1ODNfc2V0X3Bvd2VyX3N0YXRlKGNoaXAsIFRT TDI1ODNfQ05UTF9QV1JfT0ZGKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdHNsMjU4M19zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbGlnaHQvdHNsNDUzMS5j Cj4gYi9kcml2ZXJzL2lpby9saWdodC90c2w0NTMxLmMKPiBpbmRleCA2YWUxYjI3ZTUwYjYuLjA5 MDAzOGZlZDg4OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lpby9saWdodC90c2w0NTMxLmMKPiAr KysgYi9kcml2ZXJzL2lpby9saWdodC90c2w0NTMxLmMKPiBAQCAtMjA3LDEyICsyMDcsMTAgQEAg c3RhdGljIGludCB0c2w0NTMxX3Bvd2VyZG93bihzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBUU0w0NTMxX01PREVfUE9XRVJET1dO KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRzbDQ1MzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRzbDQ1MzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlpb19kZXZpY2VfdW5yZWdpc3Rl cihpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHRzbDQ1MzFf cG93ZXJkb3duKGNsaWVudCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgaW50IHRzbDQ1MzFfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2xpZ2h0L3VzNTE4MmQuYwo+IGIvZHJpdmVycy9paW8v bGlnaHQvdXM1MTgyZC5jCj4gaW5kZXggY2JkOTk3ODU0MGZhLi5jYTZhMDM5MzNlMmUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9paW8vbGlnaHQvdXM1MTgyZC5jCj4gKysrIGIvZHJpdmVycy9paW8v bGlnaHQvdXM1MTgyZC5jCj4gQEAgLTkwNCw3ICs5MDQsNyBAQCBzdGF0aWMgaW50IHVzNTE4MmRf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgCj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCB1czUxODJkX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCB1czUxODJkX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdXM1MTgyZF9kYXRhICpkYXRhID0KPiBpaW9fcHJpdihp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4g QEAgLTkxOCw4ICs5MTgsNiBAQCBzdGF0aWMgaW50IHVzNTE4MmRfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl93YXJuKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBz aHV0IGRvd24gKCVwZSlcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEVSUl9QVFIocmV0KSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqAjaWYgZGVmaW5lZChDT05GSUdfUE1fU0xFRVApIHx8IGRlZmluZWQo Q09ORklHX1BNKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdodC92Y25sNDAwMC5jCj4g Yi9kcml2ZXJzL2lpby9saWdodC92Y25sNDAwMC5jCj4gaW5kZXggOTQ3YTQxYjg2MTczLi45YzQ5 MmY5MDI0ZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vbGlnaHQvdmNubDQwMDAuYwo+ICsr KyBiL2RyaXZlcnMvaWlvL2xpZ2h0L3Zjbmw0MDAwLmMKPiBAQCAtMTExMSw3ICsxMTExLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQKPiB2Y25sXzQwMDBfb2ZfbWF0Y2hbXSA9 IHsKPiDCoH07Cj4gwqBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2Y25sXzQwMDBfb2ZfbWF0Y2gp Owo+IMKgCj4gLXN0YXRpYyBpbnQgdmNubDQwMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHZjbmw0MDAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2 ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2 Y25sNDAwMF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtMTEyNiw4ICsx MTI2LDYgQEAgc3RhdGljIGludCB2Y25sNDAwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGV2X3dhcm4oJmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHBvd2VyIGRvd24K PiAoJXBlKVxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRVJSX1BUUihyZXQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdmNubDQwMDBfcnVudGltZV9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9saWdo dC92Y25sNDAzNS5jCj4gYi9kcml2ZXJzL2lpby9saWdodC92Y25sNDAzNS5jCj4gaW5kZXggMmFh ZWM2YmVmNjRjLi44MjgyZjE5YzlkZTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vbGlnaHQv dmNubDQwMzUuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L3Zjbmw0MDM1LmMKPiBAQCAtNjAx LDcgKzYwMSw3IEBAIHN0YXRpYyBpbnQgdmNubDQwMzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgdmNubDQwMzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIHZjbmw0MDM1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gQEAgLTYxNiw4 ICs2MTYsNiBAQCBzdGF0aWMgaW50IHZjbmw0MDM1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZXZfd2FybigmY2xpZW50LT5kZXYsICJGYWlsZWQgdG8gcHV0IGRldmlj ZSBpbnRvCj4gc3RhbmRieSAoJXBlKVxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRVJSX1BUUihyZXQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdmNubDQw MzVfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2lpby9saWdodC92ZW1sNjA3MC5jCj4gYi9kcml2ZXJzL2lpby9saWdodC92ZW1sNjA3 MC5jCj4gaW5kZXggMWU1NWUwOWE4ZDE2Li5jZmE0ZTllN2M4MDMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vbGlnaHQvdmVtbDYwNzAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL2xpZ2h0L3ZlbWw2 MDcwLmMKPiBAQCAtMTgwLDE1ICsxODAsMTMgQEAgc3RhdGljIGludCB2ZW1sNjA3MF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB2ZW1sNjA3MF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdmVtbDYwNzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHZlbWw2MDcwX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoGlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRpb19kZXYpOwo+IMKgwqDCoMKg wqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoZGF0YS0+Y2xpZW50Mik7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgdmVtbDYwNzBfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8v bWFnbmV0b21ldGVyL2FrODk3NC5jCj4gYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc0 LmMKPiBpbmRleCBlNTRmZWFjZmI5ODAuLjEwNjQ4NTlmYmY4MyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc0LmMKPiArKysgYi9kcml2ZXJzL2lpby9tYWduZXRv bWV0ZXIvYWs4OTc0LmMKPiBAQCAtOTY5LDcgKzk2OSw3IEBAIHN0YXRpYyBpbnQgYWs4OTc0X3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhazg5NzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gK3N0YXRpYyB2b2lkIGFrODk3NF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmky YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGky Y19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWs4OTc0ICph azg5NzQgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC05ODEsOCArOTgxLDYgQEAgc3RhdGlj IGludCBhazg5NzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqDCoMKgwqDCoMKg wqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmaTJjLT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBhazg5 NzRfc2V0X3Bvd2VyKGFrODk3NCwgQUs4OTc0X1BXUl9PRkYpOwo+IMKgwqDCoMKgwqDCoMKgwqBy ZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoYWs4OTc0LT5yZWdzKSwgYWs4OTc0LQo+ ID5yZWdzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYWs4OTc0X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRlci9hazg5NzUu Ywo+IGIvZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2FrODk3NS5jCj4gaW5kZXggMjQzMmU2OTcx NTBjLi5jYWYwM2EyYTk4YTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vbWFnbmV0b21ldGVy L2FrODk3NS5jCj4gKysrIGIvZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2FrODk3NS5jCj4gQEAg LTEwMTgsNyArMTAxOCw3IEBAIHN0YXRpYyBpbnQgYWs4OTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGFrODk3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgYWs4OTc1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBhazg5NzVfZGF0YSAq ZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTEwMzAsOCArMTAzMCw2IEBAIHN0YXRp YyBpbnQgYWs4OTc1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoGlpb190cmlnZ2VyZWRfYnVmZmVyX2NsZWFudXAoaW5kaW9fZGV2KTsKPiDCoMKg wqDCoMKgwqDCoMKgYWs4OTc1X3NldF9tb2RlKGRhdGEsIFBPV0VSX0RPV04pOwo+IMKgwqDCoMKg wqDCoMKgwqBhazg5NzVfcG93ZXJfb2ZmKGRhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBhazg5NzVfcnVudGltZV9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbWFnbmV0b21ldGVy L2JtYzE1MF9tYWduX2kyYy5jCj4gYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21h Z25faTJjLmMKPiBpbmRleCA2NWMwMDQ0MTFkMGYuLjU3MGRlYWE4NzgzNiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21hZ25faTJjLmMKPiArKysgYi9kcml2 ZXJzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21hZ25faTJjLmMKPiBAQCAtMzQsMTEgKzM0LDkg QEAgc3RhdGljIGludCBibWMxNTBfbWFnbl9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gYm1jMTUwX21hZ25fcHJvYmUoJmNsaWVu dC0+ZGV2LCByZWdtYXAsIGNsaWVudC0+aXJxLAo+IG5hbWUpOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgYm1jMTUwX21hZ25faTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCBibWMxNTBfbWFnbl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGJtYzE1MF9tYWduX3JlbW92ZSgmY2xpZW50 LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBibWMxNTBfbWFnbl9hY3BpX21hdGNoW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRlci9obWM1ODQzX2kyYy5j Cj4gYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0M19pMmMuYwo+IGluZGV4IDhkMmZm OGZjMjA0ZC4uZmU1ZTg0MTViMmYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL21hZ25ldG9t ZXRlci9obWM1ODQzX2kyYy5jCj4gKysrIGIvZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL2htYzU4 NDNfaTJjLmMKPiBAQCAtNjUsMTEgKzY1LDkgQEAgc3RhdGljIGludCBobWM1ODQzX2kyY19wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGksCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWQtPmRyaXZlcl9kYXRhLCBpZC0+bmFtZSk7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBobWM1ODQzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgaG1jNTg0M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGhtYzU4NDNfY29tbW9uX3JlbW92ZSgm Y2xpZW50LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGhtYzU4NDNfaWRbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vbWFnbmV0b21ldGVyL21hZzMxMTAuYwo+IGIvZHJpdmVy cy9paW8vbWFnbmV0b21ldGVyL21hZzMxMTAuYwo+IGluZGV4IDIyNjQzOWQwYmZiNS4uYjg3MGFk ODAzODYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRlci9tYWczMTEwLmMK PiArKysgYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvbWFnMzExMC5jCj4gQEAgLTU1OSw3ICs1 NTksNyBAQCBzdGF0aWMgaW50IG1hZzMxMTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgbWFnMzExMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgbWFnMzExMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWFnMzExMF9kYXRhICpkYXRhID0g aWlvX3ByaXYoaW5kaW9fZGV2KTsKPiBAQCAtNTY5LDggKzU2OSw2IEBAIHN0YXRpYyBpbnQgbWFn MzExMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKg wqBtYWczMTEwX3N0YW5kYnkoaWlvX3ByaXYoaW5kaW9fZGV2KSk7Cj4gwqDCoMKgwqDCoMKgwqDC oHJlZ3VsYXRvcl9kaXNhYmxlKGRhdGEtPnZkZGlvX3JlZyk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJl Z3VsYXRvcl9kaXNhYmxlKGRhdGEtPnZkZF9yZWcpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBtYWczMTEwX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIveWFtYWhh LXlhczUzMC5jCj4gYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIveWFtYWhhLXlhczUzMC5jCj4g aW5kZXggYjJiYzYzNzE1MGJmLi44YzE2MTc4ZDQ4MjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9p aW8vbWFnbmV0b21ldGVyL3lhbWFoYS15YXM1MzAuYwo+ICsrKyBiL2RyaXZlcnMvaWlvL21hZ25l dG9tZXRlci95YW1haGEteWFzNTMwLmMKPiBAQCAtOTQzLDcgKzk0Myw3IEBAIHN0YXRpYyBpbnQg eWFzNXh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB5YXM1eHhfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIHlhczV4eF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlv X2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg eWFzNXh4ICp5YXM1eHggPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC05NjEsOCArOTYxLDYg QEAgc3RhdGljIGludCB5YXM1eHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqDC oMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBn cGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoeWFzNXh4LT5yZXNldCwgMSk7Cj4gwqDCoMKgwqDCoMKg wqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRSh5YXM1eHgtPnJlZ3MpLCB5YXM1 eHgtCj4gPnJlZ3MpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCB5YXM1eHhfcnVudGltZV9zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vcG90ZW50aW9zdGF0L2xt cDkxMDAwLmMKPiBiL2RyaXZlcnMvaWlvL3BvdGVudGlvc3RhdC9sbXA5MTAwMC5jCj4gaW5kZXgg ZmU1MTRmMGI1NTA2Li41ZWM3MDYwZDMxZDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vcG90 ZW50aW9zdGF0L2xtcDkxMDAwLmMKPiArKysgYi9kcml2ZXJzL2lpby9wb3RlbnRpb3N0YXQvbG1w OTEwMDAuYwo+IEBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIGludCBsbXA5MTAwMF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBsbXA5MTAwMF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbG1wOTEwMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGxtcDkxMDAwX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC0zOTYs OCArMzk2LDYgQEAgc3RhdGljIGludCBsbXA5MTAwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlpb190cmlnZ2VyZWRfYnVmZmVyX2Ns ZWFudXAoaW5kaW9fZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWlvX3RyaWdnZXJfdW5yZWdpc3Rl cihkYXRhLT50cmlnKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGxtcDkxMDAwX29mX21hdGNoW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL3ByZXNzdXJlL21wbDMxMTUuYwo+IGIvZHJp dmVycy9paW8vcHJlc3N1cmUvbXBsMzExNS5jCj4gaW5kZXggZDRmODllNGJhYmVkLi4yZjIyYWJh NjFlNGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vcHJlc3N1cmUvbXBsMzExNS5jCj4gKysr IGIvZHJpdmVycy9paW8vcHJlc3N1cmUvbXBsMzExNS5jCj4gQEAgLTI5MCwxNSArMjkwLDEzIEBA IHN0YXRpYyBpbnQgbXBsMzExNV9zdGFuZGJ5KHN0cnVjdCBtcGwzMTE1X2RhdGEKPiAqZGF0YSkK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEtPmN0cmxfcmVnMSAmIH5NUEwz MTE1X0NUUkxfQUNUSVZFKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1wbDMxMTVfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1wbDMxMTVfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqBpaW9fZGV2aWNlX3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsKPiDCoMKg wqDCoMKgwqDCoMKgaWlvX3RyaWdnZXJlZF9idWZmZXJfY2xlYW51cChpbmRpb19kZXYpOwo+IMKg wqDCoMKgwqDCoMKgwqBtcGwzMTE1X3N0YW5kYnkoaWlvX3ByaXYoaW5kaW9fZGV2KSk7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IG1wbDMx MTVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlv L3ByZXNzdXJlL21zNTYxMV9pMmMuYwo+IGIvZHJpdmVycy9paW8vcHJlc3N1cmUvbXM1NjExX2ky Yy5jCj4gaW5kZXggM2IxZGU3MWUwZDE1Li5iNjgxYTQxODM5MDkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9paW8vcHJlc3N1cmUvbXM1NjExX2kyYy5jCj4gKysrIGIvZHJpdmVycy9paW8vcHJlc3N1 cmUvbXM1NjExX2kyYy5jCj4gQEAgLTEwNSwxMSArMTA1LDkgQEAgc3RhdGljIGludCBtczU2MTFf aTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIG1zNTYxMV9wcm9iZShpbmRpb19kZXYsICZjbGllbnQtPmRldiwgaWQtPm5hbWUsIGlk LQo+ID5kcml2ZXJfZGF0YSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtczU2MTFfaTJjX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtczU2MTFfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBtczU2MTFfcmVtb3ZlKGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIG1zNTYxMV9pMmNfbWF0Y2hlc1tdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2lpby9wcmVzc3VyZS96cGEyMzI2X2kyYy5jCj4gYi9kcml2ZXJzL2lpby9wcmVzc3VyZS96cGEy MzI2X2kyYy5jCj4gaW5kZXggMGRiMDg2MGQzODZiLi5mMjZkZDhjYmIzODcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9paW8vcHJlc3N1cmUvenBhMjMyNl9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvaWlv L3ByZXNzdXJlL3pwYTIzMjZfaTJjLmMKPiBAQCAtNTMsMTEgKzUzLDkgQEAgc3RhdGljIGludCB6 cGEyMzI2X3Byb2JlX2kyYyhzdHJ1Y3QKPiBpMmNfY2xpZW50wqDCoMKgwqDCoMKgwqDCoMKgICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgenBhMjMyNl9pMmNfaHdpZChjbGllbnQpLCByZWdtYXApOwo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgenBhMjMyNl9yZW1vdmVfaTJjKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIHpwYTIzMjZfcmVtb3ZlX2kyYyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqB6cGEyMzI2X3JlbW92ZSgmY2xpZW50LT5kZXYp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHpwYTIzMjZfaTJjX2lkc1tdID0gewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lpby9wcm94aW1pdHkvcHVsc2VkbGlnaHQtbGlkYXItbGl0ZS12Mi5jCj4g Yi9kcml2ZXJzL2lpby9wcm94aW1pdHkvcHVsc2VkbGlnaHQtbGlkYXItbGl0ZS12Mi5jCj4gaW5k ZXggNjQ4YWU1NzZkNmZhLi43OTFhMzNkNTI4NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8v cHJveGltaXR5L3B1bHNlZGxpZ2h0LWxpZGFyLWxpdGUtdjIuYwo+ICsrKyBiL2RyaXZlcnMvaWlv L3Byb3hpbWl0eS9wdWxzZWRsaWdodC1saWRhci1saXRlLXYyLmMKPiBAQCAtMzExLDcgKzMxMSw3 IEBAIHN0YXRpYyBpbnQgbGlkYXJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxpZGFy X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsaWRhcl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gQEAgLTMyMCw4ICszMjAsNiBAQCBzdGF0aWMgaW50IGxpZGFyX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9k aXNhYmxlKCZjbGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1 c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxpZGFyX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL3Byb3hpbWl0eS9zeDk1MDAuYwo+IGIvZHJp dmVycy9paW8vcHJveGltaXR5L3N4OTUwMC5jCj4gaW5kZXggNDI1ODlkNjIwMGFkLi5kNDY3MDg2 NGRkYzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9paW8vcHJveGltaXR5L3N4OTUwMC5jCj4gKysr IGIvZHJpdmVycy9paW8vcHJveGltaXR5L3N4OTUwMC5jCj4gQEAgLTk3OSw3ICs5NzksNyBAQCBz dGF0aWMgaW50IHN4OTUwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzeDk1MDBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN4OTUwMF9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3g5NTAwX2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRp b19kZXYpOwo+IEBAIC05ODksOCArOTg5LDYgQEAgc3RhdGljIGludCBzeDk1MDBfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGNsaWVudC0+ aXJxID4gMCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlpb190cmlnZ2VyX3Vu cmVnaXN0ZXIoZGF0YS0+dHJpZyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRhdGEtPmJ1ZmZl cik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg aW50IHN4OTUwMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9paW8vdGVtcGVyYXR1cmUvbWx4OTA2MTQuYwo+IGIvZHJpdmVycy9paW8vdGVtcGVyYXR1 cmUvbWx4OTA2MTQuYwo+IGluZGV4IGMyNTNhNTMxNTk4OC4uMDgwOGJiODY1OTI4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaWlvL3RlbXBlcmF0dXJlL21seDkwNjE0LmMKPiArKysgYi9kcml2ZXJz L2lpby90ZW1wZXJhdHVyZS9tbHg5MDYxNC5jCj4gQEAgLTU3MSw3ICs1NzEsNyBAQCBzdGF0aWMg aW50IG1seDkwNjE0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2KTsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IG1seDkwNjE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBtbHg5MDYxNF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWx4OTA2 MTRfZGF0YSAqZGF0YSA9IGlpb19wcml2KGluZGlvX2Rldik7Cj4gQEAgLTU4NCw4ICs1ODQsNiBA QCBzdGF0aWMgaW50IG1seDkwNjE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWx4OTA2 MTRfc2xlZXAoZGF0YSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50 aW1lX3NldF9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkIG1seDkwNjE0X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvaWlvL3RlbXBlcmF0dXJlL21seDkwNjMyLmMKPiBiL2RyaXZlcnMvaWlvL3RlbXBlcmF0dXJl L21seDkwNjMyLmMKPiBpbmRleCA3ZWU3ZmY4MDQ3YTQuLmU4ZWY0NzE0N2UyYiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2lpby90ZW1wZXJhdHVyZS9tbHg5MDYzMi5jCj4gKysrIGIvZHJpdmVycy9p aW8vdGVtcGVyYXR1cmUvbWx4OTA2MzIuYwo+IEBAIC05MjQsNyArOTI0LDcgQEAgc3RhdGljIGlu dCBtbHg5MDYzMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBpaW9fZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBtbHg5MDYzMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgbWx4OTA2MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1seDkwNjMy X2RhdGEgKmRhdGEgPSBpaW9fcHJpdihpbmRpb19kZXYpOwo+IEBAIC05MzYsOCArOTM2LDYgQEAg c3RhdGljIGludCBtbHg5MDYzMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3B1dF9ub2lkbGUoJmNsaWVudC0+ZGV2KTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBtbHg5MDYzMl9zbGVlcChkYXRhKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBtbHg5MDYzMl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pv eXN0aWNrL2FzNTAxMS5jCj4gYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2FzNTAxMS5jCj4gaW5k ZXggMzRiY2Q5OWE0NmY1Li4yYmVkYTI5MDIxYTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1 dC9qb3lzdGljay9hczUwMTEuYwo+ICsrKyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svYXM1MDEx LmMKPiBAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBpbnQgYXM1MDExX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycm9yOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgYXM1MDExX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCBhczUwMTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBhczUwMTFfZGV2aWNlICphczUwMTEg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0zMzcsOCArMzM3LDYgQEAg c3RhdGljIGludCBhczUwMTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBpbnB1dF91bnJlZ2lzdGVyX2RldmljZShhczUwMTEtPmlucHV0 X2Rldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGFzNTAxMSk7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgYXM1MDExX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9h cmQvYWRwNTU4OC1rZXlzLmMKPiBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvYWRwNTU4OC1rZXlz LmMKPiBpbmRleCAxNTkyZGE0ZGUzMzYuLmI1NjY2ZDY1MDk5NCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2lucHV0L2tleWJvYXJkL2FkcDU1ODgta2V5cy5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC9r ZXlib2FyZC9hZHA1NTg4LWtleXMuYwo+IEBAIC01OTgsNyArNTk4LDcgQEAgc3RhdGljIGludCBh ZHA1NTg4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGVycm9yOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWRwNTU4OF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWRwNTU4OF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGFkcDU1ODhfa3BhZCAqa3BhZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4g QEAgLTYwOCw4ICs2MDgsNiBAQCBzdGF0aWMgaW50IGFkcDU1ODhfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaW5wdXRfdW5yZWdpc3Rlcl9kZXZp Y2Uoa3BhZC0+aW5wdXQpOwo+IMKgwqDCoMKgwqDCoMKgwqBhZHA1NTg4X2dwaW9fcmVtb3ZlKGtw YWQpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShrcGFkKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbnB1dC9rZXlib2FyZC9sbTgzMjMuYwo+IGIvZHJpdmVycy9pbnB1dC9rZXlib2Fy ZC9sbTgzMjMuYwo+IGluZGV4IDZjMzhkMDM0ZWM2ZS4uNDA3ZGQyYWQ2MzAyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvbG04MzIzLmMKPiArKysgYi9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL2xtODMyMy5jCj4gQEAgLTc1Miw3ICs3NTIsNyBAQCBzdGF0aWMgaW50IGxtODMy M19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBsbTgzMjNfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxtODMyM19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxtODMyM19j aGlwICpsbSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBp bnQgaTsKPiBAQCAtNzY5LDggKzc2OSw2IEBAIHN0YXRpYyBpbnQgbG04MzIzX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIoJmxtLT5wd21baV0uY2Rl dik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUobG0pOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2xtODMzMy5jCj4gYi9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL2xtODMzMy5jCj4gaW5kZXggN2M1ZjhjNmJiOTU3Li45ZGFjMjJjMTQxMjUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9sbTgzMzMuYwo+ICsrKyBiL2RyaXZl cnMvaW5wdXQva2V5Ym9hcmQvbG04MzMzLmMKPiBAQCAtMjAwLDE1ICsyMDAsMTMgQEAgc3RhdGlj IGludCBsbTgzMzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbG04MzMzX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsbTgzMzNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBsbTgzMzMgKmxtODMzMyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoGZyZWVfaXJxKGNsaWVudC0+aXJxLCBsbTgzMzMpOwo+IMKgwqDCoMKgwqDC oMKgwqBpbnB1dF91bnJlZ2lzdGVyX2RldmljZShsbTgzMzMtPmlucHV0KTsKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUobG04MzMzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBsbTgzMzNfaWRbXSA9 IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9tY3NfdG91Y2hrZXkuYwo+ IGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9tY3NfdG91Y2hrZXkuYwo+IGluZGV4IDhjYjAwNjJi OThlNC4uYWMxNjM3YTMzODllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQv bWNzX3RvdWNoa2V5LmMKPiArKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL21jc190b3VjaGtl eS5jCj4gQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgaW50IG1jc190b3VjaGtleV9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnJv cjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1jc190b3VjaGtleV9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbWNzX3RvdWNoa2V5X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWNz X3RvdWNoa2V5X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+ IEBAIC0yMDMsOCArMjAzLDYgQEAgc3RhdGljIGludCBtY3NfdG91Y2hrZXlfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRhdGEtPnBvd2Vyb24oZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnB1dF91bnJlZ2lzdGVy X2RldmljZShkYXRhLT5pbnB1dF9kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkYXRhKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lk IG1jc190b3VjaGtleV9zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL3F0MTA3MC5jCj4gYi9kcml2ZXJzL2lucHV0 L2tleWJvYXJkL3F0MTA3MC5jCj4gaW5kZXggNzE3NGUxZGYxZWUzLi45ZmNjZTE4YjFkNjUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9xdDEwNzAuYwo+ICsrKyBiL2RyaXZl cnMvaW5wdXQva2V5Ym9hcmQvcXQxMDcwLmMKPiBAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBp bnQgcXQxMDcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHF0MTA3MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcXQxMDcwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg cXQxMDcwX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBA IC0yMjUsOCArMjI1LDYgQEAgc3RhdGljIGludCBxdDEwNzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpbnB1dF91bnJlZ2lzdGVyX2Rl dmljZShkYXRhLT5pbnB1dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRhdGEpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9T TEVFUAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL3F0MjE2MC5jCj4gYi9k cml2ZXJzL2lucHV0L2tleWJvYXJkL3F0MjE2MC5jCj4gaW5kZXggMzJkNGEwNzZlYWEzLi4zODJi MTUxOTIxOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9xdDIxNjAuYwo+ ICsrKyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvcXQyMTYwLmMKPiBAQCAtNDMyLDcgKzQzMiw3 IEBAIHN0YXRpYyBpbnQgcXQyMTYwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycm9yOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg cXQyMTYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBx dDIxNjBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBxdDIxNjBfZGF0YSAqcXQyMTYwID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiBAQCAtNDQ2LDggKzQ0Niw2IEBAIHN0YXRpYyBpbnQgcXQyMTYwX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaW5w dXRfdW5yZWdpc3Rlcl9kZXZpY2UocXQyMTYwLT5pbnB1dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtm cmVlKHF0MjE2MCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgcXQyMTYwX2lkdGFibGVbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC90Y2E2NDE2LWtleXBhZC5jCj4g Yi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL3RjYTY0MTYta2V5cGFkLmMKPiBpbmRleCAyYTk3NTU5 MTAwNjUuLmFmY2RmYmIwMDJmZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L2tleWJvYXJk L3RjYTY0MTYta2V5cGFkLmMKPiArKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL3RjYTY0MTYt a2V5cGFkLmMKPiBAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBpbnQgdGNhNjQxNl9rZXlwYWRf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gZXJyb3I7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0Y2E2NDE2X2tleXBhZF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGNhNjQxNl9rZXlwYWRf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCB0Y2E2NDE2X2tleXBhZF9jaGlwICpjaGlwID0KPiBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IEBAIC0zMTgsOCArMzE4LDYgQEAgc3RhdGljIGludCB0Y2E2NDE2X2tl eXBhZF9yZW1vdmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoGlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKGNoaXAtPmlucHV0KTsKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoY2hpcCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5w dXQvbWlzYy9hZHhsMzR4LWkyYy5jCj4gYi9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC1pMmMu Ywo+IGluZGV4IGEzYjVmODhkMmJkMS4uNWJlNjM2YWFhOTRmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvaW5wdXQvbWlzYy9hZHhsMzR4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL2Fk eGwzNHgtaTJjLmMKPiBAQCAtOTksMTMgKzk5LDExIEBAIHN0YXRpYyBpbnQgYWR4bDM0eF9pMmNf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkeGwzNHhfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZHhsMzR4X2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFk eGwzNHggKmFjID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgYWR4bDM0eF9yZW1vdmUoYWMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBhZHhsMzR4X2kyY19zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNj L2JtYTE1MC5jCj4gYi9kcml2ZXJzL2lucHV0L21pc2MvYm1hMTUwLmMKPiBpbmRleCBhOWQ5ODRk YTk1ZjMuLjg0ZmUzOTRkYTdhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L21pc2MvYm1h MTUwLmMKPiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MvYm1hMTUwLmMKPiBAQCAtNTEzLDExICs1 MTMsOSBAQCBzdGF0aWMgaW50IGJtYTE1MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg Ym1hMTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBi bWExNTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBi bWExNTBfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5wdXQvbWlzYy9jbWEzMDAwX2QweF9pMmMuYwo+IGIvZHJpdmVycy9pbnB1dC9taXNjL2NtYTMw MDBfZDB4X2kyYy5jCj4gaW5kZXggMDNmYjQ5MTI3YzNhLi4zYjIzMjEwYzQ2YjcgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2NtYTMwMDBfZDB4X2kyYy5jCj4gKysrIGIvZHJpdmVy cy9pbnB1dC9taXNjL2NtYTMwMDBfZDB4X2kyYy5jCj4gQEAgLTU4LDEzICs1OCwxMSBAQCBzdGF0 aWMgaW50IGNtYTMwMDBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjbWEzMDAw X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY21h MzAwMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBjbWEzMDAwX2FjY2xfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGNtYTMwMDBfZXhpdChkYXRhKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05G SUdfUE0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL3BjZjg1NzRfa2V5cGFkLmMK PiBiL2RyaXZlcnMvaW5wdXQvbWlzYy9wY2Y4NTc0X2tleXBhZC5jCj4gaW5kZXggYWJjNDIzMTY1 NTIyLi5jZmQ2NjQwZTRmODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3BjZjg1 NzRfa2V5cGFkLmMKPiArKysgYi9kcml2ZXJzL2lucHV0L21pc2MvcGNmODU3NF9rZXlwYWQuYwo+ IEBAIC0xNTcsNyArMTU3LDcgQEAgc3RhdGljIGludCBwY2Y4NTc0X2twX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcGNmODU3NF9rcF9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcGNmODU3NF9r cF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGtwX2RhdGEgKmxwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAK PiBAQCAtMTY1LDggKzE2NSw2IEBAIHN0YXRpYyBpbnQgcGNmODU3NF9rcF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlucHV0X3VucmVn aXN0ZXJfZGV2aWNlKGxwLT5pZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUobHApOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19Q TQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYwo+IGIv ZHJpdmVycy9pbnB1dC9tb3VzZS9zeW5hcHRpY3NfaTJjLmMKPiBpbmRleCBmYTMwNDY0OGQ2MTEu Ljk4N2VlNjdhMTA0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGlj c19pMmMuYwo+ICsrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCj4gQEAg LTU4Nyw3ICs1ODcsNyBAQCBzdGF0aWMgaW50IHN5bmFwdGljc19pMmNfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+ IMKgCj4gLXN0YXRpYyBpbnQgc3luYXB0aWNzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgc3luYXB0aWNzX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN5bmFwdGljc19p MmMgKnRvdWNoID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNTk2LDgg KzU5Niw2IEBAIHN0YXRpYyBpbnQgc3luYXB0aWNzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlucHV0X3VucmVnaXN0ZXJfZGV2 aWNlKHRvdWNoLT5pbnB1dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHRvdWNoKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXli ZV91bnVzZWQgc3luYXB0aWNzX2kyY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9ybWk0L3JtaV9zbWJ1cy5jCj4gYi9kcml2ZXJzL2lucHV0 L3JtaTQvcm1pX3NtYnVzLmMKPiBpbmRleCAyNDA3ZWE0M2RlNTkuLmMxMzA0Njg1NDFiNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L3JtaTQvcm1pX3NtYnVzLmMKPiArKysgYi9kcml2ZXJz L2lucHV0L3JtaTQvcm1pX3NtYnVzLmMKPiBAQCAtMzM4LDEzICszMzgsMTEgQEAgc3RhdGljIGlu dCBybWlfc21iX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBybWlfc21iX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBybWlfc21iX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg cm1pX3NtYl94cG9ydCAqcm1pX3NtYiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoHJtaV91bnJlZ2lzdGVyX3RyYW5zcG9ydF9kZXZpY2UoJnJtaV9z bWItPnhwb3J0KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcm1pX3NtYl9zdXNwZW5kKHN0cnVjdCBkZXZpY2Ug KmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRf dHMuYwo+IGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRfdHMuYwo+IGluZGV4 IGViNjZjZDI2ODliNy4uNGVlZGVhMDhiMGI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5wdXQv dG91Y2hzY3JlZW4vYXRtZWxfbXh0X3RzLmMKPiArKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL2F0bWVsX214dF90cy5jCj4gQEAgLTMyODQsNyArMzI4NCw3IEBAIHN0YXRpYyBpbnQgbXh0 X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4gY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgKmlkKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyb3I7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBteHRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIG14dF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IG14dF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiBAQCAtMzI5NCw4ICszMjk0LDYgQEAgc3RhdGljIGludCBteHRfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbXh0X2ZyZWVf b2JqZWN0X3RhYmxlKGRhdGEpOwo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfYnVsa19kaXNh YmxlKEFSUkFZX1NJWkUoZGF0YS0+cmVndWxhdG9ycyksCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEtPnJlZ3VsYXRvcnMp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCBteHRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYnUyMTAxM190cy5jCj4gYi9kcml2ZXJz L2lucHV0L3RvdWNoc2NyZWVuL2J1MjEwMTNfdHMuYwo+IGluZGV4IDJmMWYwZDc2MDdmOC4uMzRm NDIyZTI0NmVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYnUyMTAx M190cy5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9idTIxMDEzX3RzLmMKPiBA QCAtNTUyLDE1ICs1NTIsMTMgQEAgc3RhdGljIGludCBidTIxMDEzX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBidTIxMDEzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCBidTIxMDEzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYnUyMTAxM190cyAqdHMgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKiBNYWtlIHN1cmUgSVJR IHdpbGwgZXhpdCBxdWlja2x5IGV2ZW4gaWYgdGhlcmUgaXMgY29udGFjdAo+ICovCj4gwqDCoMKg wqDCoMKgwqDCoHRzLT50b3VjaF9zdG9wcGVkID0gdHJ1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgLyog VGhlIHJlc291cmNlcyB3aWxsIGJlIGZyZWVkIGJ5IGRldm0gKi8KPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYnUy MTAxM19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bnB1dC90b3VjaHNjcmVlbi9jeXR0c3A0X2kyYy5jCj4gYi9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL2N5dHRzcDRfaTJjLmMKPiBpbmRleCBjNjVjY2IyZjQ3MTYuLjI4YWU3YzE1Mzk3YSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRzcDRfaTJjLmMKPiArKysg Yi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRzcDRfaTJjLmMKPiBAQCAtNDMsMTMgKzQz LDExIEBAIHN0YXRpYyBpbnQgY3l0dHNwNF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHRzKTsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IGN5dHRzcDRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjeXR0c3A0X2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGN5dHRzcDQgKnRz ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgY3l0 dHNwNF9yZW1vdmUodHMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGN5dHRzcDRfaTJjX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vZWR0LWZ0NXgwNi5j Cj4gYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2VkdC1mdDV4MDYuYwo+IGluZGV4IGJiMmUx Y2JmZmJhNy4uMGMzMjUxMzJhOTU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hz Y3JlZW4vZWR0LWZ0NXgwNi5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9lZHQt ZnQ1eDA2LmMKPiBAQCAtMTI2NiwxMyArMTI2NiwxMSBAQCBzdGF0aWMgaW50IGVkdF9mdDV4MDZf dHNfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGVkdF9mdDV4MDZfdHNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGVkdF9mdDV4MDZfdHNfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBlZHRfZnQ1eDA2X3RzX2RhdGEgKnRzZGF0YSA9Cj4gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZWR0X2Z0NXgwNl90c190ZWFyZG93bl9kZWJ1 Z2ZzKHRzZGF0YSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGVkdF9mdDV4MDZfdHNfc3VzcGVuZChzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vZ29v ZGl4LmMKPiBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vZ29vZGl4LmMKPiBpbmRleCAzYWQ5 ODcwZGIxMDguLjE2MTdkZDkzMTg3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNo c2NyZWVuL2dvb2RpeC5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9nb29kaXgu Ywo+IEBAIC0xMzgzLDE0ICsxMzgzLDEyIEBAIHN0YXRpYyBpbnQgZ29vZGl4X3RzX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBnb29kaXhfdHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGdvb2RpeF90c19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGdvb2RpeF90c19kYXRh ICp0cyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDC oGlmICh0cy0+bG9hZF9jZmdfZnJvbV9kaXNrKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgd2FpdF9mb3JfY29tcGxldGlvbigmdHMtPmZpcm13YXJlX2xvYWRpbmdfY29tcGxldGUp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCBnb29kaXhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vbWlnb3JfdHMuYwo+IGIvZHJpdmVy cy9pbnB1dC90b3VjaHNjcmVlbi9taWdvcl90cy5jCj4gaW5kZXggNDJkM2ZkN2UwNGQ3Li43OWNk NjYwZDg3OWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9taWdvcl90 cy5jCj4gKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9taWdvcl90cy5jCj4gQEAgLTE3 Niw3ICsxNzYsNyBAQCBzdGF0aWMgaW50IG1pZ29yX3RzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycm9yOwo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgbWlnb3JfdHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIG1pZ29yX3RzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWlnb3JfdHNfcHJpdiAqcHJpdiA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTE4NSw4ICsxODUsNiBAQCBzdGF0aWMg aW50IG1pZ29yX3RzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoGtmcmVlKHByaXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGRldl9zZXRfZHJ2 ZGF0YSgmY2xpZW50LT5kZXYsIE5VTEwpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBtaWdvcl90c19zdXNwZW5k KHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNj cmVlbi9zNnN5NzYxLmMKPiBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vczZzeTc2MS5jCj4g aW5kZXggODVhMWY0NjVjMDk3Li4xYTdkMDAyODliNGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9p bnB1dC90b3VjaHNjcmVlbi9zNnN5NzYxLmMKPiArKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL3M2c3k3NjEuYwo+IEBAIC00NzUsMTEgKzQ3NSw5IEBAIHN0YXRpYyBpbnQgczZzeTc2MV9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgczZzeTc2MV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgczZzeTc2MV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxl KCZjbGllbnQtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHM2c3k3NjFfcnVudGltZV9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UKPiAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL3N0bWZ0cy5jCj4gYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3N0bWZ0cy5jCj4gaW5k ZXggYzE3NWQ0NGM1MmYzLi5kNWJkMTcwODA4ZmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1 dC90b3VjaHNjcmVlbi9zdG1mdHMuYwo+ICsrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4v c3RtZnRzLmMKPiBAQCAtNzM4LDExICs3MzgsOSBAQCBzdGF0aWMgaW50IHN0bWZ0c19wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc3RtZnRzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzdG1mdHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xpZW50 LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGludCBfX21heWJlX3VudXNlZCBzdG1mdHNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi90c2MyMDA0 LmMKPiBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdHNjMjAwNC5jCj4gaW5kZXggOWZkZDg3 MGM0YzBiLi5hOTU2NTM1M2VlOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNj cmVlbi90c2MyMDA0LmMKPiArKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3RzYzIwMDQu Ywo+IEBAIC00MywxMSArNDMsOSBAQCBzdGF0aWMgaW50IHRzYzIwMDRfcHJvYmUoc3RydWN0IGky Y19jbGllbnQgKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0c2MyMDA0X2NtZCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0 c2MyMDA0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCB0c2My MDA0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqB0c2MyMDB4X3JlbW92ZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRzYzIw MDRfaWR0YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvZmxhc2gvbGVkcy1h czM2NDVhLmMKPiBiL2RyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLWFzMzY0NWEuYwo+IGluZGV4IGFh M2Y4MmJlMGE5Yy4uYmIyMjQ5NzcxYWNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9mbGFz aC9sZWRzLWFzMzY0NWEuYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLWFzMzY0NWEu Ywo+IEBAIC03MjQsNyArNzI0LDcgQEAgc3RhdGljIGludCBhczM2NDVhX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJ2YWw7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBhczM2NDVhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCBhczM2NDVhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXMzNjQ1YSAqZmxhc2ggPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC03NDAsOCArNzQwLDYgQEAgc3RhdGlj IGludCBhczM2NDVhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgZndub2RlX2hhbmRsZV9wdXQoZmxhc2gtPmZsYXNoX25vZGUpOwo+IMKg wqDCoMKgwqDCoMKgwqBmd25vZGVfaGFuZGxlX3B1dChmbGFzaC0+aW5kaWNhdG9yX25vZGUpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFzMzY0NWFfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9sZWRzL2ZsYXNoL2xlZHMtbG0zNjAxeC5jCj4gYi9kcml2ZXJzL2xlZHMvZmxh c2gvbGVkcy1sbTM2MDF4LmMKPiBpbmRleCAzN2UxZDZlNjg2ODcuLjc4NzMwZTA2NmE3MyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvZmxhc2gvbGVkcy1sbTM2MDF4LmMKPiArKysgYi9kcml2 ZXJzL2xlZHMvZmxhc2gvbGVkcy1sbTM2MDF4LmMKPiBAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRp YyBpbnQgbG0zNjAxeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiBsbTM2MDF4X3JlZ2lzdGVyX2xlZHMobGVkLCBmd25vZGUpOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgbG0zNjAxeF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgbG0zNjAxeF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxtMzYwMXhfbGVkICpsZWQgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiBA QCAtNDUwLDggKzQ1MCw2IEBAIHN0YXRpYyBpbnQgbG0zNjAxeF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3dhcm4oJmNsaWVudC0+ZGV2LAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiRmFpbGVkIHRvIHB1dCBpbnRv IHN0YW5kYnkgKCVwZSlcbiIsCj4gRVJSX1BUUihyZXQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBsbTM2MDF4X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9mbGFzaC9sZWRz LXJ0NDUwNS5jCj4gYi9kcml2ZXJzL2xlZHMvZmxhc2gvbGVkcy1ydDQ1MDUuYwo+IGluZGV4IGVl MTI5YWI3MjU1ZC4uZTQwNGZlOGIwMzE0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9mbGFz aC9sZWRzLXJ0NDUwNS5jCj4gKysrIGIvZHJpdmVycy9sZWRzL2ZsYXNoL2xlZHMtcnQ0NTA1LmMK PiBAQCAtMzkzLDEyICszOTMsMTEgQEAgc3RhdGljIGludCBydDQ1MDVfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IHJ0NDUwNV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgcnQ0NTA1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcnQ0NTA1X3ByaXYgKnByaXYgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2ZsYXNoX3Jl bGVhc2UocHJpdi0+djRsMl9mbGFzaCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHJ0NDUwNV9zaHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1hbjMwMjU5YS5jIGIvZHJp dmVycy9sZWRzL2xlZHMtCj4gYW4zMDI1OWEuYwo+IGluZGV4IGEwZGYxZmIyODc3NC4uZTA3MmVl NTQwOWY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWFuMzAyNTlhLmMKPiArKysg Yi9kcml2ZXJzL2xlZHMvbGVkcy1hbjMwMjU5YS5jCj4gQEAgLTMzNCwxMyArMzM0LDExIEBAIHN0 YXRpYyBpbnQgYW4zMDI1OWFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYW4zMDI1 OWFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFuMzAy NTlhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgYW4zMDI1OWEgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZjaGlwLT5tdXRleCk7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBhbjMwMjU5YV9tYXRjaF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2xlZHMvbGVkcy1hdzIwMTMuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLWF3MjAxMy5j Cj4gaW5kZXggODBkOTM3NDU0YWVlLi4wYjUyZmM5MDk3YzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9sZWRzL2xlZHMtYXcyMDEzLmMKPiArKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1hdzIwMTMuYwo+ IEBAIC00MDEsMTUgKzQwMSwxMyBAQCBzdGF0aWMgaW50IGF3MjAxM19wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBhdzIwMTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIGF3MjAxM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGF3MjAxMyAqY2hpcCA9IGkyY19nZXRfY2xp ZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGF3MjAxM19jaGlwX2Rpc2Fi bGUoY2hpcCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmY2hpcC0+bXV0 ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXcyMDEzX21hdGNoX3RhYmxlW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWJkMjgwMi5jIGIvZHJpdmVycy9sZWRzL2xlZHMt YmQyODAyLmMKPiBpbmRleCA4YmJhZWY1YTI5ODYuLjJiNjY3OGY2YmQ1NiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2xlZHMvbGVkcy1iZDI4MDIuYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWJk MjgwMi5jCj4gQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGF0aWMgaW50IGJkMjgwMl9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBiZDI4MDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIGJkMjgwMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGJkMjgwMl9sZWQgKmxlZCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiBAQCAt NzMzLDggKzczMyw2IEBAIHN0YXRpYyBpbnQgYmQyODAyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiZDI4MDJfZGlz YWJsZV9hZHZfY29uZihsZWQpOwo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShiZDI4MDJfYXR0cmlidXRlcyk7IGkrKykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRldmljZV9yZW1vdmVfZmlsZSgmbGVkLT5jbGllbnQtPmRldiwKPiBiZDI4MDJf YXR0cmlidXRlc1tpXSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9s ZWRzLWJsaW5rbS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtYmxpbmttLmMKPiBpbmRleCBiZDdkMGQ1 Y2YzYjYuLjNmYjZhMmZkYWVmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1ibGlu a20uYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWJsaW5rbS5jCj4gQEAgLTY3Nyw3ICs2Nzcs NyBAQCBzdGF0aWMgaW50IGJsaW5rbV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQs Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBi bGlua21fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJs aW5rbV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGJsaW5rbV9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVu dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQgPSAwOwo+IEBAIC03MTYsNyArNzE2LDYgQEAg c3RhdGljIGludCBibGlua21fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIoJmNsaWVudC0+ZGV2LCAiRmFp bHVyZSBpbiBibGlua21fcmVtb3ZlCj4gaWdub3JlZC4gQ29udGludWluZy5cbiIpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoHN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmJs aW5rbV9ncm91cCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBibGlua21faWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtaXMzMWZsMzE5eC5jIGIvZHJpdmVycy9sZWRzL2xlZHMt Cj4gaXMzMWZsMzE5eC5jCj4gaW5kZXggNDE2MWI5ZGQ3ZTQ4Li43YWVlNjIyMTE3NTAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtaXMzMWZsMzE5eC5jCj4gKysrIGIvZHJpdmVycy9s ZWRzL2xlZHMtaXMzMWZsMzE5eC5jCj4gQEAgLTQxNCwxMiArNDE0LDExIEBAIHN0YXRpYyBpbnQg aXMzMWZsMzE5eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpczMxZmwzMTl4X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpczMxZmwzMTl4 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaXMzMWZsMzE5eF9jaGlwICppczMxID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVu dCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmaXMzMS0+bG9jayk7Cj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbGVkcy9sZWRzLWlzMzFmbDMyeHguYyBiL2RyaXZlcnMvbGVkcy9sZWRzLQo+IGlz MzFmbDMyeHguYwo+IGluZGV4IGZjNjNmY2UzOGMxOS4uMGQyMTljMWFjM2I1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbGVkcy9sZWRzLWlzMzFmbDMyeHguYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9s ZWRzLWlzMzFmbDMyeHguYwo+IEBAIC00NTcsNyArNDU3LDcgQEAgc3RhdGljIGludCBpczMxZmwz Mnh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpczMxZmwzMnh4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpczMxZmwzMnh4X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg aXMzMWZsMzJ4eF9wcml2ICpwcml2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDC oMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gQEAgLTQ2Niw4ICs0NjYsNiBAQCBzdGF0aWMgaW50IGlz MzFmbDMyeHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKg wqDCoMKgaWYgKHJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9lcnIo JmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHJlc2V0IHJlZ2lzdGVycyBvbgo+IHJlbW92YWwgKCVw ZSlcbiIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg RVJSX1BUUihyZXQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWxtMzUzMC5jIGIvZHJpdmVy cy9sZWRzL2xlZHMtbG0zNTMwLmMKPiBpbmRleCBlNzIzOTM1MzRiNzIuLmJhOTA2YzI1M2M3ZiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1sbTM1MzAuYwo+ICsrKyBiL2RyaXZlcnMv bGVkcy9sZWRzLWxtMzUzMC5jCj4gQEAgLTQ3MCwxMyArNDcwLDEyIEBAIHN0YXRpYyBpbnQgbG0z NTMwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBsbTM1MzBfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxtMzUzMF9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxtMzUzMF9k YXRhICpkcnZkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgbG0zNTMwX2xlZF9kaXNhYmxlKGRydmRhdGEpOwo+IMKgwqDCoMKgwqDCoMKgwqBs ZWRfY2xhc3NkZXZfdW5yZWdpc3RlcigmZHJ2ZGF0YS0+bGVkX2Rldik7Cj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZV9pZCBsbTM1MzBfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtbG0z NTMyLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1sbTM1MzIuYwo+IGluZGV4IGJlYjUzMDQwZTA5ZS4u ZGI2NGQ0NGJjYmJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWxtMzUzMi5jCj4g KysrIGIvZHJpdmVycy9sZWRzL2xlZHMtbG0zNTMyLmMKPiBAQCAtNzA0LDcgKzcwNCw3IEBAIHN0 YXRpYyBpbnQgbG0zNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxtMzUzMl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbG0zNTMyX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgbG0zNTMyX2RhdGEgKmRydmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IEBAIC03MTIsOCArNzEyLDYgQEAgc3RhdGljIGludCBsbTM1MzJfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZHJ2ZGF0 YS0+ZW5hYmxlX2dwaW8pCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBncGlvZF9k aXJlY3Rpb25fb3V0cHV0KGRydmRhdGEtPmVuYWJsZV9ncGlvLCAwKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG9mX2xtMzUzMl9sZWRzX21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bGVkcy9sZWRzLWxtMzU1eC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtbG0zNTV4LmMKPiBpbmRleCAy ZDNlMTE4NDViYTUuLmRhYTM1OTI3YjMwMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVk cy1sbTM1NXguYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWxtMzU1eC5jCj4gQEAgLTQ5MSw3 ICs0OTEsNyBAQCBzdGF0aWMgaW50IGxtMzU1eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBsbTM1NXhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIGxtMzU1eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGxtMzU1eF9jaGlwX2RhdGEgKmNoaXAgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxtMzU1eF9yZWdfZGF0YSAq cHJlZyA9IGNoaXAtPnJlZ3M7Cj4gQEAgLTUwMSw4ICs1MDEsNiBAQCBzdGF0aWMgaW50IGxtMzU1 eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBs ZWRfY2xhc3NkZXZfdW5yZWdpc3RlcigmY2hpcC0+Y2Rldl90b3JjaCk7Cj4gwqDCoMKgwqDCoMKg wqDCoGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZjaGlwLT5jZGV2X2ZsYXNoKTsKPiDCoMKgwqDC oMKgwqDCoMKgZGV2X2luZm8oJmNsaWVudC0+ZGV2LCAiJXMgaXMgcmVtb3ZlZFxuIiwgbG0zNTV4 X25hbWVbY2hpcC0KPiA+dHlwZV0pOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxtMzU1eF9pZFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1sbTM2NDIuYyBiL2RyaXZlcnMv bGVkcy9sZWRzLWxtMzY0Mi5jCj4gaW5kZXggNDM1MzA5MTU0ZTZiLi40MjhhNWQ5MjgxNTAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtbG0zNjQyLmMKPiArKysgYi9kcml2ZXJzL2xl ZHMvbGVkcy1sbTM2NDIuYwo+IEBAIC0zODAsNyArMzgwLDcgQEAgc3RhdGljIGludCBsbTM2NDJf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbG0zNjQyX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsbTM2NDJfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsbTM2NDJfY2hp cF9kYXRhICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMzg4 LDcgKzM4OCw2IEBAIHN0YXRpYyBpbnQgbG0zNjQyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZjaGlw LT5jZGV2X3RvcmNoKTsKPiDCoMKgwqDCoMKgwqDCoMKgbGVkX2NsYXNzZGV2X3VucmVnaXN0ZXIo JmNoaXAtPmNkZXZfZmxhc2gpOwo+IMKgwqDCoMKgwqDCoMKgwqByZWdtYXBfd3JpdGUoY2hpcC0+ cmVnbWFwLCBSRUdfRU5BQkxFLCAwKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxtMzY0Ml9pZFtdID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1sbTM2OTJ4LmMgYi9kcml2ZXJzL2xl ZHMvbGVkcy0KPiBsbTM2OTJ4LmMKPiBpbmRleCA4N2NkMjRjZTNmOTUuLjU0YjQ2NjJiZmY0MSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1sbTM2OTJ4LmMKPiArKysgYi9kcml2ZXJz L2xlZHMvbGVkcy1sbTM2OTJ4LmMKPiBAQCAtNDkxLDE0ICs0OTEsMTIgQEAgc3RhdGljIGludCBs bTM2OTJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBsbTM2OTJ4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsbTM2OTJ4X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbG0z NjkyeF9sZWQgKmxlZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoGxtMzY5MnhfbGVkc19kaXNhYmxlKGxlZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11 dGV4X2Rlc3Ryb3koJmxlZC0+bG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbG0zNjkyeF9p ZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1sbTM2OTcuYyBiL2RyaXZl cnMvbGVkcy9sZWRzLWxtMzY5Ny5jCj4gaW5kZXggM2VjZjkwZmJjMDZjLi43MTIzMWE2MGVlYmMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtbG0zNjk3LmMKPiArKysgYi9kcml2ZXJz L2xlZHMvbGVkcy1sbTM2OTcuYwo+IEBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIGludCBsbTM2 OTdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gbG0zNjk3X2luaXQobGVkKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxtMzY5N19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbG0zNjk3X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgbG0zNjk3ICpsZWQgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2ID0gJmxlZC0+Y2xpZW50LT5kZXY7Cj4gQEAgLTM1 OCw4ICszNTgsNiBAQCBzdGF0aWMgaW50IGxtMzY5N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0 ZXhfZGVzdHJveSgmbGVkLT5sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBsbTM2OTdfaWRb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtbHAzOTQ0LmMgYi9kcml2ZXJz L2xlZHMvbGVkcy1scDM5NDQuYwo+IGluZGV4IDQzN2M3MTFiMmEyNy4uNjczYWQ4YzA0ZjQxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWxwMzk0NC5jCj4gKysrIGIvZHJpdmVycy9s ZWRzL2xlZHMtbHAzOTQ0LmMKPiBAQCAtMzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBpbnQgbHAzOTQ0 X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBscDM5NDRfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxwMzk0NF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxwMzk0NF9wbGF0 Zm9ybV9kYXRhICpwZGF0YSA9Cj4gZGV2X2dldF9wbGF0ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHAzOTQ0X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiBAQCAtNDE0LDggKzQxNCw2IEBAIHN0YXRpYyBpbnQgbHAzOTQ0X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWZhdWx0Ogo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogbHAzOTQ0IGkyYyBk cml2ZXIgc3RydWN0ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWxwMzk1Mi5j IGIvZHJpdmVycy9sZWRzL2xlZHMtbHAzOTUyLmMKPiBpbmRleCA2ZWU5MTMxZmJmMjUuLmJmMGFk MWI1Y2UyNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1scDM5NTIuYwo+ICsrKyBi L2RyaXZlcnMvbGVkcy9sZWRzLWxwMzk1Mi5jCj4gQEAgLTI1NSwxNSArMjU1LDEzIEBAIHN0YXRp YyBpbnQgbHAzOTUyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBscDM5NTJfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxwMzk1Ml9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGxwMzk1Ml9sZWRfYXJyYXkgKnByaXY7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcHJpdiA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBscDM5NTJfb25fb2Zm KHByaXYsIExQMzk1Ml9MRURfQUxMLCBmYWxzZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGdwaW9kX3Nl dF92YWx1ZShwcml2LT5lbmFibGVfZ3BpbywgMCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbHAz OTUyX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWxwNTB4eC5jIGIv ZHJpdmVycy9sZWRzL2xlZHMtbHA1MHh4LmMKPiBpbmRleCBlMTI5ZGNjNjU2YjguLjI4ZDZiMzlm YTcyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1scDUweHguYwo+ICsrKyBiL2Ry aXZlcnMvbGVkcy9sZWRzLWxwNTB4eC5jCj4gQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgaW50 IGxwNTB4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiBscDUweHhfcHJvYmVfZHQobGVkKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGxwNTB4eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg bHA1MHh4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgbHA1MHh4ICpsZWQgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiBAQCAtNTc5LDggKzU3OSw2IEBAIHN0YXRpYyBp bnQgbHA1MHh4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZsZWQtPmxvY2sp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxwNTB4eF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2xlZHMvbGVkcy1scDU1MjEuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLWxwNTUyMS5jCj4g aW5kZXggYTllNzUwN2M5OThjLi43ZmYyMGMyNjA1MDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9s ZWRzL2xlZHMtbHA1NTIxLmMKPiArKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1scDU1MjEuYwo+IEBA IC01NzksNyArNTc5LDcgQEAgc3RhdGljIGludCBscDU1MjFfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgbHA1NTIxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBscDU1MjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBscDU1eHhfbGVkICpsZWQgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxwNTV4eF9jaGlwICpjaGlw ID0gbGVkLT5jaGlwOwo+IEBAIC01ODcsOCArNTg3LDYgQEAgc3RhdGljIGludCBscDU1MjFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbHA1NTIx X3N0b3BfYWxsX2VuZ2luZXMoY2hpcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGxwNTV4eF91bnJlZ2lz dGVyX3N5c2ZzKGNoaXApOwo+IMKgwqDCoMKgwqDCoMKgwqBscDU1eHhfZGVpbml0X2RldmljZShj aGlwKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBscDU1MjFfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9sZWRzL2xlZHMtbHA1NTIzLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1scDU1MjMu Ywo+IGluZGV4IGIxNTkwY2I0YTE4OC4uMzY5ZDQwYjBiNjViIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbGVkcy9sZWRzLWxwNTUyMy5jCj4gKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtbHA1NTIzLmMK PiBAQCAtOTQ3LDcgKzk0Nyw3IEBAIHN0YXRpYyBpbnQgbHA1NTIzX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IGxwNTUyM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgbHA1NTIzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA1NXh4X2xlZCAqbGVkID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBscDU1eHhfY2hpcCAq Y2hpcCA9IGxlZC0+Y2hpcDsKPiBAQCAtOTU1LDggKzk1NSw2IEBAIHN0YXRpYyBpbnQgbHA1NTIz X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGxw NTUyM19zdG9wX2FsbF9lbmdpbmVzKGNoaXApOwo+IMKgwqDCoMKgwqDCoMKgwqBscDU1eHhfdW5y ZWdpc3Rlcl9zeXNmcyhjaGlwKTsKPiDCoMKgwqDCoMKgwqDCoMKgbHA1NXh4X2RlaW5pdF9kZXZp Y2UoY2hpcCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbHA1NTIzX2lkW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWxwNTU2Mi5jIGIvZHJpdmVycy9sZWRzL2xlZHMtbHA1 NTYyLmMKPiBpbmRleCAzMWMxNDAxNmQyODkuLjBlNDkwMDg1ZmYzNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2xlZHMvbGVkcy1scDU1NjIuYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWxwNTU2 Mi5jCj4gQEAgLTU3Myw3ICs1NzMsNyBAQCBzdGF0aWMgaW50IGxwNTU2Ml9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBscDU1NjJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIGxwNTU2Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxwNTV4eF9sZWQgKmxlZCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA1NXh4X2No aXAgKmNoaXAgPSBsZWQtPmNoaXA7Cj4gQEAgLTU4Miw4ICs1ODIsNiBAQCBzdGF0aWMgaW50IGxw NTU2Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoGxwNTV4eF91bnJlZ2lzdGVyX3N5c2ZzKGNoaXApOwo+IMKgwqDCoMKgwqDCoMKgwqBs cDU1eHhfZGVpbml0X2RldmljZShjaGlwKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBscDU1NjJf aWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtbHA4NTAxLmMgYi9kcml2 ZXJzL2xlZHMvbGVkcy1scDg1MDEuYwo+IGluZGV4IDJkMmZkYTJhYjEwNC4uYWUxMWEwMmMwYWIy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWxwODUwMS5jCj4gKysrIGIvZHJpdmVy cy9sZWRzL2xlZHMtbHA4NTAxLmMKPiBAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgbHA4 NTAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxwODUwMV9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbHA4NTAxX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA1NXh4 X2xlZCAqbGVkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBscDU1eHhfY2hpcCAqY2hpcCA9IGxlZC0+Y2hpcDsKPiBAQCAtMzcwLDggKzM3MCw2 IEBAIHN0YXRpYyBpbnQgbHA4NTAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoGxwODUwMV9zdG9wX2VuZ2luZShjaGlwKTsKPiDCoMKgwqDCoMKg wqDCoMKgbHA1NXh4X3VucmVnaXN0ZXJfc3lzZnMoY2hpcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGxw NTV4eF9kZWluaXRfZGV2aWNlKGNoaXApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxwODUwMV9p ZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1scDg4NjAuYyBiL2RyaXZl cnMvbGVkcy9sZWRzLWxwODg2MC5jCj4gaW5kZXggM2M2OTNkNWUzYjQ0Li5lMmIzNmQzMTg3ZWIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtbHA4ODYwLmMKPiArKysgYi9kcml2ZXJz L2xlZHMvbGVkcy1scDg4NjAuYwo+IEBAIC00NDUsNyArNDQ1LDcgQEAgc3RhdGljIGludCBscDg4 NjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxwODg2MF9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbHA4ODYwX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA4ODYwX2xl ZCAqbGVkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlu dCByZXQ7Cj4gQEAgLTQ2MSw4ICs0NjEsNiBAQCBzdGF0aWMgaW50IGxwODg2MF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmbGVkLT5sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZV9pZCBscDg4NjBfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtcGNh OTUzMi5jIGIvZHJpdmVycy9sZWRzL2xlZHMtCj4gcGNhOTUzMi5jCj4gaW5kZXggZjcyYjVkMWJl M2E2Li5kZjgzZDk3Y2I0NzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUz Mi5jCj4gKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jCj4gQEAgLTUyLDcgKzUyLDcg QEAgc3RydWN0IHBjYTk1MzJfZGF0YSB7Cj4gwqAKPiDCoHN0YXRpYyBpbnQgcGNhOTUzMl9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1 Y3QgaTJjX2RldmljZV9pZCAqaWQpOwo+IC1zdGF0aWMgaW50IHBjYTk1MzJfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpOwo+ICtzdGF0aWMgdm9pZCBwY2E5NTMyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKPiDCoAo+IMKgZW51bSB7Cj4gwqDCoMKgwqDCoMKgwqDC oHBjYTk1MzAsCj4gQEAgLTU0NiwxMyArNTQ2LDExIEBAIHN0YXRpYyBpbnQgcGNhOTUzMl9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBw Y2E5NTMyX2NvbmZpZ3VyZShjbGllbnQsIGRhdGEsIHBjYTk1MzJfcGRhdGEpOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgcGNhOTUzMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgcGNhOTUzMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBjYTk1MzJfZGF0YSAqZGF0YSA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBjYTk1MzJfZGVz dHJveV9kZXZpY2VzKGRhdGEsIGRhdGEtPmNoaXBfaW5mby0+bnVtX2xlZHMpOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgbW9kdWxlX2kyY19kcml2ZXIocGNh OTUzMl9kcml2ZXIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy10Y2E2NTA3LmMg Yi9kcml2ZXJzL2xlZHMvbGVkcy0KPiB0Y2E2NTA3LmMKPiBpbmRleCAxNDczY2VkODY2NGMuLjE2 MWJlZjY1YzZiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy10Y2E2NTA3LmMKPiAr KysgYi9kcml2ZXJzL2xlZHMvbGVkcy10Y2E2NTA3LmMKPiBAQCAtNzkwLDcgKzc5MCw3IEBAIHN0 YXRpYyBpbnQgdGNhNjUwN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0Y2E2NTA3 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0Y2E2NTA3 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBpbnQgaTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRjYTY1MDdfY2hpcCAqdGNhID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gQEAgLTgwMiw4ICs4MDIsNiBAQCBzdGF0aWMgaW50 IHRjYTY1MDdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqB0Y2E2NTA3X3JlbW92ZV9ncGlvKHRjYSk7Cj4gwqDC oMKgwqDCoMKgwqDCoGNhbmNlbF93b3JrX3N5bmMoJnRjYS0+d29yayk7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIg dGNhNjUwN19kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXR1cnJp cy1vbW5pYS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtCj4gdHVycmlzLW9tbmlhLmMKPiBpbmRleCAx YWRmZWQxYzA2MTkuLjY2MDQwZTg2MjFhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2xlZHMvbGVk cy10dXJyaXMtb21uaWEuYwo+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLXR1cnJpcy1vbW5pYS5j Cj4gQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW50IG9tbmlhX2xlZHNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IG9tbmlhX2xlZHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIG9tbmlhX2xlZHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHU4IGJ1Zls1XTsKPiDCoAo+IEBAIC0y NjEsOCArMjYxLDYgQEAgc3RhdGljIGludCBvbW5pYV9sZWRzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGJ1Zls0XSA9IDI1NTsKPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqBpMmNfbWFzdGVyX3NlbmQoY2xpZW50LCBidWYsIDUpOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgb2Zfb21uaWFfbGVkc19tYXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21hY2ludG9zaC9hbXMvYW1zLWkyYy5jCj4gYi9kcml2ZXJzL21hY2ludG9zaC9hbXMvYW1z LWkyYy5jCj4gaW5kZXggZDJmMGNkZTZmOWM3Li4zNjJmYzU2YjY5ZGMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tYWNpbnRvc2gvYW1zL2Ftcy1pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbWFjaW50b3No L2Ftcy9hbXMtaTJjLmMKPiBAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBpbnQgYW1zX2kyY19w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYW1zX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYW1zX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGFtc19pbmZvLmhhc19k ZXZpY2UpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFtc19zZW5zb3JfZGV0 YWNoKCk7Cj4gQEAgLTI0NSw4ICsyNDUsNiBAQCBzdGF0aWMgaW50IGFtc19pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYW1zX2luZm8uaGFzX2RldmljZSA9IDA7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGFt c19pMmNfZXhpdCh2b2lkKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV9h ZHQ3NDZ4LmMKPiBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0NnguYwo+IGluZGV4IGU2 MDRjYmM5MTc2My4uYjAwNGVhMmExMTAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWFjaW50b3No L3RoZXJtX2FkdDc0NnguYwo+ICsrKyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0Nngu Ywo+IEBAIC01NjMsNyArNTYzLDcgQEAgc3RhdGljIGludCBwcm9iZV90aGVybW9zdGF0KHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCByZW1vdmVfdGhlcm1vc3RhdChzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCByZW1vdmVfdGhlcm1vc3RhdChzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGhlcm1vc3RhdCAqdGgg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGk7Cj4g QEAgLTU4NSw4ICs1ODUsNiBAQCBzdGF0aWMgaW50IHJlbW92ZV90aGVybW9zdGF0KHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgd3JpdGVfYm90aF9mYW5fc3Bl ZWQodGgsIC0xKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZSh0aCk7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgdGhlcm1fYWR0NzQ2eF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21hY2ludG9zaC90aGVybV93aW5kdHVubmVsLmMKPiBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJt X3dpbmR0dW5uZWwuYwo+IGluZGV4IDkyMjZiNzRmYTA4Zi4uNjFmZTJhYjkxMGI4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYwo+ICsrKyBiL2RyaXZl cnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYwo+IEBAIC0zMzQsNyArMzM0LDcgQEAgc3Rh dGljIHZvaWQgZG9fYXR0YWNoKHN0cnVjdCBpMmNfYWRhcHRlcgo+ICphZGFwdGVyKQo+IMKgwqDC oMKgwqDCoMKgwqB9Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludAo+ICtzdGF0aWMgdm9pZAo+IMKg ZG9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoGlmICh4LnJ1bm5pbmcpIHsKPiBAQCAtMzQ4LDggKzM0OCw2IEBAIGRvX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg eC5mYW4gPSBOVUxMOwo+IMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwcmludGsoS0VSTl9FUlIgImc0ZmFuOiBiYWQgY2xpZW50XG4iKTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fYWQ3NDE3X3NlbnNvci5jCj4g Yi9kcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9hZDc0MTdfc2Vuc29yLmMKPiBpbmRleCA2YWQ2 NDQxYWJjYmMuLmM1YzU0YTRjZTkxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21hY2ludG9zaC93 aW5kZmFybV9hZDc0MTdfc2Vuc29yLmMKPiArKysgYi9kcml2ZXJzL21hY2ludG9zaC93aW5kZmFy bV9hZDc0MTdfc2Vuc29yLmMKPiBAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbnQgd2ZfYWQ3 NDE3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB3Zl9hZDc0MTdfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHdmX2FkNzQxN19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdm X2FkNzQxN19wcml2ICpwdiA9IGRldl9nZXRfZHJ2ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKgwqDC oMKgwqDCoMKgwqBpbnQgaTsKPiBAQCAtMzAyLDggKzMwMiw2IEBAIHN0YXRpYyBpbnQgd2ZfYWQ3 NDE3X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB3Zl91bnJlZ2lzdGVyX3NlbnNvcigmcHYtPnNlbnNvcnNbaV0pOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtyZWZfcHV0KCZwdi0+cmVmLCB3Zl9hZDc0MTdfcmVsZWFz ZSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgd2ZfYWQ3NDE3X2lkW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWFjaW50b3NoL3dpbmRmYXJtX2ZjdV9jb250cm9scy5jCj4gYi9kcml2ZXJz L21hY2ludG9zaC93aW5kZmFybV9mY3VfY29udHJvbHMuYwo+IGluZGV4IDgyZTdiMjAwNWFlNy4u YzViMWNhNWJjZDczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3dpbmRmYXJtX2Zj dV9jb250cm9scy5jCj4gKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fZmN1X2NvbnRy b2xzLmMKPiBAQCAtNTYwLDcgKzU2MCw3IEBAIHN0YXRpYyBpbnQgd2ZfZmN1X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCB3Zl9mY3VfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIHdmX2ZjdV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdmX2ZjdV9wcml2ICpwdiA9IGRldl9n ZXRfZHJ2ZGF0YSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd2ZfZmN1 X2ZhbiAqZmFuOwo+IEBAIC01NzEsNyArNTcxLDYgQEAgc3RhdGljIGludCB3Zl9mY3VfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHdmX3VucmVnaXN0ZXJfY29udHJvbCgmZmFuLT5jdHJsKTsKPiDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgwqDCoMKgwqDCoMKgwqBrcmVmX3B1dCgmcHYtPnJlZiwgd2ZfZmN1X3JlbGVhc2Up Owo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qg c3RydWN0IGkyY19kZXZpY2VfaWQgd2ZfZmN1X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWFjaW50b3NoL3dpbmRmYXJtX2xtNzVfc2Vuc29yLmMKPiBiL2RyaXZlcnMvbWFjaW50b3No L3dpbmRmYXJtX2xtNzVfc2Vuc29yLmMKPiBpbmRleCBlYjdlN2YwYmQyMTkuLjIwNDY2MWM4ZTkx OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9sbTc1X3NlbnNvci5j Cj4gKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fbG03NV9zZW5zb3IuYwo+IEBAIC0x NDcsNyArMTQ3LDcgQEAgc3RhdGljIGludCB3Zl9sbTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgd2ZfbG03NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgd2ZfbG03NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdmX2xtNzVfc2Vuc29yICpsbSA9IGkyY19nZXRfY2xp ZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTE1Niw4ICsxNTYsNiBAQCBzdGF0aWMgaW50IHdm X2xtNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqAvKiByZWxlYXNlIHNlbnNvciAqLwo+IMKgwqDCoMKgwqDCoMKgwqB3Zl91bnJlZ2lz dGVyX3NlbnNvcigmbG0tPnNlbnMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHdmX2xtNzVfaWRb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fbG04N19zZW5z b3IuYwo+IGIvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fbG04N19zZW5zb3IuYwo+IGluZGV4 IDgwN2VmZGRlODZiYy4uNDBkMjU0NjMzNDZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWFjaW50 b3NoL3dpbmRmYXJtX2xtODdfc2Vuc29yLmMKPiArKysgYi9kcml2ZXJzL21hY2ludG9zaC93aW5k ZmFybV9sbTg3X3NlbnNvci5jCj4gQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgaW50IHdmX2xt ODdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmM7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB3Zl9sbTg3X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB3Zl9sbTg3X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd2ZfbG04 N19zZW5zb3IgKmxtID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMTU0 LDggKzE1NCw2IEBAIHN0YXRpYyBpbnQgd2ZfbG04N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qIHJlbGVhc2Ugc2Vuc29yICovCj4g wqDCoMKgwqDCoMKgwqDCoHdmX3VucmVnaXN0ZXJfc2Vuc29yKCZsbS0+c2Vucyk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgd2ZfbG04N19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21h Y2ludG9zaC93aW5kZmFybV9tYXg2NjkwX3NlbnNvci5jCj4gYi9kcml2ZXJzL21hY2ludG9zaC93 aW5kZmFybV9tYXg2NjkwX3NlbnNvci5jCj4gaW5kZXggNTVlZTQxN2ZiODc4Li5jMGQ0MDRlYmM3 OTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fbWF4NjY5MF9zZW5z b3IuYwo+ICsrKyBiL2RyaXZlcnMvbWFjaW50b3NoL3dpbmRmYXJtX21heDY2OTBfc2Vuc29yLmMK PiBAQCAtMTA0LDE0ICsxMDQsMTIgQEAgc3RhdGljIGludCB3Zl9tYXg2NjkwX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgd2ZfbWF4NjY5MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgd2ZfbWF4NjY5MF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdmXzY2OTBfc2Vuc29y ICptYXggPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqBtYXgtPmkyYyA9IE5VTEw7Cj4gwqDCoMKgwqDCoMKgwqDCoHdmX3VucmVnaXN0ZXJfc2Vuc29y KCZtYXgtPnNlbnMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHdmX21heDY2OTBfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvd2luZGZhcm1fc211X3NhdC5jCj4gYi9k cml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9zbXVfc2F0LmMKPiBpbmRleCA1YWRlNjI3ZWFhNzgu LmJlNWQ0NTkzZGI5MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9z bXVfc2F0LmMKPiArKysgYi9kcml2ZXJzL21hY2ludG9zaC93aW5kZmFybV9zbXVfc2F0LmMKPiBA QCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyBpbnQgd2Zfc2F0X3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCB3Zl9zYXRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIHdmX3NhdF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdmX3NhdCAqc2F0ID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3Zl9zYXRfc2Vuc29yICpzZW5zOwo+ IEBAIC0zMzAsOCArMzMwLDYgQEAgc3RhdGljIGludCB3Zl9zYXRfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqBz YXQtPmkyYyA9IE5VTEw7Cj4gwqDCoMKgwqDCoMKgwqDCoGtyZWZfcHV0KCZzYXQtPnJlZiwgd2Zf c2F0X3JlbGVhc2UpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHdmX3NhdF9pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NlYy9pMmMvY2g3MzIyLmMKPiBiL2RyaXZlcnMvbWVk aWEvY2VjL2kyYy9jaDczMjIuYwo+IGluZGV4IDA4MTQzMzhjNDNlNC4uMzRmYWQ3MTIzNzA0IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY2VjL2kyYy9jaDczMjIuYwo+ICsrKyBiL2RyaXZl cnMvbWVkaWEvY2VjL2kyYy9jaDczMjIuYwo+IEBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIGlu dCBjaDczMjJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY2g3MzIyX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjaDczMjJfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBj aDczMjIgKmNoNzMyMiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTU3 OCw4ICs1NzgsNiBAQCBzdGF0aWMgaW50IGNoNzMyMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZjaDczMjItPm11dGV4 KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfaW5mbygmY2xpZW50LT5kZXYsICJkZXZpY2Ug dW5yZWdpc3RlcmVkXG4iKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNoNzMyMl9vZl9tYXRjaFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYTgyOTMuYyBi L2RyaXZlcnMvbWVkaWEvZHZiLQo+IGZyb250ZW5kcy9hODI5My5jCj4gaW5kZXggNTdmNTJjMDA0 YTIzLi5iYTM4NzgzYjJiNGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRl bmRzL2E4MjkzLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYTgyOTMuYwo+ IEBAIC05OCwxNCArOTgsMTMgQEAgc3RhdGljIGludCBhODI5M19wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgYTgyOTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIGE4MjkzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYTgyOTNfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfZGJnKCZjbGllbnQtPmRldiwg IlxuIik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNl X2lkIGE4MjkzX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZi LWZyb250ZW5kcy9hZjkwMTMuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2FmOTAx My5jCj4gaW5kZXggN2Q3YzM0MWIyYmQ4Li5kODU5Mjk1ODJjM2YgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2FmOTAxMy5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL2FmOTAxMy5jCj4gQEAgLTE1NDAsNyArMTU0MCw3IEBAIHN0YXRpYyBpbnQg YWY5MDEzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFmOTAxM19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWY5MDEzX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWY5 MDEzX3N0YXRlICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAg LTE1NTEsOCArMTU1MSw2IEBAIHN0YXRpYyBpbnQgYWY5MDEzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9leGl0KHN0YXRlLT5yZWdt YXApOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHN0YXRlKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBhZjkwMTNfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9kdmItZnJvbnRlbmRzL2FmOTAzMy5jCj4gYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMv YWY5MDMzLmMKPiBpbmRleCA3ODVjNDliM2QzMDcuLjgwOGRhN2E5ZmZlNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYWY5MDMzLmMKPiArKysgYi9kcml2ZXJzL21l ZGlhL2R2Yi1mcm9udGVuZHMvYWY5MDMzLmMKPiBAQCAtMTE2Myw3ICsxMTYzLDcgQEAgc3RhdGlj IGludCBhZjkwMzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWY5MDMzX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZjkwMzNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBhZjkwMzNfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBA IC0xMTcxLDggKzExNzEsNiBAQCBzdGF0aWMgaW50IGFmOTAzM19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9leGl0KGRldi0+ cmVnbWFwKTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZV9pZCBhZjkwMzNfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL2F1ODUyMl9kZWNvZGVyLmMKPiBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250 ZW5kcy9hdTg1MjJfZGVjb2Rlci5jCj4gaW5kZXggOGNkY2EwNTFlNTFiLi5lNGY5OWJkNDY4Y2Ig MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2F1ODUyMl9kZWNvZGVy LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYXU4NTIyX2RlY29kZXIuYwo+ IEBAIC03NTgsMTMgKzc1OCwxMiBAQCBzdGF0aWMgaW50IGF1ODUyMl9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgYXU4NTIyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCBhdTg1MjJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rl cl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKHNk LT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBhdTg1MjJfcmVsZWFzZV9zdGF0ZSh0 b19zdGF0ZShzZCkpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYXU4NTIyX2lkW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9jeGQyMDk5LmMKPiBiL2RyaXZlcnMv bWVkaWEvZHZiLWZyb250ZW5kcy9jeGQyMDk5LmMKPiBpbmRleCAxYzgyMDdhYjg5ODguLmZiYzY2 NmZhMDRlYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjA5 OS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2N4ZDIwOTkuYwo+IEBAIC02 NjQsMTQgKzY2NCwxMiBAQCBzdGF0aWMgaW50IGN4ZDIwOTlfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgY3hkMjA5OV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgY3hkMjA5OV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGN4ZCAqY2kgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWdtYXBfZXhpdChjaS0+cmVnbWFwKTsK PiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoY2kpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGN4ZDIw OTlfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2N4 ZDI4MjByX2NvcmUuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2N4ZDI4MjByX2Nv cmUuYwo+IGluZGV4IGIxNjE4MzM5ZWVjMC4uNWQ5ODIyMmY5ZGYwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9jeGQyODIwcl9jb3JlLmMKPiArKysgYi9kcml2ZXJz L21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjgyMHJfY29yZS5jCj4gQEAgLTcwNSw3ICs3MDUsNyBA QCBzdGF0aWMgaW50IGN4ZDI4MjByX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGN4 ZDI4MjByX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBj eGQyODIwcl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGN4ZDI4MjByX3ByaXYgKnByaXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IEBAIC03MjEsOCArNzIxLDYgQEAgc3RhdGljIGludCBjeGQyODIwcl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZWdt YXBfZXhpdChwcml2LT5yZWdtYXBbMF0pOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHBy aXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGN4ZDI4MjByX2lkX3RhYmxlW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9kdmItcGxsLmMKPiBiL2RyaXZl cnMvbWVkaWEvZHZiLWZyb250ZW5kcy9kdmItcGxsLmMKPiBpbmRleCBkNDViNGRkYzhmOTEuLmJh ZjJhMzc4ZTU2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvZHZi LXBsbC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2R2Yi1wbGwuYwo+IEBA IC04OTksMTQgKzg5OSwxMyBAQCBkdmJfcGxsX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQsIGNvbnN0Cj4gc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGR2Yl9wbGxfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGR2Yl9wbGxfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkdmJfZnJv bnRlbmQgKmZlID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBkdmJfcGxsX3ByaXYgKnByaXYgPSBmZS0+dHVuZXJfcHJpdjsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBpZGFfc2ltcGxlX3JlbW92ZSgmcGxsX2lkYSwgcHJpdi0+bnIpOwo+IMKgwqDC oMKgwqDCoMKgwqBkdmJfcGxsX3JlbGVhc2UoZmUpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRl bmRzL2xnZHQzMzA2YS5jCj4gYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbGdkdDMzMDZh LmMKPiBpbmRleCAxMzZiNzZjYjQ4MDcuLjQyNDMxMWFmYjJiZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbGdkdDMzMDZhLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2R2Yi1mcm9udGVuZHMvbGdkdDMzMDZhLmMKPiBAQCAtMjIyNiw3ICsyMjI2LDcgQEAgc3RhdGlj IGludCBsZ2R0MzMwNmFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbGdkdDMzMDZh X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsZ2R0MzMw NmFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBsZ2R0MzMwNmFfc3RhdGUgKnN0YXRlID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiBAQCAtMjIzNyw4ICsyMjM3LDYgQEAgc3RhdGljIGludCBsZ2R0MzMwNmFf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqBrZnJlZShzdGF0ZS0+Y2ZnKTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoc3RhdGUpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkIGxnZHQzMzA2YV9pZF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbGdkdDMzMHguYwo+IGIvZHJpdmVycy9tZWRp YS9kdmItZnJvbnRlbmRzL2xnZHQzMzB4LmMKPiBpbmRleCBkYTNhOGM1ZTE4ZDguLmVhOWFlMjJm ZDIwMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbGdkdDMzMHgu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9sZ2R0MzMweC5jCj4gQEAgLTk3 NCwxNSArOTc0LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHZiX2Zyb250ZW5kX29wcwo+IGxn ZHQzMzAzX29wcyA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbGVhc2XCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9IGxnZHQzMzB4X3JlbGVhc2UsCj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBpbnQg bGdkdDMzMHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IGxnZHQzMzB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgbGdkdDMzMHhfc3RhdGUgKnN0YXRlID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZGV2X2RiZygmY2xpZW50LT5kZXYs ICJcbiIpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHN0YXRlKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCBsZ2R0MzMweF9pZF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2R2Yi1mcm9udGVuZHMvbTg4ZHMzMTAzLmMKPiBiL2RyaXZlcnMvbWVkaWEvZHZiLWZy b250ZW5kcy9tODhkczMxMDMuYwo+IGluZGV4IGJjZTBmNDJmM2QxOS4uNGU4NDRiMmVmNTk3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tODhkczMxMDMuYwo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tODhkczMxMDMuYwo+IEBAIC0xOTE0LDcg KzE5MTQsNyBAQCBzdGF0aWMgaW50IG04OGRzMzEwM19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBtODhkczMxMDNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIG04OGRzMzEwM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG04OGRzMzEwM19kZXYgKmRldiA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTE5MjYsNyArMTkyNiw2IEBAIHN0YXRpYyBp bnQgbTg4ZHMzMTAzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoGkyY19tdXhfZGVsX2FkYXB0ZXJzKGRldi0+bXV4Yyk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG04OGRzMzEwM19pZF90YWJs ZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbW44ODQ0 M3guYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL21uODg0NDN4LmMKPiBpbmRleCBm ZmYyMTJjMGJmM2IuLjQ1MjU3MWIzODBiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2 Yi1mcm9udGVuZHMvbW44ODQ0M3guYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5k cy9tbjg4NDQzeC5jCj4gQEAgLTc2MiwxNSArNzYyLDEzIEBAIHN0YXRpYyBpbnQgbW44ODQ0M3hf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbW44ODQ0M3hfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1uODg0NDN4X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbW44ODQ0 M3hfcHJpdiAqY2hpcCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoG1uODg0NDN4X2Ntbl9wb3dlcl9vZmYoY2hpcCk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGNoaXAtPmNsaWVudF90KTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW44 ODQ0M3hfc3BlYyBtbjg4NDQzeF9zcGVjX3ByaSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9kdmItZnJvbnRlbmRzL21uODg0NzIuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRl bmRzL21uODg0NzIuYwo+IGluZGV4IDczOTIyZmM4ZjM5Yy4uMmIwMWNjNjc4ZjdlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tbjg4NDcyLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbW44ODQ3Mi5jCj4gQEAgLTY5MSw3ICs2OTEsNyBAQCBz dGF0aWMgaW50IG1uODg0NzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbW44ODQ3 Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbW44ODQ3 Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IG1uODg0NzJfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IEBAIC03MDYsOCArNzA2LDYgQEAgc3RhdGljIGludCBtbjg4NDcyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9leGl0KGRl di0+cmVnbWFwWzBdKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIG1uODg0NzJfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL21uODg0NzMuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmIt ZnJvbnRlbmRzL21uODg0NzMuYwo+IGluZGV4IDQ4Mzg5NjllZjczNS4uZjBlY2Y1OTEwYzAyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tbjg4NDczLmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbW44ODQ3My5jCj4gQEAgLTcyNiw3ICs3MjYs NyBAQCBzdGF0aWMgaW50IG1uODg0NzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg bW44ODQ3M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg bW44ODQ3M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IG1uODg0NzNfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IEBAIC03NDEsOCArNzQxLDYgQEAgc3RhdGljIGludCBtbjg4NDczX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9l eGl0KGRldi0+cmVnbWFwWzBdKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1uODg0NzNfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDY5Mi5jCj4gYi9kcml2ZXJzL21lZGlh L2R2Yi1mcm9udGVuZHMvbXhsNjkyLmMKPiBpbmRleCBkZDc5NTRlOGY1NTMuLjEyOTYzMGNiZmZm ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNjkyLmMKPiAr KysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNjkyLmMKPiBAQCAtMTMzNywxNSAr MTMzNywxMyBAQCBzdGF0aWMgaW50IG14bDY5Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PREVWOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgbXhsNjkyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBteGw2OTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBteGw2OTJfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXYtPmZlLmRlbW9kdWxhdG9yX3By aXYgPSBOVUxMOwo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBO VUxMKTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBteGw2OTJfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIt ZnJvbnRlbmRzL3J0bDI4MzAuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3J0bDI4 MzAuYwo+IGluZGV4IGU2YjgzNjdjOGNjZS4uZTBmYmY0MTMxNmFlIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMwLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2R2Yi1mcm9udGVuZHMvcnRsMjgzMC5jCj4gQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMgaW50 IHJ0bDI4MzBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcnRsMjgzMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcnRsMjgzMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHJ0bDI4MzBfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBA IC04NzQsOCArODc0LDYgQEAgc3RhdGljIGludCBydGwyODMwX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGkyY19tdXhfZGVsX2FkYXB0ZXJzKGRl di0+bXV4Yyk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9leGl0KGRldi0+cmVnbWFwKTsKPiDC oMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBydGwyODMw X2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5k cy9ydGwyODMyLmMKPiBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyLmMKPiBp bmRleCBkY2JlYjlmNWUxMmEuLjRmYTg4NGVkYTVkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21l ZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9kdmItZnJv bnRlbmRzL3J0bDI4MzIuYwo+IEBAIC0xMTEwLDcgKzExMTAsNyBAQCBzdGF0aWMgaW50IHJ0bDI4 MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcnRsMjgzMl9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcnRsMjgzMl9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJ0bDI4 MzJfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xMTIz LDggKzExMjMsNiBAQCBzdGF0aWMgaW50IHJ0bDI4MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmVnbWFwX2V4aXQoZGV2LT5yZWdtYXApOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQg cnRsMjgzMl9pZF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi1m cm9udGVuZHMvc2kyMTY1LmMKPiBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zaTIxNjUu Ywo+IGluZGV4IGViZWUyMzBhZmI3Yi4uODZiMGQ1OTE2OWRkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zaTIxNjUuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvZHZi LWZyb250ZW5kcy9zaTIxNjUuYwo+IEBAIC0xMjc0LDE0ICsxMjc0LDEzIEBAIHN0YXRpYyBpbnQg c2kyMTY1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNpMjE2NV9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgc2kyMTY1X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc2ky MTY1X3N0YXRlICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoGRldl9kYmcoJmNsaWVudC0+ZGV2LCAiXG4iKTsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBrZnJlZShzdGF0ZSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzaTIxNjVfaWRfdGFibGVb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3NpMjE2OC5j Cj4gYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvc2kyMTY4LmMKPiBpbmRleCAxOTZlMDI4 YTY2MTcuLjgxNTdkZjQ1NzBkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9u dGVuZHMvc2kyMTY4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvc2kyMTY4 LmMKPiBAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBpbnQgc2kyMTY4X3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHNpMjE2OF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgc2kyMTY4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc2kyMTY4X2RldiAqZGV2ID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNzg2LDggKzc4Niw2IEBAIHN0YXRpYyBp bnQgc2kyMTY4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoGRldi0+ZmUuZGVtb2R1bGF0b3JfcHJpdiA9IE5VTEw7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzaTIxNjhfaWRfdGFibGVb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3NwMi5jIGIv ZHJpdmVycy9tZWRpYS9kdmItCj4gZnJvbnRlbmRzL3NwMi5jCj4gaW5kZXggOTkyZjIyMTY3ZmJl Li4yN2U3MDM3ZTEzMGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRz L3NwMi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3NwMi5jCj4gQEAgLTM5 OCwxNCArMzk4LDEzIEBAIHN0YXRpYyBpbnQgc3AyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBzcDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IHNwMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHNwMiAqcyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGRldl9kYmcoJmNsaWVudC0+ZGV2LCAiXG4iKTsKPiDCoMKgwqDCoMKg wqDCoMKgc3AyX2V4aXQoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUocyk7Cj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTJjX2RldmljZV9pZCBzcDJfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL3N0djA5MHguYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3N0 djA5MHguYwo+IGluZGV4IDkwZDI0MTMxZDMzNS4uMGE2MDBjMWQ3ZDFiIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zdHYwOTB4LmMKPiArKysgYi9kcml2ZXJzL21l ZGlhL2R2Yi1mcm9udGVuZHMvc3R2MDkweC5jCj4gQEAgLTUwMzIsMTIgKzUwMzIsMTEgQEAgc3Rh dGljIGludCBzdHYwOTB4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHN0djA5MHhf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0djA5MHhf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBzdHYwOTB4X3N0YXRlICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHN0djA5MHhfcmVsZWFzZSgmc3RhdGUtPmZyb250ZW5k KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RydWN0IGR2Yl9m cm9udGVuZCAqc3R2MDkweF9hdHRhY2goc3RydWN0IHN0djA5MHhfY29uZmlnICpjb25maWcsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zdHY2MTEweC5jCj4gYi9k cml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvc3R2NjExMHguYwo+IGluZGV4IDUwMTJkMDIzMTY1 Mi4uZmJjNGRiZDYyMTUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5k cy9zdHY2MTEweC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3N0djYxMTB4 LmMKPiBAQCAtNDM2LDEyICs0MzYsMTEgQEAgc3RhdGljIGludCBzdHY2MTEweF9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgc3R2NjExMHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0djYxMTB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3R2NjExMHhfc3RhdGUgKnN0 djYxMTB4ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgc3R2NjExMHhfcmVsZWFzZShzdHY2MTEweC0+ZnJvbnRlbmQpOwo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBjb25zdCBzdHJ1Y3Qgc3R2NjExMHhfZGV2Y3RsICpz dHY2MTEweF9hdHRhY2goc3RydWN0IGR2Yl9mcm9udGVuZAo+ICpmZSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3RjOTA1MjIuYwo+IGIvZHJpdmVycy9tZWRpYS9k dmItZnJvbnRlbmRzL3RjOTA1MjIuYwo+IGluZGV4IGU4MzgzNmIyOTcxNS4uYzIyZDJhMmIyYTQ1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy90YzkwNTIyLmMKPiAr KysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvdGM5MDUyMi5jCj4gQEAgLTgxOSwxNCAr ODE5LDEzIEBAIHN0YXRpYyBpbnQgdGM5MDUyMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCB0YzkwNTIyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCB0YzkwNTIyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGM5MDUyMl9zdGF0ZSAqc3RhdGU7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgc3RhdGUgPSBjZmdfdG9fc3RhdGUoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkp Owo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfZGVsX2FkYXB0ZXIoJnN0YXRlLT50dW5lcl9pMmMpOwo+ IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShzdGF0ZSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVu ZHMvdGRhMTAwNzEuYwo+IGIvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3RkYTEwMDcxLmMK PiBpbmRleCA2ODVjMGFjNzE4MTkuLmQxMDk4ZWYyMGE4YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL2R2Yi1mcm9udGVuZHMvdGRhMTAwNzEuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvZHZi LWZyb250ZW5kcy90ZGExMDA3MS5jCj4gQEAgLTEyMjEsMTQgKzEyMjEsMTMgQEAgc3RhdGljIGlu dCB0ZGExMDA3MV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0ZGExMDA3MV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGRhMTAwNzFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB0ZGExMDA3MV9kZXYgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoGRldl9kYmcoJmNsaWVudC0+ZGV2LCAiXG4iKTsKPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGRhMTAwNzFfaWRf dGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL3Rz MjAyMC5jCj4gYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvdHMyMDIwLmMKPiBpbmRleCAz ZTM4MzkxMmJjZmQuLjAyMzM4MjU2Yjk3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2R2 Yi1mcm9udGVuZHMvdHMyMDIwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMv dHMyMDIwLmMKPiBAQCAtNjk2LDcgKzY5Niw3IEBAIHN0YXRpYyBpbnQgdHMyMDIwX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRzMjAyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHMyMDIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHMyMDIwX3ByaXYgKmRldiA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTcwOCw3ICs3MDgsNiBAQCBz dGF0aWMgaW50IHRzMjAyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9leGl0KGRldi0+cmVnbWFwKTsKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRzMjAyMF9pZF90YWJsZVtdID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9hZDU4MjAuYyBiL2RyaXZlcnMvbWVk aWEvaTJjL2FkNTgyMC5jCj4gaW5kZXggMjk1OGE0Njk0NDYxLi41MTZkZTI3OGNjNDkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvYWQ1ODIwLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2kyYy9hZDU4MjAuYwo+IEBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIGludCBhZDU4MjBfcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g cmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWQ1ODIwX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZDU4MjBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAq c3ViZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBhZDU4MjBfZGV2aWNlICpjb2lsID0gdG9fYWQ1ODIwX2RldmljZShzdWJkZXYpOwo+IEBA IC0zNTEsNyArMzUxLDYgQEAgc3RhdGljIGludCBhZDU4MjBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgm Y29pbC0+Y3RybHMpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmY29p bC0+c3ViZGV2LmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJmNvaWwt PnBvd2VyX2xvY2spOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWQ1ODIwX2lkX3RhYmxlW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2FkOTM4OWIuYwo+IGIvZHJpdmVycy9tZWRp YS9pMmMvYWQ5Mzg5Yi5jCj4gaW5kZXggODY3OWE0NGU2NDEzLi40YTI1NWE0OTI5MTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvYWQ5Mzg5Yi5jCj4gKysrIGIvZHJpdmVycy9tZWRp YS9pMmMvYWQ5Mzg5Yi5jCj4gQEAgLTExNzQsNyArMTE3NCw3IEBAIHN0YXRpYyBpbnQgYWQ5Mzg5 Yl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsIGNvbnN0IHN0cnVjdCBpMmNfZGV2 aWNlX2lkICoKPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiDCoAo+IC1zdGF0aWMg aW50IGFkOTM4OWJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIGFkOTM4OWJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFkOTM4OWJfc3RhdGUgKnN0YXRlID0g Z2V0X2FkOTM4OWJfc3RhdGUoc2QpOwo+IEBAIC0xMTkyLDcgKzExOTIsNiBAQCBzdGF0aWMgaW50 IGFkOTM4OWJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKg wqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKg wqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0 bDJfY3RybF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7Cj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2FkcDE2NTMuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMv YWRwMTY1My5jCj4gaW5kZXggNTIyYTBiMTBlNDE1Li4xZjM1MzE1N2RmMDcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZWRpYS9pMmMvYWRwMTY1My5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMv YWRwMTY1My5jCj4gQEAgLTUxMCw3ICs1MTAsNyBAQCBzdGF0aWMgaW50IGFkcDE2NTNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0 Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWRwMTY1M19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWRwMTY1M19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpz dWJkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGFkcDE2NTNfZmxhc2ggKmZsYXNoID0gdG9fYWRwMTY1M19mbGFzaChzdWJkZXYpOwo+IEBA IC01MTgsOCArNTE4LDYgQEAgc3RhdGljIGludCBhZHAxNjUzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJf c3ViZGV2KCZmbGFzaC0+c3ViZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRs ZXJfZnJlZSgmZmxhc2gtPmN0cmxzKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2Ns ZWFudXAoJmZsYXNoLT5zdWJkZXYuZW50aXR5KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhZHAx NjUzX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2Fkdjcx NzAuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE3MC5jCj4gaW5kZXggNzE0ZTMxZjk5M2Ux Li42MWEyZjg3ZDNjNjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE3MC5j Cj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE3MC5jCj4gQEAgLTM2OCwxMiArMzY4LDEx IEBAIHN0YXRpYyBpbnQgYWR2NzE3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQs Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWR2 NzE3MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWR2 NzE3MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNk KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiAtLS0tLS0gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE3NS5jCj4g Yi9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MTc1LmMKPiBpbmRleCAxODEzZjY3ZjBmZTEuLmI1ODY4 OTcyODI0MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MTc1LmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MTc1LmMKPiBAQCAtNDIzLDEyICs0MjMsMTEgQEAgc3Rh dGljIGludCBhZHY3MTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhZHY3MTc1X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZHY3MTc1X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0t LSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MTgwLmMKPiBiL2RyaXZl cnMvbWVkaWEvaTJjL2FkdjcxODAuYwo+IGluZGV4IGUzYTU3YzE3OGM2Yi4uZjg1ZTViZjIyOGYx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2FkdjcxODAuYwo+ICsrKyBiL2RyaXZl cnMvbWVkaWEvaTJjL2FkdjcxODAuYwo+IEBAIC0xNTExLDcgKzE1MTEsNyBAQCBzdGF0aWMgaW50 IGFkdjcxODBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWR2NzE4MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWR2NzE4MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgYWR2NzE4MF9zdGF0ZSAqc3RhdGUgPSB0b19zdGF0ZShzZCk7Cj4gQEAg LTE1MzEsOCArMTUzMSw2IEBAIHN0YXRpYyBpbnQgYWR2NzE4MF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBhZHY3MTgwX3NldF9wb3dlcl9waW4o c3RhdGUsIGZhbHNlKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZzdGF0 ZS0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFkdjcxODBfaWRbXSA9IHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4My5jCj4gYi9kcml2ZXJzL21lZGlhL2ky Yy9hZHY3MTgzLmMKPiBpbmRleCBiYTc0NmExOWZkMzkuLjMxM2M3MDZlODMzNSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MTgzLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2ky Yy9hZHY3MTgzLmMKPiBAQCAtNjEzLDEzICs2MTMsMTIgQEAgc3RhdGljIGludCBhZHY3MTgzX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhZHY3MTgzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZHY3MTgzX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg djRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwy X2N0cmxfaGFuZGxlcl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQg YWR2NzE4M19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MzQz LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL2FkdjczNDMuYwo+IGluZGV4IDYzZTk0ZGZjYjVkMy4u N2U4NDg2OWQyNDM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2FkdjczNDMuYwo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2FkdjczNDMuYwo+IEBAIC00OTIsMTUgKzQ5MiwxMyBA QCBzdGF0aWMgaW50IGFkdjczNDNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWR2 NzM0M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWR2 NzM0M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWR2NzM0M19zdGF0ZSAqc3RhdGUgPSB0b19zdGF0 ZShzZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9hc3luY191bnJlZ2lzdGVyX3N1YmRl digmc3RhdGUtPnNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgm c3RhdGUtPmhkbCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWR2NzM0M19pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3MzkzLmMKPiBiL2RyaXZlcnMvbWVkaWEv aTJjL2FkdjczOTMuYwo+IGluZGV4IGI2MjM0YzgyMzFjOS4uZmI1ZmVmYTgzYjE4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2FkdjczOTMuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEv aTJjL2FkdjczOTMuYwo+IEBAIC00MzcsMTUgKzQzNywxMyBAQCBzdGF0aWMgaW50IGFkdjczOTNf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWR2NzM5M19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWR2NzM5M19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3Vi ZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgYWR2NzM5M19zdGF0ZSAqc3RhdGUgPSB0b19zdGF0ZShzZCk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDC oMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBhZHY3MzkzX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJj L2Fkdjc0OHgvYWR2NzQ4eC1jb3JlLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL2Fkdjc0OHgvYWR2 NzQ4eC1jb3JlLmMKPiBpbmRleCA0ZTU0MTQ4MTQ3YjkuLjQ0OThkNzhhMjM1NyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3NDh4L2Fkdjc0OHgtY29yZS5jCj4gKysrIGIvZHJp dmVycy9tZWRpYS9pMmMvYWR2NzQ4eC9hZHY3NDh4LWNvcmUuYwo+IEBAIC04MTUsNyArODE1LDcg QEAgc3RhdGljIGludCBhZHY3NDh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFk djc0OHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFk djc0OHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBhZHY3NDh4X3N0YXRlICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShj bGllbnQpOwo+IMKgCj4gQEAgLTgyOCw4ICs4MjgsNiBAQCBzdGF0aWMgaW50IGFkdjc0OHhfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgYWR2NzQ4 eF91bnJlZ2lzdGVyX2NsaWVudHMoc3RhdGUpOwo+IMKgwqDCoMKgwqDCoMKgwqBhZHY3NDh4X2R0 X2NsZWFudXAoc3RhdGUpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZzdGF0ZS0+ bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWR2NzQ4eF9vZl90YWJsZVtdID0gewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3NTExLXY0bDIuYwo+IGIvZHJpdmVycy9t ZWRpYS9pMmMvYWR2NzUxMS12NGwyLmMKPiBpbmRleCAyMDJlMGNkODNmOTAuLjQ5YWNhNTc5NTc2 YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9hZHY3NTExLXY0bDIuYwo+ICsrKyBi L2RyaXZlcnMvbWVkaWEvaTJjL2Fkdjc1MTEtdjRsMi5jCj4gQEAgLTE5MjMsNyArMTkyMyw3IEBA IHN0YXRpYyBpbnQgYWR2NzUxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICoKPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0g Ki8KPiDCoAo+IC1zdGF0aWMgaW50IGFkdjc1MTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIGFkdjc1MTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFkdjc1 MTFfc3RhdGUgKnN0YXRlID0gZ2V0X2Fkdjc1MTFfc3RhdGUoc2QpOwo+IEBAIC0xOTQzLDcgKzE5 NDMsNiBAQCBzdGF0aWMgaW50IGFkdjc1MTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2Qp Owo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7Cj4g wqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7 Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g LS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2Fkdjc2MDQuYwo+IGIv ZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNC5jCj4gaW5kZXggYmIwYzhmYzZkMzgzLi5lNjNhYmY5 M2NjYWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNC5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNC5jCj4gQEAgLTM2NjEsNyArMzY2MSw3IEBAIHN0YXRp YyBpbnQgYWR2NzZ4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqAKPiDC oC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gwqAKPiAtc3RhdGljIGludCBhZHY3Nnh4X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBhZHY3Nnh4X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBhZHY3Nnh4X3N0YXRlICpzdGF0ZSA9IHRvX3N0YXRlKHNkKTsKPiBA QCAtMzY3OCw3ICszNjc4LDYgQEAgc3RhdGljIGludCBhZHY3Nnh4X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG1lZGlhX2VudGl0eV9jbGVhbnVw KCZzZC0+ZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDCoMKgYWR2NzZ4eF91bnJlZ2lzdGVyX2NsaWVu dHModG9fc3RhdGUoc2QpKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJl ZShzZC0+Y3RybF9oYW5kbGVyKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvYWR2Nzg0Mi5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9hZHY3ODQyLmMKPiBpbmRleCAy MmNhYTA3MDI3M2IuLmE4ZGQ5Mjk0OGRmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2ky Yy9hZHY3ODQyLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9hZHY3ODQyLmMKPiBAQCAtMzU5 Myw3ICszNTkzLDcgQEAgc3RhdGljIGludCBhZHY3ODQyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiDCoAo+IC1zdGF0 aWMgaW50IGFkdjc4NDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIGFkdjc4NDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFkdjc4NDJfc3RhdGUgKnN0YXRl ID0gdG9fc3RhdGUoc2QpOwo+IEBAIC0zNjA0LDcgKzM2MDQsNiBAQCBzdGF0aWMgaW50IGFkdjc4 NDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKg bWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqBhZHY3 ODQyX3VucmVnaXN0ZXJfY2xpZW50cyhzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9o YW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvaTJjL2FrNzM3NS5jIGIvZHJpdmVycy9tZWRpYS9pMmMvYWs3Mzc1LmMKPiBp bmRleCA0MGIxYTRhYTg0NmMuLjFhZjlmNjk4ZWVjZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21l ZGlhL2kyYy9hazczNzUuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2FrNzM3NS5jCj4gQEAg LTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgaW50IGFrNzM3NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBhazczNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIGFrNzM3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWs3Mzc1X2RldmljZSAqYWs3 Mzc1X2RldiA9IHNkX3RvX2FrNzM3NV92Y20oc2QpOwo+IEBAIC0xNzcsOCArMTc3LDYgQEAgc3Rh dGljIGludCBhazczNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgYWs3Mzc1X3N1YmRldl9jbGVhbnVwKGFrNzM3NV9kZXYpOwo+IMKgwqDCoMKg wqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDC oMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9hazg4MXguYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2FrODgxeC5jCj4gaW5kZXgg ZGM1NjlkNWE0ZDlkLi4wMzcwYWQ2YjY4MTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvYWs4ODF4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9hazg4MXguYwo+IEBAIC0yOTcs MTMgKzI5NywxMSBAQCBzdGF0aWMgaW50IGFrODgxeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgYWs4ODF4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCBhazg4MXhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBhazg4MXggKmFrODgxeCA9IHRvX2FrODgxeChjbGllbnQpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KCZhazg4 MXgtPnN1YmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYWs4ODF4X2lkW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2J0ODE5LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9i dDgxOS5jCj4gaW5kZXggNzNiYzUwYzkxOWQ3Li40ZDliYjZlYjdkNjUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvYnQ4MTkuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2J0ODE5 LmMKPiBAQCAtNDQ2LDE0ICs0NDYsMTMgQEAgc3RhdGljIGludCBidDgxOV9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gLXN0YXRpYyBpbnQgYnQ4MTlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIGJ0ODE5X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBidDgxOSAqZGVjb2Rl ciA9IHRvX2J0ODE5KHNkKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJl Z2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2Zy ZWUoJmRlY29kZXItPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv aTJjL2J0ODU2LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9idDg1Ni5jCj4gaW5kZXggYzEzNGZkYTI3 MGExLi43MDQ0M2VmMWFjNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvYnQ4NTYu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2J0ODU2LmMKPiBAQCAtMjIzLDEyICsyMjMsMTEg QEAgc3RhdGljIGludCBidDg1Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYnQ4NTZf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJ0ODU2X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgYnQ4NTZfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvYnQ4NjYuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2J0ODY2LmMKPiBpbmRleCAxYThkZjlm MThmZmIuLmMyNTA4Y2JhZmQwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9idDg2 Ni5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvYnQ4NjYuYwo+IEBAIC0xOTAsMTIgKzE5MCwx MSBAQCBzdGF0aWMgaW50IGJ0ODY2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBidDg2 Nl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYnQ4NjZf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTJjX2RldmljZV9pZCBidDg2Nl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL2kyYy9jY3MvY2NzLWNvcmUuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvY2NzL2Njcy1jb3Jl LmMKPiBpbmRleCA3NjA5YWRkMmFmZjQuLjRhMTRkN2U1ZDlmMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21lZGlhL2kyYy9jY3MvY2NzLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2Nj cy9jY3MtY29yZS5jCj4gQEAgLTM2NjUsNyArMzY2NSw3IEBAIHN0YXRpYyBpbnQgY2NzX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBydmFs Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY2NzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjY3NfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2ID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjY3Nf c2Vuc29yICpzZW5zb3IgPSB0b19jY3Nfc2Vuc29yKHN1YmRldik7Cj4gQEAgLTM2ODcsOCArMzY4 Nyw2IEBAIHN0YXRpYyBpbnQgY2NzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHNlbnNvci0+Y2NzX2xpbWl0cyk7Cj4gwqDCoMKgwqDC oMKgwqDCoGt2ZnJlZShzZW5zb3ItPnNkYXRhLmJhY2tpbmcpOwo+IMKgwqDCoMKgwqDCoMKgwqBr dmZyZWUoc2Vuc29yLT5tZGF0YS5iYWNraW5nKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2NzX2RldmljZSBzbWlhX2Rl dmljZSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvY3MzMzA4LmMgYi9kcml2 ZXJzL21lZGlhL2kyYy9jczMzMDguYwo+IGluZGV4IGViZTU1ZTI2MWJmZi4uZDkwMWE1OTg4M2E5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2NzMzMwOC5jCj4gKysrIGIvZHJpdmVy cy9tZWRpYS9pMmMvY3MzMzA4LmMKPiBAQCAtOTksMTMgKzk5LDEyIEBAIHN0YXRpYyBpbnQgY3Mz MzA4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoAo+IMKgLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiAtLS0tLS0gKi8KPiDCoAo+IC1zdGF0aWMgaW50IGNzMzMwOF9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY3MzMzA4X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqBr ZnJlZShzZCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2NzNTM0 NS5jIGIvZHJpdmVycy9tZWRpYS9pMmMvY3M1MzQ1LmMKPiBpbmRleCBmNmRkNWVkZjc3ZGQuLjU5 MWIxZTdiMjRlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9jczUzNDUuYwo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvaTJjL2NzNTM0NS5jCj4gQEAgLTE3OCwxNCArMTc4LDEzIEBAIHN0 YXRpYyBpbnQgY3M1MzQ1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoAo+ IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiDCoAo+IC1zdGF0aWMgaW50IGNzNTM0NV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY3M1MzQ1X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBjczUzNDVfc3RhdGUgKnN0YXRlID0gdG9fc3RhdGUoc2QpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiDC oMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmc3RhdGUtPmhkbCk7Cj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0t ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2NzNTNsMzJhLmMKPiBiL2RyaXZl cnMvbWVkaWEvaTJjL2NzNTNsMzJhLmMKPiBpbmRleCA5YTQxMTEwNmNmYjMuLjk0NjE1ODlhZWEz MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9jczUzbDMyYS5jCj4gKysrIGIvZHJp dmVycy9tZWRpYS9pMmMvY3M1M2wzMmEuYwo+IEBAIC0xOTAsMTQgKzE5MCwxMyBAQCBzdGF0aWMg aW50IGNzNTNsMzJhX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczUzbDMyYV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY3M1M2wzMmFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGNzNTNsMzJhX3N0YXRlICpzdGF0ZSA9IHRvX3N0YXRlKHNkKTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnN0YXRlLT5oZGwpOwo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgY3M1M2wzMmFfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9pMmMvY3gyNTg0MC9jeDI1ODQwLWNvcmUuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMv Y3gyNTg0MC9jeDI1ODQwLWNvcmUuYwo+IGluZGV4IGRjMzE5NDRjN2Q1Yi4uZjFhOTc4YWY4MmVm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMK PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9jeDI1ODQwL2N4MjU4NDAtY29yZS5jCj4gQEAgLTYw MjYsNyArNjAyNiw3IEBAIHN0YXRpYyBpbnQgY3gyNTg0MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgY3gyNTg0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgY3gyNTg0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY3gyNTg0MF9zdGF0ZSAqc3Rh dGUgPSB0b19zdGF0ZShzZCk7Cj4gQEAgLTYwMzQsNyArNjAzNCw2IEBAIHN0YXRpYyBpbnQgY3gy NTg0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKg wqBjeDI1ODQwX2lyX3JlbW92ZShzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3Vu cmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJf ZnJlZSgmc3RhdGUtPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBjeDI1ODQwX2lkW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2R3OTcxNC5jIGIvZHJpdmVycy9tZWRpYS9p MmMvZHc5NzE0LmMKPiBpbmRleCAyMDZkNzQzMzhiOWMuLmFmNTk2ODczODNhYSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL21lZGlhL2kyYy9kdzk3MTQuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJj L2R3OTcxNC5jCj4gQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgaW50IGR3OTcxNF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBydmFs Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZHc5NzE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBkdzk3MTRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2Qg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGR3 OTcxNF9kZXZpY2UgKmR3OTcxNF9kZXYgPSBzZF90b19kdzk3MTRfdmNtKHNkKTsKPiBAQCAtMjA2 LDggKzIwNiw2IEBAIHN0YXRpYyBpbnQgZHc5NzE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGlt ZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGR3OTcxNF9z dWJkZXZfY2xlYW51cChkdzk3MTRfZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2R3OTc2 OC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvZHc5NzY4LmMKPiBpbmRleCBjMDg2NTgwZWZhYzcuLjBm NDdlZjAxNWExZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9kdzk3NjguYwo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvaTJjL2R3OTc2OC5jCj4gQEAgLTQ5OSw3ICs0OTksNyBAQCBzdGF0 aWMgaW50IGR3OTc2OF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkdzk3NjhfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGR3OTc2OF9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZHc5NzY4ICpkdzk3NjggPSBzZF90b19kdzk3Njgoc2QpOwo+IEBA IC01MTEsOCArNTExLDYgQEAgc3RhdGljIGludCBkdzk3NjhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFwbV9ydW50aW1lX3N0YXR1c19z dXNwZW5kZWQoJmNsaWVudC0+ZGV2KSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGR3OTc2OF9ydW50aW1lX3N1c3BlbmQoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKg cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBkdzk3Njhfb2ZfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9p MmMvZHc5ODA3LXZjbS5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9kdzk4MDctdmNtLmMKPiBpbmRl eCAwMWMzNzI5MjVhODAuLjM1OTk3MjBkYjdlOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlh L2kyYy9kdzk4MDctdmNtLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9kdzk4MDctdmNtLmMK PiBAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBpbnQgZHc5ODA3X3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJ2YWw7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBkdzk4MDdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIGR3OTgwN19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHc5ODA3X2Rldmlj ZSAqZHc5ODA3X2RldiA9IHNkX3RvX2R3OTgwN192Y20oc2QpOwo+IEBAIC0yMjQsOCArMjI0LDYg QEAgc3RhdGljIGludCBkdzk4MDdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGllbnQtPmRldik7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgZHc5ODA3X3N1YmRldl9jbGVhbnVwKGR3OTgwN19kZXYpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyoKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvZXQ4ZWs4L2V0OGVrOF9kcml2ZXIuYwo+IGIvZHJpdmVycy9t ZWRpYS9pMmMvZXQ4ZWs4L2V0OGVrOF9kcml2ZXIuYwo+IGluZGV4IDg3M2Q2MTQzMzliYi4uZmY5 YmI5ZmM5N2RkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2V0OGVrOC9ldDhlazhf ZHJpdmVyLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9ldDhlazgvZXQ4ZWs4X2RyaXZlci5j Cj4gQEAgLTE0NjAsNyArMTQ2MCw3IEBAIHN0YXRpYyBpbnQgZXQ4ZWs4X3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IF9fZXhpdCBldDhlazhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIF9fZXhpdCBldDhlazhfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRl diAqc3ViZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBldDhlazhfc2Vuc29yICpzZW5zb3IgPSB0b19ldDhlazhfc2Vuc29yKHN1YmRldik7 Cj4gQEAgLTE0NzcsOCArMTQ3Nyw2IEBAIHN0YXRpYyBpbnQgX19leGl0IGV0OGVrOF9yZW1vdmUo c3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5j X3VucmVnaXN0ZXJfc3ViZGV2KCZzZW5zb3ItPnN1YmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoG1l ZGlhX2VudGl0eV9jbGVhbnVwKCZzZW5zb3ItPnN1YmRldi5lbnRpdHkpOwo+IMKgwqDCoMKgwqDC oMKgwqBtdXRleF9kZXN0cm95KCZzZW5zb3ItPnBvd2VyX2xvY2spOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgZXQ4ZWs4X29mX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv aTJjL2hpNTU2LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9oaTU1Ni5jCj4gaW5kZXggMDU1ZDFhYTg0 MTBlLi5lNDIyYWM3NjA5YjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaGk1NTYu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2hpNTU2LmMKPiBAQCAtMTEwMSw3ICsxMTAxLDcg QEAgc3RhdGljIGludCBoaTU1Nl9jaGVja19od2NmZyhzdHJ1Y3QgZGV2aWNlCj4gKmRldikKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGhpNTU2 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBoaTU1Nl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaGk1NTYgKmhpNTU2ID0gdG9faGk1NTYoc2QpOwo+IEBAIC0x MTExLDggKzExMTEsNiBAQCBzdGF0aWMgaW50IGhpNTU2X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoc2Qt PmN0cmxfaGFuZGxlcik7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xp ZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZoaTU1Ni0+bXV0ZXgp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBoaTU1Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL2kyYy9oaTg0Ni5jIGIvZHJpdmVycy9tZWRpYS9pMmMvaGk4NDYuYwo+IGlu ZGV4IGFkMzVjM2ZmMzYxMS4uYzViNjk4MjNmMjU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvaTJjL2hpODQ2LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9oaTg0Ni5jCj4gQEAgLTIx NDMsNyArMjE0Myw3IEBAIHN0YXRpYyBpbnQgaGk4NDZfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgaGk4NDZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIGhpODQ2X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBoaTg0NiAqaGk4NDYgPSB0b19oaTg0 NihzZCk7Cj4gQEAgLTIxNTgsOCArMjE1OCw2IEBAIHN0YXRpYyBpbnQgaGk4NDZfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9z ZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhf ZGVzdHJveSgmaGk4NDYtPm11dGV4KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBoaTg0Nl9wbV9vcHMg PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2hpODQ3LmMgYi9kcml2ZXJzL21l ZGlhL2kyYy9oaTg0Ny5jCj4gaW5kZXggN2U4NTM0OWUxODUyLi41YTgyYjE1YTk1MTMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaGk4NDcuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEv aTJjL2hpODQ3LmMKPiBAQCAtMjkwMyw3ICsyOTAzLDcgQEAgc3RhdGljIGludCBoaTg0N19jaGVj a19od2NmZyhzdHJ1Y3QgZGV2aWNlCj4gKmRldikKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGhpODQ3X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBoaTg0N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaGk4 NDcgKmhpODQ3ID0gdG9faGk4NDcoc2QpOwo+IEBAIC0yOTEzLDggKzI5MTMsNiBAQCBzdGF0aWMg aW50IGhpODQ3X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7Cj4gwqDCoMKg wqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDC oMKgwqBtdXRleF9kZXN0cm95KCZoaTg0Ny0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBoaTg0N19wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9pbXgyMDgu YyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lteDIwOC5jCj4gaW5kZXggYjk1MTZiMmYxYzE1Li5hMGUx N2JiOWQ0Y2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaW14MjA4LmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL2kyYy9pbXgyMDguYwo+IEBAIC0xMDYxLDcgKzEwNjEsNyBAQCBzdGF0 aWMgaW50IGlteDIwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpbXgyMDhfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGlteDIwOF9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgaW14MjA4ICppbXgyMDggPSB0b19pbXgyMDgoc2QpOwo+IEBAIC0x MDc1LDggKzEwNzUsNiBAQCBzdGF0aWMgaW50IGlteDIwOF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQo JmNsaWVudC0+ZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZpbXgy MDgtPmlteDIwOF9teCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgaW14MjA4X3BtX29wcyA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvaW14MjE0LmMgYi9kcml2ZXJzL21lZGlhL2ky Yy9pbXgyMTQuYwo+IGluZGV4IDgzYzE3MzdhYmVlYy4uNzEwYzlmYjUxNWZkIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvaTJjL2lteDIxNC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMv aW14MjE0LmMKPiBAQCAtMTA4MCw3ICsxMDgwLDcgQEAgc3RhdGljIGludCBpbXgyMTRfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0 Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaW14MjE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpbXgyMTRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2Qg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlt eDIxNCAqaW14MjE0ID0gdG9faW14MjE0KHNkKTsKPiBAQCAtMTA5Myw4ICsxMDkzLDYgQEAgc3Rh dGljIGludCBpbXgyMTRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmaW14MjE0LT5tdXRleCk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBpbXgyMTRfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9pMmMvaW14MjE5LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9pbXgyMTkuYwo+IGluZGV4 IGUxMGFmM2Y3NGIzOC4uNzdiZDc5YTU5NTRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEv aTJjL2lteDIxOS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvaW14MjE5LmMKPiBAQCAtMTU2 Miw3ICsxNTYyLDcgQEAgc3RhdGljIGludCBpbXgyMTlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgaW14MjE5X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBpbXgyMTlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlteDIxOSAqaW14MjE5ID0gdG9f aW14MjE5KHNkKTsKPiBAQCAtMTU3NSw4ICsxNTc1LDYgQEAgc3RhdGljIGludCBpbXgyMTlfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFw bV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KSkKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlteDIxOV9wb3dlcl9vZmYoJmNsaWVudC0+ZGV2KTsKPiDCoMKg wqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBpbXgyMTlfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvaTJjL2lteDI1OC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvaW14MjU4LmMKPiBpbmRl eCBjMjQ5NTA3YWEyZGIuLmVhYjVmYzFlZTJmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlh L2kyYy9pbXgyNTguYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lteDI1OC5jCj4gQEAgLTEz MzgsNyArMTMzOCw3IEBAIHN0YXRpYyBpbnQgaW14MjU4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgaW50IGlteDI1OF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgaW14MjU4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbXgyNTggKmlteDI1OCA9IHRv X2lteDI1OChzZCk7Cj4gQEAgLTEzNTEsOCArMTM1MSw2IEBAIHN0YXRpYyBpbnQgaW14MjU4X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmICgh cG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKCZjbGllbnQtPmRldikpCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbXgyNThfcG93ZXJfb2ZmKCZjbGllbnQtPmRldik7Cj4gwqDC oMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBkZXZfcG1fb3BzIGlteDI1OF9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvaTJjL2lteDI3NC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvaW14Mjc0LmMKPiBpbmRleCA3 ZGUxZjI5NDhlNTMuLmEwMDc2MWIxZTE4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2ky Yy9pbXgyNzQuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lteDI3NC5jCj4gQEAgLTIxNDIs NyArMjE0Miw3IEBAIHN0YXRpYyBpbnQgaW14Mjc0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGlteDI3NF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgaW14Mjc0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdGlteDI3NCAqaW14Mjc0ID0gdG9f aW14Mjc0KHNkKTsKPiBAQCAtMjE1Nyw3ICsyMTU3LDYgQEAgc3RhdGljIGludCBpbXgyNzRfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBt ZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4 X2Rlc3Ryb3koJmlteDI3NC0+bG9jayk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBpbXgyNzRfcG1fb3BzID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9pbXgyOTAuYyBiL2RyaXZlcnMvbWVk aWEvaTJjL2lteDI5MC5jCj4gaW5kZXggOTlmMmE1MGQzOWE0Li4xY2U2NGRjZGY3ZjAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaW14MjkwLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2kyYy9pbXgyOTAuYwo+IEBAIC0xMTE5LDcgKzExMTksNyBAQCBzdGF0aWMgaW50IGlteDI5MF9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpbXgyOTBfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGlteDI5MF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2 ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaW14MjkwICppbXgyOTAgPSB0b19pbXgyOTAoc2QpOwo+IEBAIC0xMTM0LDggKzExMzQsNiBA QCBzdGF0aWMgaW50IGlteDI5MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqBpZiAoIXBtX3J1bnRpbWVfc3RhdHVzX3N1c3BlbmRlZChpbXgyOTAt PmRldikpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbXgyOTBfcG93ZXJfb2Zm KGlteDI5MC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVk KGlteDI5MC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteDI5MF9vZl9tYXRjaFtdID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9pbXgzMTkuYyBiL2RyaXZlcnMvbWVk aWEvaTJjL2lteDMxOS5jCj4gaW5kZXggYTJiNWEzNGRlNzZiLi4yNDVhMThmYjQwYWQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaW14MzE5LmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2kyYy9pbXgzMTkuYwo+IEBAIC0yNTIzLDcgKzI1MjMsNyBAQCBzdGF0aWMgaW50IGlteDMxOV9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpbXgzMTlfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGlteDMxOV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2 ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaW14MzE5ICppbXgzMTkgPSB0b19pbXgzMTkoc2QpOwo+IEBAIC0yNTM2LDggKzI1MzYsNiBA QCBzdGF0aWMgaW50IGlteDMxOV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZpbXgzMTktPm11dGV4KTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyBpbXgzMTlfcG1fb3BzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9pbXgzMzQuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lteDMzNC5jCj4gaW5kZXgg MDYyMTI1NTAxNzg4Li43YjBhOTA4NjQ0N2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvaW14MzM0LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9pbXgzMzQuYwo+IEBAIC0xMDg5 LDcgKzEwODksNyBAQCBzdGF0aWMgaW50IGlteDMzNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqAgKgo+IMKgICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIGVycm9yIGNv ZGUgb3RoZXJ3aXNlLgo+IMKgICovCj4gLXN0YXRpYyBpbnQgaW14MzM0X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpbXgzMzRfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1 YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGlteDMzNCAqaW14MzM0ID0gdG9faW14MzM0KHNkKTsKPiBAQCAtMTEwMiw4ICsxMTAy LDYgQEAgc3RhdGljIGludCBpbXgzMzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZpbXgzMzQtPm11dGV4KTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyBpbXgzMzRfcG1fb3BzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9pbXgzMzUuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lteDMzNS5jCj4gaW5kZXgg NDEwZDZiODZmZWI1Li4wNzhlZGUyYjdhMDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvaW14MzM1LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9pbXgzMzUuYwo+IEBAIC0xMDgz LDcgKzEwODMsNyBAQCBzdGF0aWMgaW50IGlteDMzNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqAgKgo+IMKgICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIGVycm9yIGNv ZGUgb3RoZXJ3aXNlLgo+IMKgICovCj4gLXN0YXRpYyBpbnQgaW14MzM1X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpbXgzMzVfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1 YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGlteDMzNSAqaW14MzM1ID0gdG9faW14MzM1KHNkKTsKPiBAQCAtMTA5OCw4ICsxMDk4 LDYgQEAgc3RhdGljIGludCBpbXgzMzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRl dik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmaW14MzM1LT5tdXRleCk7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGRldl9wbV9vcHMgaW14MzM1X3BtX29wcyA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9pMmMvaW14MzU1LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9pbXgzNTUuYwo+IGlu ZGV4IDM5MjJiOTMwNTk3OC4uYjQ2MTc4NjgxYzA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvaTJjL2lteDM1NS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvaW14MzU1LmMKPiBAQCAt MTgxMCw3ICsxODEwLDcgQEAgc3RhdGljIGludCBpbXgzNTVfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgaW14MzU1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBpbXgzNTVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlteDM1NSAqaW14MzU1ID0g dG9faW14MzU1KHNkKTsKPiBAQCAtMTgyMyw4ICsxODIzLDYgQEAgc3RhdGljIGludCBpbXgzNTVf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcG1f cnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfZGVzdHJveSgmaW14MzU1LT5tdXRleCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgaW14 MzU1X3BtX29wcyA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvaW14NDEyLmMg Yi9kcml2ZXJzL21lZGlhL2kyYy9pbXg0MTIuYwo+IGluZGV4IGExMzk0ZDZjMTQzMi4uN2Y2ZDI5 ZTBlN2M0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2lteDQxMi5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9pMmMvaW14NDEyLmMKPiBAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgc3RhdGlj IGludCBpbXg0MTJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgICoKPiDC oCAqIFJldHVybjogMCBpZiBzdWNjZXNzZnVsLCBlcnJvciBjb2RlIG90aGVyd2lzZS4KPiDCoCAq Lwo+IC1zdGF0aWMgaW50IGlteDQxMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgaW14NDEyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbXg0MTIgKmlteDQx MiA9IHRvX2lteDQxMihzZCk7Cj4gQEAgLTEyNzIsOCArMTI3Miw2IEBAIHN0YXRpYyBpbnQgaW14 NDEyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoG11dGV4X2Rlc3Ryb3koJmlteDQxMi0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3Bz IGlteDQxMl9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL2lyLWti ZC1pMmMuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lyLQo+IGtiZC1pMmMuYwo+IGluZGV4IDU2Njc0 MTczNTI0Zi4uZWU2YmJiYjk3N2Y3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL2ly LWtiZC1pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lyLWtiZC1pMmMuYwo+IEBAIC05 MTUsNyArOTE1LDcgQEAgc3RhdGljIGludCBpcl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50LAo+IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGlyX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpcl9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IElSX2kyYyAqaXIgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC05MjQsOCArOTI0LDYgQEAgc3Rh dGljIGludCBpcl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoMKgwqDCoMKg wqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGlyLT50eF9jKTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqByY191bnJlZ2lzdGVyX2RldmljZShpci0+cmMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IGlyX2tiZF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9pc2w3OTk4 eC5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9pc2w3OTk4eC5jCj4gaW5kZXggZGMzMDY4NTQ5ZGZh Li4yNDZkOGQxODJhOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvaXNsNzk5OHgu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2lzbDc5OTh4LmMKPiBAQCAtMTU0NCw3ICsxNTQ0 LDcgQEAgc3RhdGljIGludCBpc2w3OTk4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBpc2w3OTk4eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgaXNsNzk5OHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBpc2w3OTk4eCAqaXNsNzk5OHggPSBpMmNfdG9faXNsNzk5OHgo Y2xpZW50KTsKPiDCoAo+IEBAIC0xNTUyLDggKzE1NTIsNiBAQCBzdGF0aWMgaW50IGlzbDc5OTh4 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0 bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJmlzbDc5OTh4LT5zdWJkZXYpOwo+IMKgwqDCoMKg wqDCoMKgwqBpc2w3OTk4eF9yZW1vdmVfY29udHJvbHMoaXNsNzk5OHgpOwo+IMKgwqDCoMKgwqDC oMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmaXNsNzk5OHgtPnN1YmRldi5lbnRpdHkpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgaXNsNzk5OHhfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9pMmMva3MwMTI3LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9rczAxMjcuYwo+ IGluZGV4IGMwNzdmNTNiOWMzMC4uMjE1ZDlhNDNiMGI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv bWVkaWEvaTJjL2tzMDEyNy5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMva3MwMTI3LmMKPiBA QCAtNjc1LDE0ICs2NzUsMTMgQEAgc3RhdGljIGludCBrczAxMjdfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGtzMDEyN19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQga3MwMTI3X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKg wqDCoMKgwqBrczAxMjdfd3JpdGUoc2QsIEtTX09GTVRBLCAweDIwKTsgLyogdHJpc3RhdGUgKi8K PiDCoMKgwqDCoMKgwqDCoMKga3MwMTI3X3dyaXRlKHNkLCBLU19DTURBLCAweDJjIHwgMHg4MCk7 IC8qIHBvd2VyIGRvd24gKi8KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGtzMDEyN19pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9sbTM1NjAuYyBiL2RyaXZlcnMvbWVkaWEvaTJj L2xtMzU2MC5jCj4gaW5kZXggOWUzNGNjY2U0ZmMzLi5lZGFkMzEzOGNiMDcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZWRpYS9pMmMvbG0zNTYwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9s bTM1NjAuYwo+IEBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIGludCBsbTM1NjBfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IGxtMzU2MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgbG0zNTYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbG0zNTYwX2ZsYXNoICpmbGFzaCA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBp bnQgaTsKPiBAQCAtNDUzLDggKzQ1Myw2IEBAIHN0YXRpYyBpbnQgbG0zNTYwX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZmbGFzaC0+Y3RybHNfbGVkW2ldKTsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1lZGlhX2VudGl0eV9jbGVhbnVwKCZmbGFzaC0+c3Vi ZGV2X2xlZFtpXS5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgbG0zNTYwX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv aTJjL2xtMzY0Ni5jIGIvZHJpdmVycy9tZWRpYS9pMmMvbG0zNjQ2LmMKPiBpbmRleCBjNzZjY2Y2 N2E5MDkuLjBhYWE5NjM5MTdkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9sbTM2 NDYuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2xtMzY0Ni5jCj4gQEAgLTM3NywxNSArMzc3 LDEzIEBAIHN0YXRpYyBpbnQgbG0zNjQ2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBs bTM2NDZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxt MzY0Nl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGxtMzY0Nl9mbGFzaCAqZmxhc2ggPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRl digmZmxhc2gtPnN1YmRldl9sZWQpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxl cl9mcmVlKCZmbGFzaC0+Y3RybHNfbGVkKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5 X2NsZWFudXAoJmZsYXNoLT5zdWJkZXZfbGVkLmVudGl0eSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgbG0zNjQ2X2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJj L201Mjc5MC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvbTUyNzkwLmMKPiBpbmRleCAwYTFlZmMxNDE3 YmMuLjJhYjkxYjk5M2MzMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9tNTI3OTAu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL201Mjc5MC5jCj4gQEAgLTE1NCwxMiArMTU0LDEx IEBAIHN0YXRpYyBpbnQgbTUyNzkwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtNTI3 OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG01Mjc5 MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsK PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAt LS0tLS0gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvbTVtb2xzL201bW9sc19j b3JlLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL201bW9scy9tNW1vbHNfY29yZS5jCj4gaW5kZXgg YzE5NTkwMzg5YmZlLi4yMjAxZDJhMjYzNTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvbTVtb2xzL201bW9sc19jb3JlLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9tNW1vbHMv bTVtb2xzX2NvcmUuYwo+IEBAIC0xMDIwLDE1ICsxMDIwLDEzIEBAIHN0YXRpYyBpbnQgbTVtb2xz X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG01bW9sc19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbTVtb2xzX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2 NGwyX2N0cmxfaGFuZGxlcl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKg wqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgbTVtb2xzX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL21heDIx NzUuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvbWF4MjE3NS5jCj4gaW5kZXggMGVlYTIwMDEyNGQy Li4xMDE5MDIwZjNhMzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvbWF4MjE3NS5j Cj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvbWF4MjE3NS5jCj4gQEAgLTE0MDMsMTUgKzE0MDMs MTMgQEAgc3RhdGljIGludCBtYXgyMTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IG1heDIxNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IG1heDIxNzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heDIxNzUgKmN0eCA9IG1heDIxNzVfZnJv bV9zZChzZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgm Y3R4LT5jdHJsX2hkbCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9z dWJkZXYoc2QpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1heDIxNzVfaWRbXSA9IHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvbWF4OTI4Ni5jCj4gYi9kcml2ZXJzL21lZGlhL2ky Yy9tYXg5Mjg2LmMKPiBpbmRleCAzNjg0ZmFhNzIyNTMuLjljMDgzY2YxNDIzMSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL21lZGlhL2kyYy9tYXg5Mjg2LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2ky Yy9tYXg5Mjg2LmMKPiBAQCAtMTM3OCw3ICsxMzc4LDcgQEAgc3RhdGljIGludCBtYXg5Mjg2X3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1heDkyODZfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1heDkyODZfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXg5Mjg2X3By aXYgKnByaXYgPQo+IHNkX3RvX21heDkyODYoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwo+ IMKgCj4gQEAgLTEzOTEsOCArMTM5MSw2IEBAIHN0YXRpYyBpbnQgbWF4OTI4Nl9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBncGlvZF9zZXRfdmFs dWVfY2Fuc2xlZXAocHJpdi0+Z3Bpb2RfcHdkbiwgMCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg bWF4OTI4Nl9jbGVhbnVwX2R0KHByaXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWF4OTI4Nl9k dF9pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvbWw4NnY3NjY3LmMK PiBiL2RyaXZlcnMvbWVkaWEvaTJjL21sODZ2NzY2Ny5jCj4gaW5kZXggNDhjYzBiMDkyMmY0Li40 OWVjNTliMGNhNDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvbWw4NnY3NjY3LmMK PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9tbDg2djc2NjcuYwo+IEBAIC00MTUsMTUgKzQxNSwx MyBAQCBzdGF0aWMgaW50IG1sODZ2NzY2N19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBtbDg2djc2NjdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIG1sODZ2NzY2N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWw4NnY3NjY3X3ByaXYgKnByaXYg PSB0b19tbDg2djc2Njcoc2QpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5k bGVyX2ZyZWUoJnByaXYtPmhkbCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVn aXN0ZXJfc3ViZGV2KCZwcml2LT5zZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWw4NnY3NjY3 X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL21zcDM0MDAtZHJpdmVy LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL21zcDM0MDAtZHJpdmVyLmMKPiBpbmRleCAzOTUzMGQ0 MzU5MGUuLjRjZTdhMTVhOTg4NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9tc3Az NDAwLWRyaXZlci5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvbXNwMzQwMC1kcml2ZXIuYwo+ IEBAIC04NTksNyArODU5LDcgQEAgc3RhdGljIGludCBtc3BfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwKPiBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbXNwX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtc3BfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtc3Bfc3Rh dGUgKnN0YXRlID0KPiB0b19zdGF0ZShpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7Cj4gwqAK PiBAQCAtODcyLDcgKzg3Miw2IEBAIHN0YXRpYyBpbnQgbXNwX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtc3BfcmVzZXQoY2xpZW50KTsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0t LS0gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTAwMS5jCj4gYi9kcml2 ZXJzL21lZGlhL2kyYy9tdDltMDAxLmMKPiBpbmRleCBhZDEzYjBjODkwYzAuLmViZjljZjFlMWJj ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9tdDltMDAxLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL2kyYy9tdDltMDAxLmMKPiBAQCAtODMzLDcgKzgzMyw3IEBAIHN0YXRpYyBpbnQg bXQ5bTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtdDltMDAxX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtdDltMDAxX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bXQ5bTAwMSAqbXQ5bTAwMSA9IHRvX210OW0wMDEoY2xpZW50KTsKPiDCoAo+IEBAIC04NTMsOCAr ODUzLDYgQEAgc3RhdGljIGludCBtdDltMDAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmbXQ5 bTAwMS0+aGRsKTsKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmbXQ5bTAwMS0+bXV0 ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG10OW0wMDFfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvbXQ5bTAzMi5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9tdDlt MDMyLmMKPiBpbmRleCBiYTBjMGVhOTFjOTUuLjc2YjhjOWMwOGM4MiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL21lZGlhL2kyYy9tdDltMDMyLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9tdDlt MDMyLmMKPiBAQCAtODU4LDcgKzg1OCw3IEBAIHN0YXRpYyBpbnQgbXQ5bTAzMl9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBtdDltMDMyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtdDltMDMyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRl diA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bXQ5bTAzMiAqc2Vuc29yID0gdG9fbXQ5bTAzMihzdWJkZXYpOwo+IEBAIC04NjcsNyArODY3LDYg QEAgc3RhdGljIGludCBtdDltMDMyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnNlbnNvci0+Y3RybHMp Owo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkp Owo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZzZW5zb3ItPmxvY2spOwo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgbXQ5bTAzMl9pZF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9tdDltMTExLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL210OW0xMTEuYwo+IGlu ZGV4IGFmYzg2ZWZhOWUzZS4uZjVmZTI3MmQxMjA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvaTJjL210OW0xMTEuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL210OW0xMTEuYwo+IEBA IC0xMzU5LDE1ICsxMzU5LDEzIEBAIHN0YXRpYyBpbnQgbXQ5bTExMV9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBtdDltMTExX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBtdDltMTExX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXQ5bTExMSAqbXQ5bTExMSA9IHRvX210 OW0xMTEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5jX3VucmVnaXN0 ZXJfc3ViZGV2KCZtdDltMTExLT5zdWJkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRp dHlfY2xlYW51cCgmbXQ5bTExMS0+c3ViZGV2LmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0 bDJfY3RybF9oYW5kbGVyX2ZyZWUoJm10OW0xMTEtPmhkbCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXQ5 bTExMV9vZl9tYXRjaFtdID0gewo+IMKgwqDCoMKgwqDCoMKgwqB7IC5jb21wYXRpYmxlID0gIm1p Y3JvbixtdDltMTExIiwgfSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvbXQ5cDAz MS5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9tdDlwMDMxLmMKPiBpbmRleCBjYmNlOGI4OGRiY2Yu LjAwZGE1ODRhNDdiNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9tdDlwMDMxLmMK PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9tdDlwMDMxLmMKPiBAQCAtMTIwMCw3ICsxMjAwLDcg QEAgc3RhdGljIGludCBtdDlwMDMxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG10 OXAwMzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG10 OXAwMzFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtdDlwMDMxICptdDlwMDMxID0gdG9fbXQ5 cDAzMShzdWJkZXYpOwo+IEBAIC0xMjA5LDggKzEyMDksNiBAQCBzdGF0aWMgaW50IG10OXAwMzFf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRs Ml9hc3luY191bnJlZ2lzdGVyX3N1YmRldihzdWJkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRp YV9lbnRpdHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRl eF9kZXN0cm95KCZtdDlwMDMxLT5wb3dlcl9sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBt dDlwMDMxX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL210OXQwMDEu Ywo+IGIvZHJpdmVycy9tZWRpYS9pMmMvbXQ5dDAwMS5jCj4gaW5kZXggYjY1MWVlNGEyNmU4Li5k NWFiZTRhN2VmMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvbXQ5dDAwMS5jCj4g KysrIGIvZHJpdmVycy9tZWRpYS9pMmMvbXQ5dDAwMS5jCj4gQEAgLTk2MSw3ICs5NjEsNyBAQCBz dGF0aWMgaW50IG10OXQwMDFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbXQ5dDAw MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbXQ5dDAw MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG10OXQwMDEgKm10OXQwMDEgPSB0b19tdDl0MDAx KHN1YmRldik7Cj4gQEAgLTk2OSw3ICs5NjksNiBAQCBzdGF0aWMgaW50IG10OXQwMDFfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJs X2hhbmRsZXJfZnJlZSgmbXQ5dDAwMS0+Y3RybHMpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2Rl dmljZV91bnJlZ2lzdGVyX3N1YmRldihzdWJkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9l bnRpdHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbXQ5dDAw MV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9tdDl0MTEyLmMKPiBi L2RyaXZlcnMvbWVkaWEvaTJjL210OXQxMTIuYwo+IGluZGV4IDhkMmUzY2FhOWIyOC4uYWQ1NjQw OTVkMGNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL210OXQxMTIuYwo+ICsrKyBi L2RyaXZlcnMvbWVkaWEvaTJjL210OXQxMTIuYwo+IEBAIC0xMTAyLDE0ICsxMTAyLDEyIEBAIHN0 YXRpYyBpbnQgbXQ5dDExMl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiB2NGwyX2FzeW5jX3JlZ2lzdGVyX3N1YmRldigmcHJpdi0+c3Vi ZGV2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG10OXQxMTJfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG10OXQxMTJfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtdDl0MTEyX3By aXYgKnByaXYgPSB0b19tdDl0MTEyKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgY2xr X2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNsayk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5 bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJnByaXYtPnN1YmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgbXQ5dDExMl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9tdDl2 MDExLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL210OXYwMTEuYwo+IGluZGV4IDc2OTllNjRlMTEy Ny4uOTk1MmNlMDZlYmIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL210OXYwMTEu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL210OXYwMTEuYwo+IEBAIC01NjEsNyArNTYxLDcg QEAgc3RhdGljIGludCBtdDl2MDExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjLAo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG10OXYwMTFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjKQo+ICtzdGF0aWMgdm9pZCBtdDl2MDExX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJf c3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjKTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG10OXYwMTEgKmNvcmUgPSB0b19tdDl2MDExKHNkKTsKPiBAQCAtNTcyLDggKzU3Miw2IEBA IHN0YXRpYyBpbnQgbXQ5djAxMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmMpCj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDC oMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZjb3JlLT5jdHJscyk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0t LSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9tdDl2MDMyLmMKPiBiL2RyaXZl cnMvbWVkaWEvaTJjL210OXYwMzIuYwo+IGluZGV4IDRjZmRkM2RmYmQ0Mi4uYmM0Mzg4Y2NjMmE4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL210OXYwMzIuYwo+ICsrKyBiL2RyaXZl cnMvbWVkaWEvaTJjL210OXYwMzIuYwo+IEBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgaW50 IG10OXYwMzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbXQ5djAzMl9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbXQ5djAzMl9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHY0bDJfc3ViZGV2ICpzdWJkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IG10OXYwMzIgKm10OXYwMzIgPSB0b19tdDl2MDMyKHN1YmRldik7 Cj4gQEAgLTEyMDAsOCArMTIwMCw2IEBAIHN0YXRpYyBpbnQgbXQ5djAzMl9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5jX3VucmVn aXN0ZXJfc3ViZGV2KHN1YmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVy X2ZyZWUoJm10OXYwMzItPmN0cmxzKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2Ns ZWFudXAoJnN1YmRldi0+ZW50aXR5KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ5djAzMl9tb2RlbF9kYXRhIG10OXYw MzJfbW9kZWxfZGF0YVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9tdDl2 MTExLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL210OXYxMTEuYwo+IGluZGV4IDJkYzRhMGYyNGNl OC4uZmUxOGU1MjU4ZDdhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL210OXYxMTEu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL210OXYxMTEuYwo+IEBAIC0xMjM4LDcgKzEyMzgs NyBAQCBzdGF0aWMgaW50IG10OXYxMTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg bXQ5djExMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg bXQ5djExMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXQ5djExMV9kZXYgKm10OXYxMTEgPSBzZF90 b19tdDl2MTExKHNkKTsKPiBAQCAtMTI1Myw4ICsxMjUzLDYgQEAgc3RhdGljIGludCBtdDl2MTEx X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfZGVzdHJveSgmbXQ5djExMS0+cHdyX211dGV4KTsKPiDCoMKgwqDCoMKgwqDCoMKg bXV0ZXhfZGVzdHJveSgmbXQ5djExMS0+c3RyZWFtX211dGV4KTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIG10OXYxMTFfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9p MmMvbm9vbjAxMHBjMzAuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvbm9vbjAxMHBjMzAuYwo+IGlu ZGV4IGJjNTE4N2Y0NjM2NS4uZWNhZjVlOTA1N2YxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvaTJjL25vb24wMTBwYzMwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9ub29uMDEwcGMz MC5jCj4gQEAgLTc4OSw3ICs3ODksNyBAQCBzdGF0aWMgaW50IG5vb24wMTBfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgbm9vbjAxMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgbm9vbjAxMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgbm9vbjAx MF9pbmZvICppbmZvID0gdG9fbm9vbjAxMChzZCk7Cj4gQEAgLTc5Nyw4ICs3OTcsNiBAQCBzdGF0 aWMgaW50IG5vb24wMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKg wqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZpbmZvLT5oZGwpOwo+IMKgwqDCoMKgwqDC oMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgbm9vbjAxMF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9v ZzAxYTFiLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL29nMDFhMWIuYwo+IGluZGV4IDg3MTc5ZmMw NGUwMC4uMzU2NjNjMTBmY2Q5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL29nMDFh MWIuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL29nMDFhMWIuYwo+IEBAIC0xMDE1LDcgKzEw MTUsNyBAQCBzdGF0aWMgaW50IG9nMDFhMWJfY2hlY2tfaHdjZmcoc3RydWN0IGRldmljZQo+ICpk ZXYpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBvZzAxYTFiX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBvZzAxYTFiX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvZzAxYTFiICpvZzAxYTFiID0gdG9fb2cw MWExYihzZCk7Cj4gQEAgLTEwMjUsOCArMTAyNSw2IEBAIHN0YXRpYyBpbnQgb2cwMWExYl9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0 cmxfaGFuZGxlcl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9y dW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVz dHJveSgmb2cwMWExYi0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGludCBvZzAxYTFiX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292MDJhMTAuYwo+IGIvZHJp dmVycy9tZWRpYS9pMmMvb3YwMmExMC5jCj4gaW5kZXggMGYwOGMwNTMzM2VhLi4yYzFlYjcyNGQ4 ZTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3YwMmExMC5jCj4gKysrIGIvZHJp dmVycy9tZWRpYS9pMmMvb3YwMmExMC5jCj4gQEAgLTk3NSw3ICs5NzUsNyBAQCBzdGF0aWMgaW50 IG92MDJhMTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3YwMmExMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgb3YwMmExMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3Qgb3YwMmExMCAqb3YwMmExMCA9IHRvX292MDJhMTAoc2QpOwo+IEBAIC05 ODgsOCArOTg4LDYgQEAgc3RhdGljIGludCBvdjAyYTEwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvdjAyYTEwX3Bv d2VyX29mZigmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9z dXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgm b3YwMmExMC0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb3YwMmExMF9vZl9tYXRjaFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9vdjA4ZDEwLmMKPiBiL2RyaXZl cnMvbWVkaWEvaTJjL292MDhkMTAuYwo+IGluZGV4IGU1ZWY2NDY2YTNlYy4uYzE3MDM1OTZjM2Rj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL292MDhkMTAuYwo+ICsrKyBiL2RyaXZl cnMvbWVkaWEvaTJjL292MDhkMTAuYwo+IEBAIC0xNDE1LDcgKzE0MTUsNyBAQCBzdGF0aWMgaW50 IG92MDhkMTBfZ2V0X2h3Y2ZnKHN0cnVjdCBvdjA4ZDEwCj4gKm92MDhkMTAsIHN0cnVjdCBkZXZp Y2UgKmRldikKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IG92MDhkMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIG92MDhkMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92MDhkMTAgKm92MDhkMTAgPSB0 b19vdjA4ZDEwKHNkKTsKPiBAQCAtMTQyNSw4ICsxNDI1LDYgQEAgc3RhdGljIGludCBvdjA4ZDEw X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0 bDJfY3RybF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7Cj4gwqDCoMKgwqDCoMKgwqDC oHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRl eF9kZXN0cm95KCZvdjA4ZDEwLT5tdXRleCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IG92MDhkMTBfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvb3YxMzg1OC5jCj4g Yi9kcml2ZXJzL21lZGlhL2kyYy9vdjEzODU4LmMKPiBpbmRleCBkNWZlNjdjNzYzZjcuLmU2MThi NjEzZTA3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9vdjEzODU4LmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL2kyYy9vdjEzODU4LmMKPiBAQCAtMTc2OSw3ICsxNzY5LDcgQEAgc3Rh dGljIGludCBvdjEzODU4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG92MTM4NThf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92MTM4NThf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IG92MTM4NTggKm92MTM4NTggPSB0b19vdjEzODU4KHNkKTsK PiBAQCAtMTc3OSw4ICsxNzc5LDYgQEAgc3RhdGljIGludCBvdjEzODU4X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG92MTM4NThfZnJlZV9jb250 cm9scyhvdjEzODU4KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUo JmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBvdjEzODU4X2lkX3RhYmxlW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292MTNiMTAuYwo+IGIvZHJpdmVy cy9tZWRpYS9pMmMvb3YxM2IxMC5jCj4gaW5kZXggN2NhZWFlNjQxMDUxLi41NDllNWQ5M2U1Njgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3YxM2IxMC5jCj4gKysrIGIvZHJpdmVy cy9tZWRpYS9pMmMvb3YxM2IxMC5jCj4gQEAgLTE0NDcsNyArMTQ0Nyw3IEBAIHN0YXRpYyBpbnQg b3YxM2IxMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBvdjEzYjEwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvdjEzYjEwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBvdjEzYjEwICpvdjEzYiA9IHRvX292MTNiMTAoc2QpOwo+IEBAIC0xNDU3 LDggKzE0NTcsNiBAQCBzdGF0aWMgaW50IG92MTNiMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgb3YxM2IxMF9mcmVlX2NvbnRyb2xzKG92MTNi KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2 KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBj b25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBvdjEzYjEwX3BtX29wcyA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9pMmMvb3YyNjQwLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjI2NDAuYwo+ IGluZGV4IDRiNzVkYTU1YjI2MC4uMjllZDBlZjhjMDMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv bWVkaWEvaTJjL292MjY0MC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3YyNjQwLmMKPiBA QCAtMTI3MSw3ICsxMjcxLDcgQEAgc3RhdGljIGludCBvdjI2NDBfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgb3YyNjQwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCBvdjI2NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdjI2NDBfcHJpdsKgwqDCoMKgwqDCoCAqcHJp diA9IHRvX292MjY0MChjbGllbnQpOwo+IMKgCj4gQEAgLTEyODEsNyArMTI4MSw2IEBAIHN0YXRp YyBpbnQgb3YyNjQwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoG1lZGlhX2VudGl0eV9jbGVhbnVwKCZwcml2LT5zdWJkZXYuZW50aXR5KTsKPiDC oMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoJnByaXYtPnN1YmRl dik7Cj4gwqDCoMKgwqDCoMKgwqDCoGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jbGspOwo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgb3YyNjQwX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvaTJjL292MjY1OS5jIGIvZHJpdmVycy9tZWRpYS9pMmMvb3YyNjU5LmMKPiBpbmRleCAx M2RlZDViMmFhNjYuLjQyZmM2NGFkYTA4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2ky Yy9vdjI2NTkuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292MjY1OS5jCj4gQEAgLTE1NDQs NyArMTU0NCw3IEBAIHN0YXRpYyBpbnQgb3YyNjU5X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IG92MjY1OV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgb3YyNjU5X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdjI2NTkgKm92MjY1OSA9IHRvX292 MjY1OShzZCk7Cj4gQEAgLTE1NTgsOCArMTU1OCw2IEBAIHN0YXRpYyBpbnQgb3YyNjU5X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghcG1f cnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKCZjbGllbnQtPmRldikpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBvdjI2NTlfcG93ZXJfb2ZmKCZjbGllbnQtPmRldik7Cj4gwqDCoMKg wqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBkZXZfcG1fb3BzIG92MjY1OV9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvaTJjL292MjY4MC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvb3YyNjgwLmMKPiBpbmRleCA5MDZj NzExZjY4MjEuLmRlNjZkMzM5NWE0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9v djI2ODAuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292MjY4MC5jCj4gQEAgLTEwOTcsNyAr MTA5Nyw3IEBAIHN0YXRpYyBpbnQgb3YyNjgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IG92MjY4MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgb3YyNjgwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdjI2ODBfZGV2ICpzZW5zb3IgPSB0b19v djI2ODBfZGV2KHNkKTsKPiBAQCAtMTEwNiw4ICsxMTA2LDYgQEAgc3RhdGljIGludCBvdjI2ODBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbXV0 ZXhfZGVzdHJveSgmc2Vuc29yLT5sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5 X2NsZWFudXAoJnNlbnNvci0+c2QuZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJs X2hhbmRsZXJfZnJlZSgmc2Vuc29yLT5jdHJscy5oYW5kbGVyKTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgb3Yy NjgwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL2kyYy9vdjI2ODUuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292MjY4NS5jCj4gaW5kZXggYjZl MDEwZWEzMjQ5Li5hM2I1MjRmMTVkODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMv b3YyNjg1LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjI2ODUuYwo+IEBAIC03OTgsNyAr Nzk4LDcgQEAgc3RhdGljIGludCBvdjI2ODVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgb3YyNjg1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBvdjI2ODVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92MjY4NSAqb3YyNjg1ID0gdG9fb3YyNjg1 KHNkKTsKPiBAQCAtODE0LDggKzgxNCw2IEBAIHN0YXRpYyBpbnQgb3YyNjg1X3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghcG1fcnVudGlt ZV9zdGF0dXNfc3VzcGVuZGVkKCZjbGllbnQtPmRldikpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBfX292MjY4NV9wb3dlcl9vZmYob3YyNjg1KTsKPiDCoMKgwqDCoMKgwqDCoMKg cG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWYgSVNfRU5BQkxFRChDT05GSUdfT0YpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292Mjc0MC5jIGIvZHJpdmVycy9tZWRpYS9p MmMvb3YyNzQwLmMKPiBpbmRleCBkNWYwZWFiZjIwYzYuLjVkNzRhZDQ3OTIxNCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL21lZGlhL2kyYy9vdjI3NDAuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJj L292Mjc0MC5jCj4gQEAgLTEwNTMsNyArMTA1Myw3IEBAIHN0YXRpYyBpbnQgb3YyNzQwX2NoZWNr X2h3Y2ZnKHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0 Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3YyNzQwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvdjI3NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2Qg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92 Mjc0MCAqb3YyNzQwID0gdG9fb3YyNzQwKHNkKTsKPiBAQCAtMTA2Myw4ICsxMDYzLDYgQEAgc3Rh dGljIGludCBvdjI3NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZShzZC0+Y3RybF9oYW5kbGVyKTsKPiDC oMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGllbnQtPmRldik7Cj4gwqDCoMKg wqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJm92Mjc0MC0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBvdjI3NDBfbnZtZW1fcmVh ZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgb2ZmLCB2b2lkCj4gKnZhbCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAu Ywo+IGluZGV4IGRiNWExOWJhYmU2Ny4uN2JjZmRmZGQxMjQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWVkaWEvaTJjL292NTY0MC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMK PiBAQCAtMzE4MCw3ICszMTgwLDcgQEAgc3RhdGljIGludCBvdjU2NDBfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+ IMKgCj4gLXN0YXRpYyBpbnQgb3Y1NjQwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBvdjU2NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NTY0MF9kZXYg KnNlbnNvciA9IHRvX292NTY0MF9kZXYoc2QpOwo+IEBAIC0zMTg5LDggKzMxODksNiBAQCBzdGF0 aWMgaW50IG92NTY0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDC oMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2Vuc29yLT5zZC5lbnRpdHkpOwo+IMKg wqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZzZW5zb3ItPmN0cmxzLmhhbmRs ZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZzZW5zb3ItPmxvY2spOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkIG92NTY0MF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9vdjU2NDUuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292NTY0NS5jCj4gaW5kZXgg NTYyYzYyZjE5MmM0Li44MWU0ZTg3ZTE4MjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvb3Y1NjQ1LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDUuYwo+IEBAIC0xMjU2 LDcgKzEyNTYsNyBAQCBzdGF0aWMgaW50IG92NTY0NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBvdjU2NDVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIG92NTY0NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y1NjQ1ICpvdjU2NDUgPSB0b19v djU2NDUoc2QpOwo+IEBAIC0xMjY1LDggKzEyNjUsNiBAQCBzdGF0aWMgaW50IG92NTY0NV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9l bnRpdHlfY2xlYW51cCgmb3Y1NjQ1LT5zZC5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwy X2N0cmxfaGFuZGxlcl9mcmVlKCZvdjU2NDUtPmN0cmxzKTsKPiDCoMKgwqDCoMKgwqDCoMKgbXV0 ZXhfZGVzdHJveSgmb3Y1NjQ1LT5wb3dlcl9sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBv djU2NDVfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ3LmMg Yi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDcuYwo+IGluZGV4IGQzNDZkMThjZTYyOS4uODQ3YTdi YmI2OWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL292NTY0Ny5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ3LmMKPiBAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgc3RhdGlj IGludCBvdjU2NDdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3Y1NjQ3X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvdjU2NDdfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IG92NTY0NyAqc2Vuc29yID0gdG9fc2Vuc29yKHNkKTsKPiBAQCAtMTQ1 OSw4ICsxNDU5LDYgQEAgc3RhdGljIGludCBvdjU2NDdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJk ZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2 KTsKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmc2Vuc29yLT5sb2NrKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGV2X3BtX29wcyBvdjU2NDdfcG1fb3BzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL2kyYy9vdjU2NDguYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292NTY0OC5jCj4gaW5kZXggZGZj ZDMzZTllZTEzLi44NDYwNGVhN2JkZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMv b3Y1NjQ4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDguYwo+IEBAIC0yNTg3LDcg KzI1ODcsNyBAQCBzdGF0aWMgaW50IG92NTY0OF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBvdjU2NDhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIG92NTY0OF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NTY0OF9zZW5zb3IgKnNlbnNv ciA9IG92NTY0OF9zdWJkZXZfc2Vuc29yKHN1YmRldik7Cj4gQEAgLTI1OTcsOCArMjU5Nyw2IEBA IHN0YXRpYyBpbnQgb3Y1NjQ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4g wqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnNlbnNvci0+Y3RybHMuaGFu ZGxlcik7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJnNlbnNvci0+bXV0ZXgpOwo+ IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBkZXZfcG1fb3BzIG92NTY0OF9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvaTJjL292NTY3MC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjcwLmMKPiBpbmRl eCAwMmY3NWMxOGU0ODAuLmJjOWZjM2JjOTBjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlh L2kyYy9vdjU2NzAuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292NTY3MC5jCj4gQEAgLTI1 NTcsNyArMjU1Nyw3IEBAIHN0YXRpYyBpbnQgb3Y1NjcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgaW50IG92NTY3MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgb3Y1NjcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdjU2NzAgKm92NTY3MCA9IHRv X292NTY3MChzZCk7Cj4gQEAgLTI1NjgsOCArMjU2OCw2IEBAIHN0YXRpYyBpbnQgb3Y1NjcwX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4 X2Rlc3Ryb3koJm92NTY3MC0+bXV0ZXgpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRp bWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG92NTY3MF9wbV9v cHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292NTY3NS5jIGIvZHJpdmVy cy9tZWRpYS9pMmMvb3Y1Njc1LmMKPiBpbmRleCA4MmJhOWY1NmJhZWMuLjk0ZGM4Y2I3YTdjMCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NzUuYwo+ICsrKyBiL2RyaXZlcnMv bWVkaWEvaTJjL292NTY3NS5jCj4gQEAgLTExNzUsNyArMTE3NSw3IEBAIHN0YXRpYyBpbnQgb3Y1 Njc1X2NoZWNrX2h3Y2ZnKHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3Y1Njc1X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvdjU2NzVfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1 YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IG92NTY3NSAqb3Y1Njc1ID0gdG9fb3Y1Njc1KHNkKTsKPiBAQCAtMTE4NSw4ICsxMTg1 LDYgQEAgc3RhdGljIGludCBvdjU2NzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZShzZC0+Y3RybF9oYW5k bGVyKTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGllbnQtPmRldik7 Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJm92NTY3NS0+bXV0ZXgpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBvdjU2NzVf cHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9pMmMvb3Y1NjkzLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2OTMuYwo+IGluZGV4IDEx N2ZmNTQwMzMxMi4uNWEwNTM1NmJjZmI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJj L292NTY5My5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjkzLmMKPiBAQCAtMTQ4OSw3 ICsxNDg5LDcgQEAgc3RhdGljIGludCBvdjU2OTNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq Y2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgb3Y1NjkzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCBvdjU2OTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NTY5M19kZXZpY2UgKm92NTY5MyA9 IHRvX292NTY5M19zZW5zb3Ioc2QpOwo+IEBAIC0xNTA3LDggKzE1MDcsNiBAQCBzdGF0aWMgaW50 IG92NTY5M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqBpZiAoIXBtX3J1bnRpbWVfc3RhdHVzX3N1c3BlbmRlZCgmY2xpZW50LT5kZXYpKQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb3Y1NjkzX3NlbnNvcl9wb3dlcmRvd24ob3Y1 NjkzKTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZjbGllbnQt PmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgb3Y1NjkzX3BtX29wcyA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y1Njk1LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2OTUu Ywo+IGluZGV4IDkxMDMwOTc4Mzg4NS4uNjE5MDZmYzU0ZTM3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWVkaWEvaTJjL292NTY5NS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y1Njk1LmMK PiBAQCAtMTM2MSw3ICsxMzYxLDcgQEAgc3RhdGljIGludCBvdjU2OTVfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+ IMKgCj4gLXN0YXRpYyBpbnQgb3Y1Njk1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBvdjU2OTVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NTY5NSAqb3Y1 Njk1ID0gdG9fb3Y1Njk1KHNkKTsKPiBAQCAtMTM3Nyw4ICsxMzc3LDYgQEAgc3RhdGljIGludCBv djU2OTVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDC oMKgaWYgKCFwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KSkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fb3Y1Njk1X3Bvd2VyX29mZihvdjU2OTUpOwo+ IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZiBJU19FTkFC TEVEKENPTkZJR19PRikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y2NjUwLmMg Yi9kcml2ZXJzL21lZGlhL2kyYy9vdjY2NTAuYwo+IGluZGV4IDY0NThlOTZkOTA5MS4uMThmMDQx ZTk4NWI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL292NjY1MC5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9pMmMvb3Y2NjUwLmMKPiBAQCAtMTA5NiwxMyArMTA5NiwxMiBAQCBzdGF0 aWMgaW50IG92NjY1MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBvdjY2NTBfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92NjY1MF9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG92NjY1MCAqcHJpdiA9IHRvX292NjY1MChjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJnByaXYtPnN1YmRldik7Cj4gwqDCoMKg wqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnByaXYtPmhkbCk7Cj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBvdjY2NTBfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMv b3Y3MjUxLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjcyNTEuYwo+IGluZGV4IDBlN2JlMTViYzIw YS4uNWQ4MzdhNzgyYWM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL292NzI1MS5j Cj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y3MjUxLmMKPiBAQCAtMTc2Niw3ICsxNzY2LDcg QEAgc3RhdGljIGludCBvdjcyNTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3Y3 MjUxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBvdjcy NTFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NzI1MSAqb3Y3MjUxID0gdG9fb3Y3MjUxKHNkKTsK PiBAQCAtMTc4MCw4ICsxNzgwLDYgQEAgc3RhdGljIGludCBvdjcyNTFfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFwbV9ydW50aW1lX3N0 YXR1c19zdXNwZW5kZWQob3Y3MjUxLT5kZXYpKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgb3Y3MjUxX3NldF9wb3dlcl9vZmYob3Y3MjUxLT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKg wqBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQob3Y3MjUxLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1f b3BzIG92NzI1MV9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292 NzY0MC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjQwLmMKPiBpbmRleCA5NzdjZDJkOGFkMzMu LjVlMmQ2N2YwZjlmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9vdjc2NDAuYwo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292NzY0MC5jCj4gQEAgLTcwLDEzICs3MCwxMSBAQCBz dGF0aWMgaW50IG92NzY0MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqB9 Cj4gwqAKPiDCoAo+IC1zdGF0aWMgaW50IG92NzY0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgb3Y3NjQwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9k ZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG92NzY0 MF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9vdjc2NzAuYyBiL2Ry aXZlcnMvbWVkaWEvaTJjL292NzY3MC5jCj4gaW5kZXggMWJlMmMwZTViZGMxLi40YjliMTU2YjUz YzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y3NjcwLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL2kyYy9vdjc2NzAuYwo+IEBAIC0yMDA5LDcgKzIwMDksNyBAQCBzdGF0aWMgaW50 IG92NzY3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBvdjc2NzBfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92NzY3MF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0 bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3Qgb3Y3NjcwX2luZm8gKmluZm8gPSB0b19zdGF0ZShzZCk7Cj4gQEAgLTIwMTcs NyArMjAxNyw2IEBAIHN0YXRpYyBpbnQgb3Y3NjcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYo c2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZpbmZvLT5oZGwp Owo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmaW5mby0+c2QuZW50aXR5 KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG92NzY3MF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL2kyYy9vdjc3MnguYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292NzcyeC5jCj4gaW5k ZXggNzg2MDJhMmY3MGIwLi40MTg5ZTNmYzNkNTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRp YS9pMmMvb3Y3NzJ4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjc3MnguYwo+IEBAIC0x NTIxLDcgKzE1MjEsNyBAQCBzdGF0aWMgaW50IG92NzcyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBvdjc3MnhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIG92NzcyeF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92NzcyeF9wcml2ICpwcml2ID0KPiB0b19vdjc3Mngo aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwo+IMKgCj4gQEAgLTE1MzIsOCArMTUzMiw2IEBA IHN0YXRpYyBpbnQgb3Y3NzJ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4g wqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJnByaXYtPnN1YmRl dik7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnByaXYtPmhkbCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJnByaXYtPmxvY2spOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBp MmNfZGV2aWNlX2lkIG92NzcyeF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L2kyYy9vdjc3NDAuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jCj4gaW5kZXggMjUzOWNm ZWU4NWM4Li5jOWZkOWIwYmM1NGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y3 NzQwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjc3NDAuYwo+IEBAIC0xMTUzLDcgKzEx NTMsNyBAQCBzdGF0aWMgaW50IG92Nzc0MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBvdjc3NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IG92Nzc0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y3NzQwICpvdjc3NDAgPSBjb250YWluZXJf b2Yoc2QsIHN0cnVjdCBvdjc3NDAsCj4gc3ViZGV2KTsKPiBAQCAtMTE3MCw3ICsxMTcwLDYgQEAg c3RhdGljIGludCBvdjc3NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9wdXRfbm9pZGxlKCZjbGllbnQtPmRldik7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgb3Y3NzQwX3NldF9wb3dlcihvdjc3NDAsIDApOwo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2Vk IG92Nzc0MF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL2kyYy9vdjg4NTYuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292ODg1Ni5j Cj4gaW5kZXggYTk3MjhhZmM4MWQ0Li5lZmExOGQwMjZhYzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9tZWRpYS9pMmMvb3Y4ODU2LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjg4NTYuYwo+ IEBAIC0yNDQwLDcgKzI0NDAsNyBAQCBzdGF0aWMgaW50IG92ODg1Nl9nZXRfaHdjZmcoc3RydWN0 IG92ODg1Ngo+ICpvdjg4NTYsIHN0cnVjdCBkZXZpY2UgKmRldikKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG92ODg1Nl9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgb3Y4ODU2X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBvdjg4NTYgKm92ODg1NiA9IHRvX292ODg1NihzZCk7Cj4gQEAgLTI0NTIsOCArMjQ1 Miw2IEBAIHN0YXRpYyBpbnQgb3Y4ODU2X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJm92ODg1Ni0+bXV0ZXgpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoF9fb3Y4ODU2X3Bvd2VyX29mZihvdjg4NTYpOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBvdjg4NTZfcHJv YmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvb3Y4ODY1LmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjg4NjUuYwo+IGluZGV4IGI4ZjRm MGQzZTMzZC4uYTIzM2MzNGIxNjhlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL292 ODg2NS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y4ODY1LmMKPiBAQCAtMzExOSw3ICsz MTE5LDcgQEAgc3RhdGljIGludCBvdjg4NjVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgb3Y4ODY1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBvdjg4NjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2ID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBvdjg4NjVfc2Vuc29yICpzZW5zb3Ig PSBvdjg4NjVfc3ViZGV2X3NlbnNvcihzdWJkZXYpOwo+IEBAIC0zMTMxLDggKzMxMzEsNiBAQCBz dGF0aWMgaW50IG92ODg2NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc3ViZGV2LT5lbnRpdHkpOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZndub2RlX2VuZHBvaW50X2ZyZWUoJnNlbnNvci0+ZW5k cG9pbnQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG92ODg2NV9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvaTJjL292OTI4Mi5jIGIvZHJpdmVycy9tZWRpYS9pMmMvb3Y5Mjgy LmMKPiBpbmRleCAyZTBiMzE1ODAxZTUuLmRmMTQ0YTJmNmVkYSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21lZGlhL2kyYy9vdjkyODIuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292OTI4Mi5j Cj4gQEAgLTEwOTEsNyArMTA5MSw3IEBAIHN0YXRpYyBpbnQgb3Y5MjgyX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoCAqCj4gwqAgKiBSZXR1cm46IDAgaWYgc3VjY2Vzc2Z1 bCwgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gwqAgKi8KPiAtc3RhdGljIGludCBvdjkyODJfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92OTI4Ml9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y5MjgyICpvdjkyODIgPSB0b19vdjkyODIoc2QpOwo+IEBAIC0x MTA2LDggKzExMDYsNiBAQCBzdGF0aWMgaW50IG92OTI4Ml9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQo JmNsaWVudC0+ZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZvdjky ODItPm11dGV4KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBvdjkyODJfcG1fb3BzID0gewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9vdjk2NDAuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292 OTY0MC5jCj4gaW5kZXggOWY0NGVkNTJkMTY0Li44YjgwYmUzM2M1ZjQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjQwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjk2 NDAuYwo+IEBAIC03NDQsMTUgKzc0NCwxMyBAQCBzdGF0aWMgaW50IG92OTY0MF9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBvdjk2NDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIG92OTY0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y5NjQw X3ByaXYgKnByaXYgPSB0b19vdjk2NDBfc2Vuc29yKHNkKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqB2NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KCZwcml2LT5zdWJkZXYpOwo+IMKgwqDCoMKg wqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZwcml2LT5oZGwpOwo+IC0KPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIG92OTY0MF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2ky Yy9vdjk2NTAuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL292OTY1MC5jCj4gaW5kZXggYzMxM2UxMWE5 NzU0Li40ZDQ1ODk5M2U2ZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvb3Y5NjUw LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjk2NTAuYwo+IEBAIC0xNTg0LDcgKzE1ODQs NyBAQCBzdGF0aWMgaW50IG92OTY1eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBv djk2NXhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92 OTY1eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y5NjV4ICpvdjk2NXggPSB0b19vdjk2NXgoc2Qp Owo+IEBAIC0xNTkzLDggKzE1OTMsNiBAQCBzdGF0aWMgaW50IG92OTY1eF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxl cl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlf Y2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJm92 OTY1eC0+bG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgb3Y5NjV4X2lkW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL292OTczNC5jIGIvZHJpdmVycy9tZWRpYS9pMmMv b3Y5NzM0LmMKPiBpbmRleCBkZjUzOGNlYjcxYzMuLjhiMGExNThjYjI5NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL21lZGlhL2kyYy9vdjk3MzQuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL292 OTczNC5jCj4gQEAgLTkzMCw3ICs5MzAsNyBAQCBzdGF0aWMgaW50IG92OTczNF9jaGVja19od2Nm ZyhzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBvdjk3MzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIG92OTczNF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y5NzM0ICpv djk3MzQgPSB0b19vdjk3MzQoc2QpOwo+IEBAIC05NDAsOCArOTQwLDYgQEAgc3RhdGljIGludCBv djk3MzRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDC oMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZShzZC0+Y3RybF9oYW5kbGVyKTsKPiDCoMKgwqDCoMKg wqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDC oG11dGV4X2Rlc3Ryb3koJm92OTczNC0+bXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBvdjk3MzRfcHJvYmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvcmRhY20yMC5j Cj4gYi9kcml2ZXJzL21lZGlhL2kyYy9yZGFjbTIwLmMKPiBpbmRleCAyNjE1YWQxNTRmNDkuLmEy MjYzZmE4MjViNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9yZGFjbTIwLmMKPiAr KysgYi9kcml2ZXJzL21lZGlhL2kyYy9yZGFjbTIwLmMKPiBAQCAtNjQ2LDcgKzY0Niw3IEBAIHN0 YXRpYyBpbnQgcmRhY20yMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCByZGFjbTIw X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCByZGFjbTIw X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgcmRhY20yMF9kZXZpY2UgKmRldiA9IGkyY190b19yZGFjbTIwKGNsaWVudCk7Cj4g wqAKPiBAQCAtNjU1LDggKzY1NSw2IEBAIHN0YXRpYyBpbnQgcmRhY20yMF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxl cl9mcmVlKCZkZXYtPmN0cmxzKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2NsZWFu dXAoJmRldi0+c2QuZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2 aWNlKGRldi0+c2Vuc29yKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyB2b2lkIHJkYWNtMjBfc2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvcmRhY20yMS5jCj4gYi9kcml2 ZXJzL21lZGlhL2kyYy9yZGFjbTIxLmMKPiBpbmRleCBlZjMxY2Y1ZjIzY2EuLjljY2M1NmMzMGQz YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9yZGFjbTIxLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL2kyYy9yZGFjbTIxLmMKPiBAQCAtNjE0LDcgKzYxNCw3IEBAIHN0YXRpYyBpbnQg cmRhY20yMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCByZGFjbTIxX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCByZGFjbTIxX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg cmRhY20yMV9kZXZpY2UgKmRldiA9Cj4gc2RfdG9fcmRhY20yMShpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KSk7Cj4gwqAKPiBAQCAtNjIyLDggKzYyMiw2IEBAIHN0YXRpYyBpbnQgcmRhY20yMV9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwy X2N0cmxfaGFuZGxlcl9mcmVlKCZkZXYtPmN0cmxzKTsKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3Vu cmVnaXN0ZXJfZGV2aWNlKGRldi0+aXNwKTsKPiDCoMKgwqDCoMKgwqDCoMKgZndub2RlX2hhbmRs ZV9wdXQoZGV2LT5zZC5md25vZGUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmRhY20yMV9vZl9p ZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvcmo1NG4xY2IwYy5jCj4g Yi9kcml2ZXJzL21lZGlhL2kyYy9yajU0bjFjYjBjLmMKPiBpbmRleCAyZTQwMThjMjY5MTIuLjFj MzUwMmYzNGNkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9yajU0bjFjYjBjLmMK PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9yajU0bjFjYjBjLmMKPiBAQCAtMTM5OCw3ICsxMzk4 LDcgQEAgc3RhdGljIGludCByajU0bjFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg cmo1NG4xX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBy ajU0bjFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCByajU0bjEgKnJqNTRuMSA9IHRvX3JqNTRuMShjbGllbnQpOwo+IMKgCj4g QEAgLTE0MTAsOCArMTQxMCw2IEBAIHN0YXRpYyBpbnQgcmo1NG4xX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGNsa19wdXQocmo1NG4xLT5jbGsp Owo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZyajU0bjEtPmhkbCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJnJqNTRuMS0+ c3ViZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCByajU0bjFfaWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWNvcmUuYwo+IGIvZHJpdmVy cy9tZWRpYS9pMmMvczVjNzNtMy9zNWM3M20zLWNvcmUuYwo+IGluZGV4IGUyYjg4YzVlNGY5OC4u ZDk2YmE1OGNlMWU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3M1YzczbTMvczVj NzNtMy1jb3JlLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9zNWM3M20zL3M1YzczbTMtY29y ZS5jCj4gQEAgLTE3NzAsNyArMTc3MCw3IEBAIHN0YXRpYyBpbnQgczVjNzNtM19wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBzNWM3M20zX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzNWM3M20zX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKm9pZl9z ZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg czVjNzNtMyAqc3RhdGUgPSBvaWZfc2RfdG9fczVjNzNtMyhvaWZfc2QpOwo+IEBAIC0xNzg1LDgg KzE3ODUsNiBAQCBzdGF0aWMgaW50IHM1YzczbTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2NsZWFudXAoJnNlbnNvcl9z ZC0+ZW50aXR5KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBzNWM3M20zX3VucmVnaXN0ZXJfc3Bp X2RyaXZlcihzdGF0ZSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczVjNzNtM19pZFtdID0gewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9zNWs0ZWNneC5jCj4gYi9kcml2ZXJzL21l ZGlhL2kyYy9zNWs0ZWNneC5jCj4gaW5kZXggYWY5YTMwNTI0MmNkLi4zZGRkY2Q5ZGQzNTEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvczVrNGVjZ3guYwo+ICsrKyBiL2RyaXZlcnMv bWVkaWEvaTJjL3M1azRlY2d4LmMKPiBAQCAtOTk2LDcgKzk5Niw3IEBAIHN0YXRpYyBpbnQgczVr NGVjZ3hfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgczVrNGVjZ3hfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHM1azRlY2d4X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBzNWs0ZWNneCAqcHJpdiA9IHRvX3M1azRlY2d4KHNkKTsKPiBAQCAtMTAw Niw4ICsxMDA2LDYgQEAgc3RhdGljIGludCBzNWs0ZWNneF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1 YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnByaXYt PmhhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVu dGl0eSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczVrNGVjZ3hfaWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvczVrNWJhZi5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy9z NWs1YmFmLmMKPiBpbmRleCA2YTVkY2ViNjk5YTguLjVjMjI1M2FiM2I2ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL21lZGlhL2kyYy9zNWs1YmFmLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9z NWs1YmFmLmMKPiBAQCAtMjAxOCw3ICsyMDE4LDcgQEAgc3RhdGljIGludCBzNWs1YmFmX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50ICpjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgczVrNWJhZl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmMp Cj4gK3N0YXRpYyB2b2lkIHM1azViYWZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjKQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGll bnRkYXRhKGMpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgczVrNWJhZiAqc3RhdGUgPSB0b19z NWs1YmFmKHNkKTsKPiBAQCAtMjAzMCw4ICsyMDMwLDYgQEAgc3RhdGljIGludCBzNWs1YmFmX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqYykKPiDCoMKgwqDCoMKgwqDCoMKgc2QgPSAmc3RhdGUt PmNpc19zZDsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYo c2QpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczVrNWJhZl9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL2kyYy9zNWs2YTMuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL3M1azZhMy5jCj4g aW5kZXggZjZlY2Y2ZjkyYmIyLi5hNGVmZDZkMTBiNDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t ZWRpYS9pMmMvczVrNmEzLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9zNWs2YTMuYwo+IEBA IC0zNTQsMTQgKzM1NCwxMyBAQCBzdGF0aWMgaW50IHM1azZhM19wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBzNWs2YTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIHM1azZhM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xp ZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJs ZSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5jX3VucmVnaXN0ZXJf c3ViZGV2KHNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5l bnRpdHkpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczVrNmEzX2lkc1tdID0gewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL2kyYy9zNWs2YWEuYyBiL2RyaXZlcnMvbWVkaWEvaTJjL3M1azZhYS5j Cj4gaW5kZXggMTA1YTRiN2Q4MzU0Li4wNTkyMTE3ODhhNjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9tZWRpYS9pMmMvczVrNmFhLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9zNWs2YWEuYwo+ IEBAIC0xNjIxLDE1ICsxNjIxLDEzIEBAIHN0YXRpYyBpbnQgczVrNmFhX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHM1azZhYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgczVrNmFhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2Vf dW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxl cl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlf Y2xlYW51cCgmc2QtPmVudGl0eSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczVrNmFhX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTY1ODguYwo+IGIvZHJpdmVy cy9tZWRpYS9pMmMvc2FhNjU4OC5jCj4gaW5kZXggZDFlMDcxNmJkZmZmLi5kNmE1MWJlYWJkMDIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvc2FhNjU4OC5jCj4gKysrIGIvZHJpdmVy cy9tZWRpYS9pMmMvc2FhNjU4OC5jCj4gQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgaW50IHNh YTY1ODhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNhYTY1ODhfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNhYTY1ODhfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwy X3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHNhYTY1ODggKnMgPSB0b19zYWE2NTg4KHNkKTsKPiBAQCAtNDkyLDggKzQ5Miw2 IEBAIHN0YXRpYyBpbnQgc2FhNjU4OF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZzLT53b3JrKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTY3NTJocy5j Cj4gYi9kcml2ZXJzL21lZGlhL2kyYy9zYWE2NzUyaHMuYwo+IGluZGV4IGE3ZjA0M2NhZDE0OS4u NTkyOGNjNmY0NTk1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTY3NTJocy5j Cj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvc2FhNjc1MmhzLmMKPiBAQCAtNzY0LDEzICs3NjQs MTIgQEAgc3RhdGljIGludCBzYWE2NzUyaHNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHNhYTY3NTJoc19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgc2FhNjc1MmhzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9z dWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZ0b19z dGF0ZShzZCktPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzYWE2NzUyaHNfaWRbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvc2FhNzExMC5jCj4gYi9kcml2ZXJzL21lZGlh L2kyYy9zYWE3MTEwLmMKPiBpbmRleCAwYzdhOWNlMGE2OTMuLjUwNjc1MjVkOGIxMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTEwLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2kyYy9zYWE3MTEwLmMKPiBAQCAtNDI4LDE0ICs0MjgsMTMgQEAgc3RhdGljIGludCBzYWE3MTEw X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzYWE3MTEwX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzYWE3MTEwX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJk ZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBzYWE3MTEwICpkZWNvZGVyID0gdG9fc2FhNzExMChzZCk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKg wqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZkZWNvZGVyLT5oZGwpOwo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTE1LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJj L3NhYTcxMTUuYwo+IGluZGV4IDE1ZmY4MGU2MzAxZS4uODZlNzBhOTgwMjE4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMTUuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJj L3NhYTcxMTUuYwo+IEBAIC0xOTI3LDEzICsxOTI3LDEyIEBAIHN0YXRpYyBpbnQgc2FhNzExeF9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g LS0tLS0tICovCj4gwqAKPiAtc3RhdGljIGludCBzYWE3MTF4X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzYWE3MTF4X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg djRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwy X2N0cmxfaGFuZGxlcl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQg c2FhNzExeF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTI3 LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMjcuYwo+IGluZGV4IDg5MTE5MmY2NDEyYS4u NzhjOTM4OGMyZWExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMjcuYwo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcxMjcuYwo+IEBAIC03ODUsMTQgKzc4NSwxMyBA QCBzdGF0aWMgaW50IHNhYTcxMjdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IMKgCj4gLXN0YXRpYyBpbnQgc2FhNzEy N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgc2FhNzEy N19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsK PiDCoMKgwqDCoMKgwqDCoMKgLyogVHVybiBvZmYgVFYgb3V0cHV0ICovCj4gwqDCoMKgwqDCoMKg wqDCoHNhYTcxMjdfc2V0X3ZpZGVvX2VuYWJsZShzZCwgMCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcxN3guYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvc2Fh NzE3eC5jCj4gaW5kZXggYWRmOTA1MzYwMTcxLi40ZjNkMWI0MzJhNGUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvc2FhNzE3eC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvc2Fh NzE3eC5jCj4gQEAgLTEzMjQsMTMgKzEzMjQsMTIgQEAgc3RhdGljIGludCBzYWE3MTd4X3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzYWE3MTd4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzYWE3MTd4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNk ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRs Ml9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0 cmxfaGFuZGxlcl9mcmVlKHNkLT5jdHJsX2hhbmRsZXIpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL2kyYy9zYWE3MTg1LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcx ODUuYwo+IGluZGV4IDdhMDQ0MjJkZjhjOC4uMjY2NDYyMzI1ZDMwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvaTJjL3NhYTcxODUuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3NhYTcx ODUuYwo+IEBAIC0zMjIsNyArMzIyLDcgQEAgc3RhdGljIGludCBzYWE3MTg1X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBzYWE3MTg1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCBzYWE3MTg1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzYWE3MTg1 ICplbmNvZGVyID0gdG9fc2FhNzE4NShzZCk7Cj4gQEAgLTMzMCw3ICszMzAsNiBAQCBzdGF0aWMg aW50IHNhYTcxODVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDC oMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDC oMKgwqAvKiBTVzogb3V0cHV0IG9mZiBpcyBhY3RpdmUgKi8KPiDCoMKgwqDCoMKgwqDCoMKgc2Fh NzE4NV93cml0ZShzZCwgMHg2MSwgKGVuY29kZXItPnJlZ1sweDYxXSkgfCAweDQwKTsKPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0g Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvc29ueS1idGYtbXB4LmMKPiBiL2Ry aXZlcnMvbWVkaWEvaTJjL3NvbnktYnRmLW1weC5jCj4gaW5kZXggYWQyMzkyODBjNDJlLi45Mjdh OWVjNDE0NjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvc29ueS1idGYtbXB4LmMK PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9zb255LWJ0Zi1tcHguYwo+IEBAIC0zNTcsMTMgKzM1 NywxMSBAQCBzdGF0aWMgaW50IHNvbnlfYnRmX21weF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgc29ueV9idGZfbXB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBzb255X2J0Zl9tcHhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91 bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy9zcjAzMHBjMzAuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvc3IwMzBwYzMwLmMK PiBpbmRleCAxOWMwMjUyZGYyZjEuLmZmMTg2OTNiZWI1YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL2kyYy9zcjAzMHBjMzAuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3NyMDMwcGMz MC5jCj4gQEAgLTczMiwxMyArNzMyLDEyIEBAIHN0YXRpYyBpbnQgc3IwMzBwYzMwX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBzcjAzMHBjMzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNyMDMwcGMzMF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpz ZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0 bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9j dHJsX2hhbmRsZXJfZnJlZShzZC0+Y3RybF9oYW5kbGVyKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNy MDMwcGMzMF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9zdC1taXBp ZDAyLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9zdC0KPiBtaXBpZDAyLmMKPiBpbmRleCBlZjk3NmQw ODVkNzIuLjAzODkyMjNhNjFmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9zdC1t aXBpZDAyLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9zdC1taXBpZDAyLmMKPiBAQCAtMTA0 MSw3ICsxMDQxLDcgQEAgc3RhdGljIGludCBtaXBpZDAyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgaW50IG1pcGlkMDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0 YXRpYyB2b2lkIG1pcGlkMDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1pcGlkMDJfZGV2ICpicmlk Z2UgPSB0b19taXBpZDAyX2RldihzZCk7Cj4gQEAgLTEwNTIsOCArMTA1Miw2IEBAIHN0YXRpYyBp bnQgbWlwaWQwMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqBtaXBpZDAyX3NldF9wb3dlcl9vZmYoYnJpZGdlKTsKPiDCoMKgwqDCoMKgwqDCoMKg bWVkaWFfZW50aXR5X2NsZWFudXAoJmJyaWRnZS0+c2QuZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDC oMKgbXV0ZXhfZGVzdHJveSgmYnJpZGdlLT5sb2NrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG1p cGlkMDJfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4 NzQzLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4NzQzLmMKPiBpbmRleCBlMThiODk0N2Fk N2UuLmQ5OWVlZGJkZjAxMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy90YzM1ODc0 My5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvdGMzNTg3NDMuYwo+IEBAIC0yMTY5LDcgKzIx NjksNyBAQCBzdGF0aWMgaW50IHRjMzU4NzQzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IHRjMzU4NzQzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCB0YzM1ODc0M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGMzNTg3NDNfc3RhdGUgKnN0YXRl ID0gdG9fc3RhdGUoc2QpOwo+IEBAIC0yMTg1LDggKzIxODUsNiBAQCBzdGF0aWMgaW50IHRjMzU4 NzQzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oG11dGV4X2Rlc3Ryb3koJnN0YXRlLT5jb25mY3RsX211dGV4KTsKPiDCoMKgwqDCoMKgwqDCoMKg bWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwy X2N0cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0 YzM1ODc0M19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90ZGExOTk3 eC5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy90ZGExOTk3eC5jCj4gaW5kZXggOGZhZmNlMjZkNjJm Li40N2Q2MGY5YTY1NmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvdGRhMTk5N3gu Ywo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3RkYTE5OTd4LmMKPiBAQCAtMjgwNSw3ICsyODA1 LDcgQEAgc3RhdGljIGludCB0ZGExOTk3eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCB0ZGExOTk3eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgdGRhMTk5N3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRkYTE5OTd4X3N0YXRlICpzdGF0ZSA9 IHRvX3N0YXRlKHNkKTsKPiBAQCAtMjgyNyw4ICsyODI3LDYgQEAgc3RhdGljIGludCB0ZGExOTk3 eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBt dXRleF9kZXN0cm95KCZzdGF0ZS0+bG9jayk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUo c3RhdGUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIHN0cnVjdCBpMmNfZHJpdmVyIHRkYTE5OTd4X2kyY19kcml2ZXIgPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvaTJjL3RkYTc0MzIuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvdGRh NzQzMi5jCj4gaW5kZXggY2JkYzliZTBhNTk3Li4xMWU5MTgzMTFiMTMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvdGRhNzQzMi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvdGRh NzQzMi5jCj4gQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgaW50IHRkYTc0MzJfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IHRkYTc0MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHRkYTc0MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRkYTc0 MzIgKnQgPSB0b19zdGF0ZShzZCk7Cj4gQEAgLTM5OCw3ICszOTgsNiBAQCBzdGF0aWMgaW50IHRk YTc0MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDC oMKgdGRhNzQzMl9zZXQoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lz dGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUo JnQtPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0ZGE3NDMyX2lkW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvaTJjL3RkYTk4NDAuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvdGRh OTg0MC5jCj4gaW5kZXggOGM2ZGZlNzQ2YjIwLi5hYWE3NDk0NGZjN2MgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvdGRhOTg0MC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvdGRh OTg0MC5jCj4gQEAgLTE3NSwxMiArMTc1LDExIEBAIHN0YXRpYyBpbnQgdGRhOTg0MF9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdGRhOTg0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGRhOTg0MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJf ZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRkYTk4NDBf aWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvdGVhNjQxNWMuYwo+IGIv ZHJpdmVycy9tZWRpYS9pMmMvdGVhNjQxNWMuYwo+IGluZGV4IDY3Mzc4ZGJjYzc0Yi4uNTBlNzQz MTRmMzE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3RlYTY0MTVjLmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL2kyYy90ZWE2NDE1Yy5jCj4gQEAgLTEzNCwxMiArMTM0LDExIEBAIHN0 YXRpYyBpbnQgdGVhNjQxNWNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRlYTY0MTVj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0ZWE2NDE1 Y19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsK PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkIHRlYTY0MTVjX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvaTJjL3RlYTY0MjAuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvdGVhNjQyMC5jCj4g aW5kZXggNzEyMTQxYjI2MWVkLi4yNDZmMmIxMGNjYzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t ZWRpYS9pMmMvdGVhNjQyMC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvdGVhNjQyMC5jCj4g QEAgLTExNiwxMiArMTE2LDExIEBAIHN0YXRpYyBpbnQgdGVhNjQyMF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgdGVhNjQyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgdGVhNjQyMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3Vu cmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRlYTY0MjBfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvdGhzNzMwMy5jCj4gYi9kcml2ZXJzL21l ZGlhL2kyYy90aHM3MzAzLmMKPiBpbmRleCA4MjA2YmY3YTVhOGYuLjJhMGY5YTNkMWE2NiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy90aHM3MzAzLmMKPiArKysgYi9kcml2ZXJzL21l ZGlhL2kyYy90aHM3MzAzLmMKPiBAQCAtMzU4LDEzICszNTgsMTEgQEAgc3RhdGljIGludCB0aHM3 MzAzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0aHM3MzAzX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0aHM3MzAzX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2 aWNlX2lkIHRoczczMDNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMv dGhzODIwMC5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy90aHM4MjAwLmMKPiBpbmRleCBjNTJmZTg0 Y2JhMWIuLjA4MWVmNWE0Yjk1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy90aHM4 MjAwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy90aHM4MjAwLmMKPiBAQCAtNDY4LDcgKzQ2 OCw3IEBAIHN0YXRpYyBpbnQgdGhzODIwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg dGhzODIwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg dGhzODIwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGhzODIwMF9zdGF0ZSAqZGVjb2RlciA9IHRv X3N0YXRlKHNkKTsKPiBAQCAtNDc4LDggKzQ3OCw2IEBAIHN0YXRpYyBpbnQgdGhzODIwMF9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHRo czgyMDBfc19wb3dlcihzZCwgZmFsc2UpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5jX3Vu cmVnaXN0ZXJfc3ViZGV2KCZkZWNvZGVyLT5zZCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGhz ODIwMF9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90bHYzMjBhaWMy M2IuYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvdGx2MzIwYWljMjNiLmMKPiBpbmRleCBlNGMyMTk5 MGZlYTkuLjkzN2ZhMWRiYWVjYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy90bHYz MjBhaWMyM2IuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3RsdjMyMGFpYzIzYi5jCj4gQEAg LTE3NywxNCArMTc3LDEzIEBAIHN0YXRpYyBpbnQgdGx2MzIwYWljMjNiX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB0bHYzMjBhaWMyM2JfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHRsdjMyMGFpYzIzYl9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpz ZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg dGx2MzIwYWljMjNiX3N0YXRlICpzdGF0ZSA9IHRvX3N0YXRlKHNkKTsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKg wqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnN0YXRlLT5oZGwpOwo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90dmF1ZGlvLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJj L3R2YXVkaW8uYwo+IGluZGV4IGU2Nzk2ZTk0ZGFkZi4uOWYxZWQwNzhiNjYxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvaTJjL3R2YXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJj L3R2YXVkaW8uYwo+IEBAIC0yMDY1LDcgKzIwNjUsNyBAQCBzdGF0aWMgaW50IHR2YXVkaW9fcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCAqCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg dHZhdWRpb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg dHZhdWRpb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgQ0hJUFNUQVRFICpjaGlwID0gdG9fc3RhdGUo c2QpOwo+IEBAIC0yMDc5LDcgKzIwNzksNiBAQCBzdGF0aWMgaW50IHR2YXVkaW9fcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2Rl dmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9o YW5kbGVyX2ZyZWUoJmNoaXAtPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoC8qIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1hbnkgZGV2aWNlcyBhbmQgdGhlIGlk ZWEgaXMgdG8gbGV0IHRoZQo+IGRyaXZlcgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2ky Yy90dnA1MTR4LmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3R2cDUxNHguYwo+IGluZGV4IGNlZTYw Zjk0NTAzNi4uYTc0NmQ5Njg3NWY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3R2 cDUxNHguYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3R2cDUxNHguYwo+IEBAIC0xMTIxLDcg KzExMjEsNyBAQCB0dnA1MTR4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGNvbnN0 Cj4gc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgICogVW5yZWdpc3RlciBkZWNvZGVyIGFz IGFuIGkyYyBjbGllbnQgZGV2aWNlIGFuZCBWNEwyCj4gwqAgKiBkZXZpY2UuIENvbXBsZW1lbnQg b2YgdHZwNTE0eF9wcm9iZSgpLgo+IMKgICovCj4gLXN0YXRpYyBpbnQgdHZwNTE0eF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHZwNTE0eF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgdHZwNTE0eF9kZWNvZGVyICpkZWNvZGVyID0gdG9fZGVjb2RlcihzZCk7 Cj4gQEAgLTExMjksNyArMTEyOSw2IEBAIHN0YXRpYyBpbnQgdHZwNTE0eF9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2FzeW5jX3VucmVn aXN0ZXJfc3ViZGV2KCZkZWNvZGVyLT5zZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoG1lZGlhX2VudGl0 eV9jbGVhbnVwKCZkZWNvZGVyLT5zZC5lbnRpdHkpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0 cmxfaGFuZGxlcl9mcmVlKCZkZWNvZGVyLT5oZGwpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgLyogVFZQNTE0NiBJbml0L1Bvd2VyIG9uIFNlcXVlbmNlICovCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IHR2cDUxNHhfcmVnIHR2cDUxNDZfaW5pdF9yZWdfc2VxW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3R2cDUxNTAuYwo+IGIvZHJpdmVycy9tZWRp YS9pMmMvdHZwNTE1MC5jCj4gaW5kZXggNjU0NzI0Mzg0NDRiLi5kZTIxZTY3YzA3MDkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvdHZwNTE1MC5jCj4gKysrIGIvZHJpdmVycy9tZWRp YS9pMmMvdHZwNTE1MC5jCj4gQEAgLTIyMzAsNyArMjIzMCw3IEBAIHN0YXRpYyBpbnQgdHZwNTE1 MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl czsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHR2cDUxNTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjKQo+ICtzdGF0aWMgdm9pZCB0dnA1MTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjKTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR2cDUxNTAgKmRlY29k ZXIgPSB0b190dnA1MTUwKHNkKTsKPiBAQCAtMjI1MCw4ICsyMjUwLDYgQEAgc3RhdGljIGludCB0 dnA1MTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqYykKPiDCoMKgwqDCoMKgwqDCoMKgdjRs Ml9jdHJsX2hhbmRsZXJfZnJlZSgmZGVjb2Rlci0+aGRsKTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1f cnVudGltZV9kaXNhYmxlKCZjLT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3Nl dF9zdXNwZW5kZWQoJmMtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2kyYy90dnA3MDAyLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3R2cDcwMDIuYwo+IGlu ZGV4IDJkZTE4ODMzYjA3Yi4uNGNjZDIxOGY1NTg0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVk aWEvaTJjL3R2cDcwMDIuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3R2cDcwMDIuYwo+IEBA IC0xMDQ0LDcgKzEwNDQsNyBAQCBzdGF0aWMgaW50IHR2cDcwMDJfcHJvYmUoc3RydWN0IGkyY19j bGllbnQgKmMpCj4gwqAgKiBSZXNldCB0aGUgVFZQNzAwMiBkZXZpY2UKPiDCoCAqIFJldHVybnMg emVyby4KPiDCoCAqLwo+IC1zdGF0aWMgaW50IHR2cDcwMDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjKQo+ICtzdGF0aWMgdm9pZCB0dnA3MDAyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjKTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR2cDcwMDIgKmRldmlj ZSA9IHRvX3R2cDcwMDIoc2QpOwo+IEBAIC0xMDU2LDcgKzEwNTYsNiBAQCBzdGF0aWMgaW50IHR2 cDcwMDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjKQo+IMKgwqDCoMKgwqDCoMKgwqBtZWRp YV9lbnRpdHlfY2xlYW51cCgmZGV2aWNlLT5zZC5lbnRpdHkpOwo+IMKgI2VuZGlmCj4gwqDCoMKg wqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmRldmljZS0+aGRsKTsKPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogSTJDIERldmljZSBJRCB0YWJsZSAq Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90dzI4MDQuYyBiL2RyaXZlcnMvbWVk aWEvaTJjL3R3MjgwNC5jCj4gaW5kZXggY2QwNWYxZmY1MDRkLi5jN2M4ZGZlOGE4YTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvdHcyODA0LmMKPiArKysgYi9kcml2ZXJzL21lZGlh L2kyYy90dzI4MDQuYwo+IEBAIC00MDUsMTQgKzQwNSwxMyBAQCBzdGF0aWMgaW50IHR3MjgwNF9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdHcyODA0X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0dzI4MDRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAq c2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHR3MjgwNCAqc3RhdGUgPSB0b19zdGF0ZShzZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRs Ml9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0 cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHR3MjgwNF9p ZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy90dzk5MDMuYyBiL2RyaXZl cnMvbWVkaWEvaTJjL3R3OTkwMy5jCj4gaW5kZXggZjhlM2FiNDkwOWQ4Li5kN2VlZjc5ODZiNzUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMvdHc5OTAzLmMKPiArKysgYi9kcml2ZXJz L21lZGlhL2kyYy90dzk5MDMuYwo+IEBAIC0yMzUsMTMgKzIzNSwxMiBAQCBzdGF0aWMgaW50IHR3 OTkwM19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdHc5OTAzX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0dzk5MDNfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1 YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDC oHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJnRvX3N0YXRlKHNkKS0+aGRsKTsKPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvdHc5OTA2LmMgYi9kcml2ZXJzL21lZGlhL2ky Yy90dzk5MDYuYwo+IGluZGV4IGM1MjhlYjAxZmVkMC4uNTQ5YWQ4ZjcyZjEyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvaTJjL3R3OTkwNi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMv dHc5OTA2LmMKPiBAQCAtMjAzLDEzICsyMDMsMTIgQEAgc3RhdGljIGludCB0dzk5MDZfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHR3OTkwNl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHc5OTA2X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9k ZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxf aGFuZGxlcl9mcmVlKCZ0b19zdGF0ZShzZCktPmhkbCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvaTJjL3R3OTkxMC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvdHc5OTEwLmMK PiBpbmRleCAwOWY1YjM5ODY5MjguLjg1M2I1YWNlYWQzMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL2kyYy90dzk5MTAuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3R3OTkxMC5jCj4g QEAgLTk5Myw3ICs5OTMsNyBAQCBzdGF0aWMgaW50IHR3OTkxMF9wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCB0dzk5MTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIHR3OTkxMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR3OTkxMF9wcml2ICpwcml2ID0gdG9fdHc5OTEw KGNsaWVudCk7Cj4gwqAKPiBAQCAtMTAwMSw4ICsxMDAxLDYgQEAgc3RhdGljIGludCB0dzk5MTBf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGdwaW9kX3B1dChwcml2LT5wZG5fZ3Bpbyk7Cj4gwqDCoMKgwqDCoMKgwqDC oGNsa19wdXQocHJpdi0+Y2xrKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9hc3luY191bnJlZ2lz dGVyX3N1YmRldigmcHJpdi0+c3ViZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0dzk5MTBf aWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvdWRhMTM0Mi5jCj4gYi9k cml2ZXJzL21lZGlhL2kyYy91ZGExMzQyLmMKPiBpbmRleCBiMGE5YzZkNzE2M2YuLmQwNjU5YzQz OTJmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy91ZGExMzQyLmMKPiArKysgYi9k cml2ZXJzL21lZGlhL2kyYy91ZGExMzQyLmMKPiBAQCAtNzIsMTIgKzcyLDExIEBAIHN0YXRpYyBp bnQgdWRhMTM0Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdWRhMTM0Ml9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdWRhMTM0Ml9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIHVkYTEzNDJfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9p MmMvdXBkNjQwMzFhLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3VwZDY0MDMxYS5jCj4gaW5kZXgg ZWYzNWM2NTc0Nzg1Li40ZGUyNmVkMmJhMDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9p MmMvdXBkNjQwMzFhLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy91cGQ2NDAzMWEuYwo+IEBA IC0yMTAsMTIgKzIxMCwxMSBAQCBzdGF0aWMgaW50IHVwZDY0MDMxYV9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgdXBkNjQwMzFhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCB1cGQ2NDAzMWFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2Rldmlj ZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvaTJjL3VwZDY0MDgzLmMKPiBiL2RyaXZlcnMvbWVkaWEvaTJjL3VwZDY0MDgzLmMKPiBp bmRleCBkNmExNjk4Y2FhMmEuLjJiZmQ1NDQzZDQwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21l ZGlhL2kyYy91cGQ2NDA4My5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvdXBkNjQwODMuYwo+ IEBAIC0xODEsMTIgKzE4MSwxMSBAQCBzdGF0aWMgaW50IHVwZDY0MDgzX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB1cGQ2NDA4M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgdXBkNjQwODNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2Rldmlj ZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvaTJjL3ZpZGVvLWkyYy5jIGIvZHJpdmVycy9tZWRpYS9pMmMvdmlkZW8tCj4gaTJjLmMK PiBpbmRleCBlMDhlMzU3OWMwYTEuLmYxNWVmMmQxMzA1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL2kyYy92aWRlby1pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3ZpZGVvLWky Yy5jCj4gQEAgLTg5NSw3ICs4OTUsNyBAQCBzdGF0aWMgaW50IHZpZGVvX2kyY19wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCB2aWRlb19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHZpZGVvX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHZpZGVvX2kyY19kYXRh ICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtOTA4LDggKzkw OCw2IEBAIHN0YXRpYyBpbnQgdmlkZW9faTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5jaGlwLT5zZXRf cG93ZXIoZGF0YSwgZmFsc2UpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHZpZGVvX3VucmVnaXN0 ZXJfZGV2aWNlKCZkYXRhLT52ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvdnAyN3NtcHguYwo+IGIvZHJpdmVycy9tZWRpYS9pMmMvdnAyN3NtcHguYwo+IGluZGV4 IDQ5MmFmODc0OWZjYS4uYzgzMmVkYWQ1ZmE3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEv aTJjL3ZwMjdzbXB4LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy92cDI3c21weC5jCj4gQEAg LTE2MywxMiArMTYzLDExIEBAIHN0YXRpYyBpbnQgdnAyN3NtcHhfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IHZwMjdzbXB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCB2cDI3c21weF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3Vu cmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvdnB4MzIyMC5jCj4gYi9kcml2ZXJzL21lZGlhL2kyYy92cHgzMjIwLmMKPiBpbmRleCA4 YmUwM2ZlNTkyOGMuLmI0ODFlYzE5NmI4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL2ky Yy92cHgzMjIwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy92cHgzMjIwLmMKPiBAQCAtNTI2 LDE1ICs1MjYsMTMgQEAgc3RhdGljIGludCB2cHgzMjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCB2cHgzMjIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCB2cHgzMjIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2cHgzMjIwICpkZWNvZGVyID0g dG9fdnB4MzIyMChzZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdp c3Rlcl9zdWJkZXYoc2QpOwo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVl KCZkZWNvZGVyLT5oZGwpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHZweDMyMjBfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvdnM2NjI0LmMgYi9kcml2ZXJzL21lZGlh L2kyYy92czY2MjQuYwo+IGluZGV4IDI5MDAzZGVjNmYyZC4uZDQ5NmJiNDVmMjAxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3ZzNjYyNC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9p MmMvdnM2NjI0LmMKPiBAQCAtODI0LDEzICs4MjQsMTIgQEAgc3RhdGljIGludCB2czY2MjRfcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g cmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdnM2NjI0X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB2czY2MjRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAq c2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2 NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJf Y3RybF9oYW5kbGVyX2ZyZWUoc2QtPmN0cmxfaGFuZGxlcik7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB2 czY2MjRfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9pMmMvd204NzM5LmMg Yi9kcml2ZXJzL21lZGlhL2kyYy93bTg3MzkuYwo+IGluZGV4IGVkNTMzODM0ZGI1NC4uMTgwYjM1 MzQ3NTIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3dtODczOS5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9pMmMvd204NzM5LmMKPiBAQCAtMjM0LDE0ICsyMzQsMTMgQEAgc3RhdGlj IGludCB3bTg3MzlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHdtODczOV9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgd204NzM5X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCB3bTg3Mzlfc3RhdGUgKnN0YXRlID0gdG9fc3RhdGUoc2QpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiDCoMKg wqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmc3RhdGUtPmhkbCk7Cj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCB3bTg3MzlfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9p MmMvd204Nzc1LmMgYi9kcml2ZXJzL21lZGlhL2kyYy93bTg3NzUuYwo+IGluZGV4IGQ0YzgzYzM5 ODkyYS4uOGZmOTc4NjdkM2NkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL3dtODc3 NS5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvd204Nzc1LmMKPiBAQCAtMjgwLDE0ICsyODAs MTMgQEAgc3RhdGljIGludCB3bTg3NzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHdt ODc3NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgd204 Nzc1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB3bTg3NzVfc3RhdGUgKnN0YXRlID0gdG9fc3RhdGUo c2QpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2 KHNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmc3RhdGUtPmhk bCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25z dCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB3bTg3NzVfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9yYWRpby9yYWRpby10ZWE1NzY0LmMKPiBiL2RyaXZlcnMvbWVkaWEvcmFkaW8v cmFkaW8tdGVhNTc2NC5jCj4gaW5kZXggODc3YTI0ZTVjNTc3Li5hYmRhNDBlODE2MTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby10ZWE1NzY0LmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL3JhZGlvL3JhZGlvLXRlYTU3NjQuYwo+IEBAIC00ODcsNyArNDg3LDcgQEAgc3Rh dGljIGludCB0ZWE1NzY0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0ZWE1 NzY0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg dGVhNTc2NF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB0ZWE1NzY0X2RldmljZSAqcmFkaW8gPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC00OTksNyArNDk5LDYgQEAgc3RhdGljIGludCB0ZWE1 NzY0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmcmFkaW8tPnY0bDJf ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHJhZGlvKTsKPiDC oMKgwqDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqAvKiBJMkMgc3Vic3lzdGVtIGludGVyZmFjZSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3JhZGlvL3NhYTc3MDZoLmMKPiBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2FhNzcwNmguYwo+ IGluZGV4IGFkYjY2Zjg2OWRkMi4uZjllOTkwYTljM2VmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv bWVkaWEvcmFkaW8vc2FhNzcwNmguYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2FhNzcw NmguYwo+IEBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIGludCBzYWE3NzA2aF9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBzYWE3NzA2aF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgc2FhNzcwNmhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2Qg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHNh YTc3MDZoX3N0YXRlICpzdGF0ZSA9IHRvX3N0YXRlKHNkKTsKPiBAQCAtMzkzLDcgKzM5Myw2IEBA IHN0YXRpYyBpbnQgc2FhNzcwNmhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+IMKg wqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiDCoMKg wqDCoMKgwqDCoMKga2ZyZWUodG9fc3RhdGUoc2QpKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNhYTc3 MDZoX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzB4L3Jh ZGlvLXNpNDcweC1pMmMuYwo+IGIvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvcmFkaW8tc2k0 NzB4LWkyYy5jCj4gaW5kZXggNTliM2Q3N2UyODJkLi5hNmFkOTI2YzJiNGUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvcmFkaW8tc2k0NzB4LWkyYy5jCj4gKysrIGIv ZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvcmFkaW8tc2k0NzB4LWkyYy5jCj4gQEAgLTQ2MSw3 ICs0NjEsNyBAQCBzdGF0aWMgaW50IHNpNDcweF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgLyoKPiDCoCAqIHNpNDcweF9pMmNfcmVtb3ZlIC0gcmVtb3ZlIHRoZSBk ZXZpY2UKPiDCoCAqLwo+IC1zdGF0aWMgaW50IHNpNDcweF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNpNDcweF9pMmNfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzaTQ3MHhf ZGV2aWNlICpyYWRpbyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTQ3 Miw3ICs0NzIsNiBAQCBzdGF0aWMgaW50IHNpNDcweF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9m cmVlKCZyYWRpby0+aGRsKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9kZXZpY2VfdW5yZWdpc3Rl cigmcmFkaW8tPnY0bDJfZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3NpNDcxMy5j Cj4gYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy9zaTQ3MTMuYwo+IGluZGV4IGFkYmY0M2Zm NmEyMS4uMmFlYzY0MjEzM2ExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0 NzEzL3NpNDcxMy5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMvc2k0NzEzLmMK PiBAQCAtMTYyMyw3ICsxNjIzLDcgQEAgc3RhdGljIGludCBzaTQ3MTNfcHJvYmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgfQo+IMKgCj4gwqAvKiBzaTQ3MTNfcmVtb3ZlIC0gcmVt b3ZlIHRoZSBkZXZpY2UgKi8KPiAtc3RhdGljIGludCBzaTQ3MTNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNpNDcxM19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2 ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3Qgc2k0NzEzX2RldmljZSAqc2RldiA9IHRvX3NpNDcxM19kZXZpY2Uoc2QpOwo+IEBAIC0xNjM1 LDggKzE2MzUsNiBAQCBzdGF0aWMgaW50IHNpNDcxM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJf c3ViZGV2KHNkKTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZShzZC0+ Y3RybF9oYW5kbGVyKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoC8qIHNpNDcxM19pMmNfZHJpdmVyIC0gaTJjIGRyaXZlciBpbnRlcmZhY2UgKi8KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYWRpby90ZWY2ODYyLmMKPiBiL2RyaXZlcnMvbWVkaWEv cmFkaW8vdGVmNjg2Mi5jCj4gaW5kZXggZDg4MTA0OTJkYjRmLi43YjA4NzBhOTc4NWIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby90ZWY2ODYyLmMKPiArKysgYi9kcml2ZXJzL21l ZGlhL3JhZGlvL3RlZjY4NjIuYwo+IEBAIC0xNjUsMTMgKzE2NSwxMiBAQCBzdGF0aWMgaW50IHRl ZjY4NjJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRlZjY4NjJfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRlZjY4NjJfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwy X3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7Cj4gwqDCoMKgwqDCoMKg wqDCoGtmcmVlKHRvX3N0YXRlKHNkKSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0ZWY2ODYyX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpZHR2L3ZpZHR2 X2RlbW9kLmMKPiBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpZHR2L3ZpZHR2X2RlbW9k LmMKPiBpbmRleCBiNzgyM2Q5N2IzMGQuLmU3OTU5YWIxYWRkOCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aWR0di92aWR0dl9kZW1vZC5jCj4gKysrIGIvZHJpdmVy cy9tZWRpYS90ZXN0LWRyaXZlcnMvdmlkdHYvdmlkdHZfZGVtb2QuYwo+IEBAIC00MzgsMTMgKzQz OCwxMSBAQCBzdGF0aWMgaW50IHZpZHR2X2RlbW9kX2kyY19wcm9iZShzdHJ1Y3QKPiBpMmNfY2xp ZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgdmlkdHZfZGVtb2RfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCB2aWR0dl9kZW1vZF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2aWR0dl9kZW1vZF9zdGF0 ZSAqc3RhdGUgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBrZnJlZShzdGF0ZSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgdmlkdHZfZGVtb2RfaTJjX2RyaXZlciA9 IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdmlkdHYvdmlkdHZf dHVuZXIuYwo+IGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdmlkdHYvdmlkdHZfdHVuZXIu Ywo+IGluZGV4IDE0YjZiYzkwMmVlMS4uYWFiYzk3ZWQ3MzZiIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpZHR2L3ZpZHR2X3R1bmVyLmMKPiArKysgYi9kcml2ZXJz L21lZGlhL3Rlc3QtZHJpdmVycy92aWR0di92aWR0dl90dW5lci5jCj4gQEAgLTQxNCwxMyArNDE0 LDExIEBAIHN0YXRpYyBpbnQgdmlkdHZfdHVuZXJfaTJjX3Byb2JlKHN0cnVjdAo+IGkyY19jbGll bnQgKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCB2aWR0dl90dW5lcl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIHZpZHR2X3R1bmVyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHZpZHR2X3R1bmVyX2RldiAq dHVuZXJfZGV2ID0KPiBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBrZnJlZSh0dW5lcl9kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHZpZHR2X3R1bmVyX2kyY19k cml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmMKPiBi L2RyaXZlcnMvbWVkaWEvdHVuZXJzL2U0MDAwLmMKPiBpbmRleCBhM2E4ZDA1MWRjNmMuLjYxYWU4 ODRlYTU5YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVycy9lNDAwMC5jCj4gKysr IGIvZHJpdmVycy9tZWRpYS90dW5lcnMvZTQwMDAuYwo+IEBAIC03MDYsNyArNzA2LDcgQEAgc3Rh dGljIGludCBlNDAwMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZTQwMDBfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGU0MDAwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg djRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBlNDAwMF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihzZCwgc3RydWN0IGU0 MDAwX2RldiwKPiBzZCk7Cj4gQEAgLTcxNyw4ICs3MTcsNiBAQCBzdGF0aWMgaW50IGU0MDAwX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJf Y3RybF9oYW5kbGVyX2ZyZWUoJmRldi0+aGRsKTsKPiDCoCNlbmRpZgo+IMKgwqDCoMKgwqDCoMKg wqBrZnJlZShkZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGU0MDAwX2lkX3RhYmxlW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jCj4gYi9kcml2ZXJz L21lZGlhL3R1bmVycy9mYzI1ODAuYwo+IGluZGV4IDFiNTk2MWJkZjJkNS4uZjMwOTMyZTFhMGYz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdHVuZXJzL2ZjMjU4MC5jCj4gKysrIGIvZHJp dmVycy9tZWRpYS90dW5lcnMvZmMyNTgwLmMKPiBAQCAtNTg4LDcgKzU4OCw3IEBAIHN0YXRpYyBp bnQgZmMyNTgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZjMjU4MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZmMyNTgwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg ZmMyNTgwX2RldiAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAt NTk4LDcgKzU5OCw2IEBAIHN0YXRpYyBpbnQgZmMyNTgwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmRl di0+aGRsKTsKPiDCoCNlbmRpZgo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgZmMyNTgwX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvdHVuZXJzL204OHJzNjAwMHQuYwo+IGIvZHJpdmVycy9tZWRpYS90dW5lcnMvbTg4cnM2 MDAwdC5jCj4gaW5kZXggODY0N2M1MGI2NmU1Li5lMzJlM2U5ZGFhMTUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS90dW5lcnMvbTg4cnM2MDAwdC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS90 dW5lcnMvbTg4cnM2MDAwdC5jCj4gQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdGF0aWMgaW50IG04OHJz NjAwMHRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbTg4cnM2MDAwdF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbTg4cnM2MDAwdF9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG04OHJzNjAwMHRfZGV2ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUgPSBkZXYtPmNmZy5mZTsKPiBA QCAtNzA3LDggKzcwNyw2IEBAIHN0YXRpYyBpbnQgbTg4cnM2MDAwdF9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtZW1zZXQoJmZlLT5vcHMudHVu ZXJfb3BzLCAwLCBzaXplb2Yoc3RydWN0IGR2Yl90dW5lcl9vcHMpKTsKPiDCoMKgwqDCoMKgwqDC oMKgZmUtPnR1bmVyX3ByaXYgPSBOVUxMOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG04OHJzNjAwMHRfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS90dW5lcnMvbXQyMDYwLmMKPiBiL2RyaXZlcnMvbWVkaWEvdHVuZXJzL210 MjA2MC5jCj4gaW5kZXggMjA0ZTYxODZiZjcxLi4zMjJjODA2MjI4YTUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZWRpYS90dW5lcnMvbXQyMDYwLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3R1bmVy cy9tdDIwNjAuYwo+IEBAIC01MDksMTEgKzUwOSw5IEBAIHN0YXRpYyBpbnQgbXQyMDYwX3Byb2Jl KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG10MjA2MF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbXQyMDYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfZGJnKCZjbGllbnQtPmRldiwg IlxuIik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbXQyMDYwX2lkX3RhYmxlW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdHVuZXJzL214bDMwMXJmLmMKPiBiL2RyaXZlcnMvbWVk aWEvdHVuZXJzL214bDMwMXJmLmMKPiBpbmRleCBjNjI4NDM1YTFiMDYuLjY0MjIwNTYxODVhOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVycy9teGwzMDFyZi5jCj4gKysrIGIvZHJp dmVycy9tZWRpYS90dW5lcnMvbXhsMzAxcmYuYwo+IEBAIC0zMDcsMTQgKzMwNywxMyBAQCBzdGF0 aWMgaW50IG14bDMwMXJmX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBteGwzMDFyZl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbXhsMzAxcmZf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBteGwzMDFyZl9zdGF0ZSAqc3RhdGU7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgc3Rh dGUgPSBjZmdfdG9fc3RhdGUoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwo+IMKgwqDCoMKg wqDCoMKgwqBzdGF0ZS0+Y2ZnLmZlLT50dW5lcl9wcml2ID0gTlVMTDsKPiDCoMKgwqDCoMKgwqDC oMKga2ZyZWUoc3RhdGUpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90dW5lcnMvcW0xZDFiMDAwNC5jCj4gYi9k cml2ZXJzL21lZGlhL3R1bmVycy9xbTFkMWIwMDA0LmMKPiBpbmRleCAwMDhhZDg3MGMwMGYuLjlj YmEwODkzMjA3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVycy9xbTFkMWIwMDA0 LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3R1bmVycy9xbTFkMWIwMDA0LmMKPiBAQCAtMjMyLDE0 ICsyMzIsMTMgQEAgcW0xZDFiMDAwNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+ IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHFtMWQxYjAwMDRfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHFtMWQxYjAwMDRfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkdmJf ZnJvbnRlbmQgKmZlOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGZlID0gaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGZlLT50dW5lcl9wcml2KTsKPiDC oMKgwqDCoMKgwqDCoMKgZmUtPnR1bmVyX3ByaXYgPSBOVUxMOwo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90dW5l cnMvcW0xZDFjMDA0Mi5jCj4gYi9kcml2ZXJzL21lZGlhL3R1bmVycy9xbTFkMWMwMDQyLmMKPiBp bmRleCA1M2FhMjU1OGY3MWUuLjJkNjBiZjUwMWZiNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21l ZGlhL3R1bmVycy9xbTFkMWMwMDQyLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3R1bmVycy9xbTFk MWMwMDQyLmMKPiBAQCAtNDI0LDE0ICs0MjQsMTMgQEAgc3RhdGljIGludCBxbTFkMWMwMDQyX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBxbTFkMWMwMDQyX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBxbTFkMWMwMDQyX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcW0xZDFj MDA0Ml9zdGF0ZSAqc3RhdGU7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgc3RhdGUgPSBjZmdfdG9f c3RhdGUoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdGF0 ZS0+Y2ZnLmZlLT50dW5lcl9wcml2ID0gTlVMTDsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoc3Rh dGUpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS90dW5lcnMvc2kyMTU3LmMKPiBiL2RyaXZlcnMvbWVkaWEvdHVu ZXJzL3NpMjE1Ny5jCj4gaW5kZXggMGRlNTg3YjQxMmQ0Li40NzZiMzJjMDRjMjAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9tZWRpYS90dW5lcnMvc2kyMTU3LmMKPiArKysgYi9kcml2ZXJzL21lZGlh L3R1bmVycy9zaTIxNTcuYwo+IEBAIC05NTEsNyArOTUxLDcgQEAgc3RhdGljIGludCBzaTIxNTdf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc2kyMTU3X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzaTIxNTdfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzaTIxNTdfZGV2 ICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGR2Yl9mcm9udGVuZCAqZmUgPSBkZXYtPmZlOwo+IEBAIC05NjksOCArOTY5LDYgQEAgc3Rh dGljIGludCBzaTIxNTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgbWVtc2V0KCZmZS0+b3BzLnR1bmVyX29wcywgMCwgc2l6ZW9mKHN0cnVjdCBk dmJfdHVuZXJfb3BzKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGZlLT50dW5lcl9wcml2ID0gTlVMTDsK PiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdHVuZXJz L3RkYTE4MjEyLmMKPiBiL2RyaXZlcnMvbWVkaWEvdHVuZXJzL3RkYTE4MjEyLmMKPiBpbmRleCBi ZjQ4ZjFjZDgzZDIuLmViOTc3MTFjOWM2OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1 bmVycy90ZGExODIxMi5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhMTgyMTIuYwo+ IEBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIGludCB0ZGExODIxMl9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB0ZGExODIxMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgdGRhMTgyMTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0ZGExODIxMl9kZXYgKmRldiA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHZiX2Zy b250ZW5kICpmZSA9IGRldi0+Y2ZnLmZlOwo+IEBAIC0yNTIsOCArMjUyLDYgQEAgc3RhdGljIGlu dCB0ZGExODIxMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqBtZW1zZXQoJmZlLT5vcHMudHVuZXJfb3BzLCAwLCBzaXplb2Yoc3RydWN0IGR2Yl90 dW5lcl9vcHMpKTsKPiDCoMKgwqDCoMKgwqDCoMKgZmUtPnR1bmVyX3ByaXYgPSBOVUxMOwo+IMKg wqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRkYTE4MjEy X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdHVuZXJzL3RkYTE4MjUwLmMK PiBiL2RyaXZlcnMvbWVkaWEvdHVuZXJzL3RkYTE4MjUwLmMKPiBpbmRleCA4YTU3ODFiOTY2ZWUu LmU0MDRhNWFmYWQ0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVycy90ZGExODI1 MC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhMTgyNTAuYwo+IEBAIC04NTYsNyAr ODU2LDcgQEAgc3RhdGljIGludCB0ZGExODI1MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCB0ZGExODI1MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgdGRhMTgyNTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0ZGExODI1MF9kZXYgKmRldiA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSA9 IGRldi0+ZmU7Cj4gQEAgLTg2Niw4ICs4NjYsNiBAQCBzdGF0aWMgaW50IHRkYTE4MjUwX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG1lbXNldCgm ZmUtPm9wcy50dW5lcl9vcHMsIDAsIHNpemVvZihzdHJ1Y3QgZHZiX3R1bmVyX29wcykpOwo+IMKg wqDCoMKgwqDCoMKgwqBmZS0+dHVuZXJfcHJpdiA9IE5VTEw7Cj4gwqDCoMKgwqDCoMKgwqDCoGtm cmVlKGRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGRhMTgyNTBfaWRfdGFibGVbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90dW5lcnMvdHVhOTAwMS5jCj4gYi9kcml2ZXJz L21lZGlhL3R1bmVycy90dWE5MDAxLmMKPiBpbmRleCBhZjdkNWVhMWY3N2UuLmQxNDFkMDAwYjgx OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVycy90dWE5MDAxLmMKPiArKysgYi9k cml2ZXJzL21lZGlhL3R1bmVycy90dWE5MDAxLmMKPiBAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRp YyBpbnQgdHVhOTAwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0dWE5MDAxX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0dWE5MDAxX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgdHVhOTAwMV9kZXYgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSA9IGRldi0+ZmU7Cj4gQEAgLTI0 Myw3ICsyNDMsNiBAQCBzdGF0aWMgaW50IHR1YTkwMDFfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZXZfZXJyKCZjbGllbnQtPmRldiwgIlR1bmVyIGRpc2FibGUgZmFpbGVkCj4gKCVwZSlc biIsIEVSUl9QVFIocmV0KSk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKg a2ZyZWUoZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHR1YTkwMDFfaWRfdGFibGVbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvZ283MDA3L3MyMjUwLWJvYXJkLmMKPiBiL2Ry aXZlcnMvbWVkaWEvdXNiL2dvNzAwNy9zMjI1MC1ib2FyZC5jCj4gaW5kZXggMWZhNmYxMGVlMTU3 Li4yZjQ1MTg4YmY5ZDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvZ283MDA3L3My MjUwLWJvYXJkLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3VzYi9nbzcwMDcvczIyNTAtYm9hcmQu Ywo+IEBAIC02MDEsNyArNjAxLDcgQEAgc3RhdGljIGludCBzMjI1MF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgczIyNTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIHMyMjUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgczIyNTAgKnN0YXRlID0gdG9fc3RhdGUoaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCkpOwo+IMKgCj4gQEAgLTYwOSw3ICs2MDksNiBAQCBzdGF0aWMg aW50IHMyMjUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KCZzdGF0ZS0+c2QpOwo+IMKgwqDC oMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZzdGF0ZS0+aGRsKTsKPiDCoMKgwqDC oMKgwqDCoMKga2ZyZWUoc3RhdGUpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgczIyNTBfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdHVuZXItY29yZS5jCj4gYi9k cml2ZXJzL21lZGlhL3Y0bDItY29yZS90dW5lci1jb3JlLmMKPiBpbmRleCAyZDQ3YzEwZGUwNjIu LjMzMTYyZGMxZGFmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS90dW5l ci1jb3JlLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS90dW5lci1jb3JlLmMKPiBA QCAtNzc5LDcgKzc3OSw3IEBAIHN0YXRpYyBpbnQgdHVuZXJfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwKPiDCoCAqIEBjbGllbnQ6wqDCoMKgwqBpMmNfY2xpZW50IGRlc2NyaXB0b3IK PiDCoCAqLwo+IMKgCj4gLXN0YXRpYyBpbnQgdHVuZXJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHR1bmVyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHVuZXIgKnQgPSB0b190dW5l cihpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KSk7Cj4gwqAKPiBAQCAtNzg5LDcgKzc4OSw2IEBA IHN0YXRpYyBpbnQgdHVuZXJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBsaXN0X2RlbCgmdC0+bGlzdCk7Cj4gwqDCoMKgwqDCoMKgwqDC oGtmcmVlKHQpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC84OHBtODAwLmMgYi9kcml2ZXJzL21mZC84OHBtODAw LmMKPiBpbmRleCBlYWY5ODQ1NjMzYjQuLmEzMGU0N2I3NDMyNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL21mZC84OHBtODAwLmMKPiArKysgYi9kcml2ZXJzL21mZC84OHBtODAwLmMKPiBAQCAtNTgz LDcgKzU4Myw3IEBAIHN0YXRpYyBpbnQgcG04MDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IHBtODAwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBwbTgwMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHBtODB4X2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IEBAIC01OTIsOCArNTkyLDYgQEAgc3RhdGljIGludCBwbTgwMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBtODAw X3BhZ2VzX2V4aXQoY2hpcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtODB4X2RlaW5pdCgpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBp MmNfZHJpdmVyIHBtODAwX2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvODhw bTgwNS5jIGIvZHJpdmVycy9tZmQvODhwbTgwNS5jCj4gaW5kZXggYWRhNmM1MTMzMDJiLi4xMGQz NjM3ODQwYzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvODhwbTgwNS5jCj4gKysrIGIvZHJp dmVycy9tZmQvODhwbTgwNS5jCj4gQEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0aWMgaW50IHBtODA1 X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBwbTgwNV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcG04MDVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwbTgweF9jaGlwICpj aGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMjQ3LDggKzI0Nyw2 IEBAIHN0YXRpYyBpbnQgcG04MDVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgZGV2aWNlX2lycV9leGl0XzgwNShjaGlwKTsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBwbTgweF9kZWluaXQoKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwbTgwNV9kcml2ZXIgPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkLzg4cG04NjB4LWNvcmUuYyBiL2RyaXZlcnMvbWZk Lzg4cG04NjB4LQo+IGNvcmUuYwo+IGluZGV4IGIxZTgyOWVhOTA5Yi4uNWRjODZkZDY2MjAyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkLzg4cG04NjB4LWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMv bWZkLzg4cG04NjB4LWNvcmUuYwo+IEBAIC0xMjAxLDcgKzEyMDEsNyBAQCBzdGF0aWMgaW50IHBt ODYweF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcG04NjB4X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBwbTg2MHhfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwbTg2MHhf Y2hpcCAqY2hpcCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTEyMTAs NyArMTIxMCw2IEBAIHN0YXRpYyBpbnQgcG04NjB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdtYXBfZXhpdChj aGlwLT5yZWdtYXBfY29tcGFuaW9uKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGkyY191bnJlZ2lzdGVyX2RldmljZShjaGlwLT5jb21wYW5pb24pOwo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05G SUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvYWNlci1lYy1hNTAwLmMgYi9k cml2ZXJzL21mZC9hY2VyLWVjLWE1MDAuYwo+IGluZGV4IDgwYzJmZGQxNGZjNC4uN2ZkOGI5OTg4 MDc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL2FjZXItZWMtYTUwMC5jCj4gKysrIGIvZHJp dmVycy9tZmQvYWNlci1lYy1hNTAwLmMKPiBAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBpbnQg YTUwMF9lY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYTUwMF9lY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYTUwMF9lY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKG9mX2Rl dmljZV9pc19zeXN0ZW1fcG93ZXJfY29udHJvbGxlcihjbGllbnQtCj4gPmRldi5vZl9ub2RlKSkg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHBtX3Bvd2VyX29mZiA9PSBh NTAwX2VjX3Bvd2Vyb2ZmKQo+IEBAIC0xNzcsOCArMTc3LDYgQEAgc3RhdGljIGludCBhNTAwX2Vj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHVucmVnaXN0ZXJfcmVzdGFydF9oYW5kbGVyKCZhNTAwX2VjX3Jl c3RhcnRfaGFuZGxlcik7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IGE1MDBfZWNfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvYXJpem9uYS1p MmMuYyBiL2RyaXZlcnMvbWZkL2FyaXpvbmEtaTJjLmMKPiBpbmRleCA2ZDgzZTZiOWE2OTIuLmJm YzdjZjU2ZmYyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9hcml6b25hLWkyYy5jCj4gKysr IGIvZHJpdmVycy9tZmQvYXJpem9uYS1pMmMuYwo+IEBAIC04NCwxMyArODQsMTEgQEAgc3RhdGlj IGludCBhcml6b25hX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiBhcml6b25hX2Rldl9pbml0KGFyaXpvbmEpOwo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgYXJpem9uYV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4g K3N0YXRpYyB2b2lkIGFyaXpvbmFfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYXJpem9uYSAqYXJpem9uYSA9IGRldl9nZXRf ZHJ2ZGF0YSgmaTJjLT5kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGFyaXpvbmFfZGV2X2V4 aXQoYXJpem9uYSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgYXJpem9uYV9pMmNfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvYXhwMjB4LWkyYy5jIGIvZHJpdmVycy9tZmQvYXhw MjB4LWkyYy5jCj4gaW5kZXggMDBhYjQ4MDE4ZDhkLi44ZmQ2NzI3ZGMzMGEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZmQvYXhwMjB4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvYXhwMjB4LWky Yy5jCj4gQEAgLTUwLDEzICs1MCwxMSBAQCBzdGF0aWMgaW50IGF4cDIweF9pMmNfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gYXhwMjB4X2Rl dmljZV9wcm9iZShheHAyMHgpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYXhwMjB4X2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgYXhwMjB4X2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGF4cDIweF9kZXYgKmF4cDIweCA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGF4cDIweF9kZXZpY2VfcmVtb3ZlKGF4cDIweCk7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX09GCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2RhOTAzeC5jIGIvZHJpdmVycy9tZmQvZGE5MDN4LmMKPiBp bmRleCBhODE4ZmJiNTU5ODguLjNmOGY2YWQzYTk4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21m ZC9kYTkwM3guYwo+ICsrKyBiL2RyaXZlcnMvbWZkL2RhOTAzeC5jCj4gQEAgLTUzMiwxMiArNTMy LDExIEBAIHN0YXRpYyBpbnQgZGE5MDN4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRhOTAzeF9hZGRfc3ViZGV2cyhjaGlwLCBwZGF0 YSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkYTkwM3hfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGRhOTAzeF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRhOTAzeF9jaGlwICpj aGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg ZGE5MDN4X3JlbW92ZV9zdWJkZXZzKGNoaXApOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZGE5MDN4X2RyaXZlciA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvZGE5MDUyLWkyYy5jIGIvZHJpdmVycy9tZmQvZGE5 MDUyLWkyYy5jCj4gaW5kZXggOGRlOTNkYjM1ZjNhLi41YTc0Njk2Yzg3MDQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZmQvZGE5MDUyLWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvZGE5MDUyLWky Yy5jCj4gQEAgLTE2OCwxMiArMTY4LDExIEBAIHN0YXRpYyBpbnQgZGE5MDUyX2kyY19wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBkYTkw NTJfZGV2aWNlX2luaXQoZGE5MDUyLCBpZC0+ZHJpdmVyX2RhdGEpOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgZGE5MDUyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgZGE5MDUyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRhOTA1MiAqZGE5MDUyID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZGE5MDUyX2RldmljZV9l eGl0KGRhOTA1Mik7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkYTkwNTJfaTJjX2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZmQvZGE5MDU1LWkyYy5jIGIvZHJpdmVycy9tZmQvZGE5MDU1LWkyYy5jCj4g aW5kZXggYmM2MDQzM2I2OGRiLi4yNzZjN2QxYzUwOWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t ZmQvZGE5MDU1LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvZGE5MDU1LWkyYy5jCj4gQEAgLTQx LDEzICs0MSwxMSBAQCBzdGF0aWMgaW50IGRhOTA1NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGE5MDU1X2RldmljZV9pbml0KGRh OTA1NSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkYTkwNTVfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBkYTkwNTVfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZGE5MDU1ICpk YTkwNTUgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBk YTkwNTVfZGV2aWNlX2V4aXQoZGE5MDU1KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2RhOTA2Mi1jb3Jl LmMgYi9kcml2ZXJzL21mZC9kYTkwNjItY29yZS5jCj4gaW5kZXggMjc3NGIyY2JhZWE2Li4wYTgw ZDgyYzY4NTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvZGE5MDYyLWNvcmUuYwo+ICsrKyBi L2RyaXZlcnMvbWZkL2RhOTA2Mi1jb3JlLmMKPiBAQCAtNzIzLDE0ICs3MjMsMTIgQEAgc3RhdGlj IGludCBkYTkwNjJfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGRhOTA2Ml9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIGRhOTA2Ml9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkYTkwNjIgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqBtZmRfcmVtb3ZlX2RldmljZXMoY2hpcC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDC oMKgcmVnbWFwX2RlbF9pcnFfY2hpcChpMmMtPmlycSwgY2hpcC0+cmVnbWFwX2lycSk7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgZGE5MDYyX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21mZC9kYTkxNTAtY29yZS5jIGIvZHJpdmVycy9tZmQvZGE5MTUwLWNvcmUuYwo+IGluZGV4 IDU4MDA5YzhjYjg3MC4uNmFlNTZlNDZkMjRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL2Rh OTE1MC1jb3JlLmMKPiArKysgYi9kcml2ZXJzL21mZC9kYTkxNTAtY29yZS5jCj4gQEAgLTQ3MSwx NSArNDcxLDEzIEBAIHN0YXRpYyBpbnQgZGE5MTUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGRhOTE1MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgZGE5MTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZGE5MTUwICpkYTkxNTAgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWdtYXBfZGVsX2lycV9jaGlwKGRhOTE1 MC0+aXJxLCBkYTkxNTAtPnJlZ21hcF9pcnFfZGF0YSk7Cj4gwqDCoMKgwqDCoMKgwqDCoG1mZF9y ZW1vdmVfZGV2aWNlcyhkYTkxNTAtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGkyY191bnJlZ2lz dGVyX2RldmljZShkYTkxNTAtPmNvcmVfcWlmKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGRhOTE1MF9zaHV0ZG93bihzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9kbTM1NWV2bV9tc3Au YyBiL2RyaXZlcnMvbWZkL2RtMzU1ZXZtX21zcC5jCj4gaW5kZXggNTRmYjZjYmQyYWEwLi43NTlj NTk2OTA2ODAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvZG0zNTVldm1fbXNwLmMKPiArKysg Yi9kcml2ZXJzL21mZC9kbTM1NWV2bV9tc3AuYwo+IEBAIC0zNzUsMTEgKzM3NSwxMCBAQCBzdGF0 aWMgdm9pZCBkbTM1NWV2bV9wb3dlcl9vZmYodm9pZCkKPiDCoMKgwqDCoMKgwqDCoMKgZG0zNTVl dm1fY29tbWFuZChNU1BfQ09NTUFORF9QT1dFUk9GRik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBkbTM1NWV2bV9tc3BfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRp YyB2b2lkIGRtMzU1ZXZtX21zcF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcG93ZXJfb2ZmID0gTlVMTDsKPiDCoMKgwqDCoMKgwqDC oMKgbXNwNDMwID0gTlVMTDsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGludAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9lbmUta2IzOTMwLmMgYi9k cml2ZXJzL21mZC9lbmUta2IzOTMwLmMKPiBpbmRleCAxYjczMzE4ZDFmMWYuLjNlZmY5OGUyNmJl YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9lbmUta2IzOTMwLmMKPiArKysgYi9kcml2ZXJz L21mZC9lbmUta2IzOTMwLmMKPiBAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBpbnQga2IzOTMw X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBrYjM5MzBfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGtiMzkzMF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGtiMzkzMCAqZGRh dGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xODcsOCArMTg3LDYg QEAgc3RhdGljIGludCBrYjM5MzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVucmVnaXN0ZXJfcmVzdGFydF9oYW5k bGVyKCZrYjM5MzBfcmVzdGFydF9uYik7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKg wqDCoMKga2IzOTMwX3Bvd2VyX29mZiA9IE5VTEw7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrYjM5 MzBfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2dhdGV3b3Jrcy1nc2Mu YyBiL2RyaXZlcnMvbWZkL2dhdGV3b3Jrcy0KPiBnc2MuYwo+IGluZGV4IGQ4Nzg3Njc0N2I5MS4u OWQ3ZDg3MGM0NGE4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL2dhdGV3b3Jrcy1nc2MuYwo+ ICsrKyBiL2RyaXZlcnMvbWZkL2dhdGV3b3Jrcy1nc2MuYwo+IEBAIC0yNTUsMTEgKzI1NSw5IEBA IHN0YXRpYyBpbnQgZ3NjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZ3NjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBnc2NfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN5c2ZzX3JlbW92 ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJmF0dHJfZ3JvdXApOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGdz Y19kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2ludGVsX3NvY19wbWljX2Nv cmUuYwo+IGIvZHJpdmVycy9tZmQvaW50ZWxfc29jX3BtaWNfY29yZS5jCj4gaW5kZXggNWU4Yzk0 ZTAwOGVkLi5iODI0ZTE1ZjRkMjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvaW50ZWxfc29j X3BtaWNfY29yZS5jCj4gKysrIGIvZHJpdmVycy9tZmQvaW50ZWxfc29jX3BtaWNfY29yZS5jCj4g QEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIGludCBpbnRlbF9zb2NfcG1pY19pMmNfcHJvYmUoc3Ry dWN0Cj4gaTJjX2NsaWVudCAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgaW50ZWxfc29jX3BtaWNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9zb2NfcG1pY19pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRl bF9zb2NfcG1pYyAqcG1pYyA9IGRldl9nZXRfZHJ2ZGF0YSgmaTJjLT5kZXYpOwo+IMKgCj4gQEAg LTkxLDggKzkxLDYgQEAgc3RhdGljIGludCBpbnRlbF9zb2NfcG1pY19pMmNfcmVtb3ZlKHN0cnVj dAo+IGkyY19jbGllbnQgKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcHdtX3JlbW92ZV90YWJsZShj cmNfcHdtX2xvb2t1cCwgQVJSQVlfU0laRShjcmNfcHdtX2xvb2t1cCkpOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoG1mZF9yZW1vdmVfZGV2aWNlcygmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgaW50ZWxfc29jX3BtaWNf c2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZmQvaXFzNjJ4LmMgYi9kcml2ZXJzL21mZC9pcXM2MnguYwo+IGluZGV4IDU3NWFiNjdlMjQzZC4u MTg5NWZjZTI1YjA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL2lxczYyeC5jCj4gKysrIGIv ZHJpdmVycy9tZmQvaXFzNjJ4LmMKPiBAQCAtMTAwOCwxMyArMTAwOCwxMSBAQCBzdGF0aWMgaW50 IGlxczYyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBpcXM2MnhfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGlxczYyeF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGlx czYyeF9jb3JlICppcXM2MnggPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKg wqDCoMKgwqDCoMKgwqB3YWl0X2Zvcl9jb21wbGV0aW9uKCZpcXM2MngtPmZ3X2RvbmUpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21h eWJlX3VudXNlZCBpcXM2Mnhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWZkL2xtMzUzMy1jb3JlLmMgYi9kcml2ZXJzL21mZC9sbTM1MzMtY29yZS5j Cj4gaW5kZXggNTY5MDc2OGYzZTYzLi5iZTMyZmZjNWFmMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9tZmQvbG0zNTMzLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL2xtMzUzMy1jb3JlLmMKPiBA QCAtNjA3LDE1ICs2MDcsMTMgQEAgc3RhdGljIGludCBsbTM1MzNfaTJjX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGxtMzUzM19kZXZpY2Vf aW5pdChsbTM1MzMpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbG0zNTMzX2kyY19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgbG0zNTMzX2kyY19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxt MzUzMyAqbG0zNTMzID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgZGV2X2RiZygmaTJjLT5kZXYsICIlc1xuIiwgX19mdW5jX18pOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoGxtMzUzM19kZXZpY2VfZXhpdChsbTM1MzMpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNl X2lkIGxtMzUzM19pMmNfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2xwODc4 OC5jIGIvZHJpdmVycy9tZmQvbHA4Nzg4LmMKPiBpbmRleCBjMjIzZDJjNmEzNjMuLmU3YzYwMWJj YTllZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9scDg3ODguYwo+ICsrKyBiL2RyaXZlcnMv bWZkL2xwODc4OC5jCj4gQEAgLTE5OSwxMyArMTk5LDEyIEBAIHN0YXRpYyBpbnQgbHA4Nzg4X3By b2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbCwKPiBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAq aWQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEFSUkFZX1NJWkUobHA4Nzg4X2RldnMpLCBOVUxMLCAwLAo+IE5VTEwpOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgbHA4Nzg4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2wp Cj4gK3N0YXRpYyB2b2lkIGxwODc4OF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsKQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA4Nzg4ICpscCA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbWZkX3JlbW92ZV9kZXZpY2VzKGxwLT5kZXYp Owo+IMKgwqDCoMKgwqDCoMKgwqBscDg3ODhfaXJxX2V4aXQobHApOwo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2Vf aWQgbHA4Nzg4X2lkc1tdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9tYWRlcmEtaTJj LmMgYi9kcml2ZXJzL21mZC9tYWRlcmEtaTJjLmMKPiBpbmRleCA3ZGY1YjliYTU4NTUuLjkxNWQy Zjk1YmFkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9tYWRlcmEtaTJjLmMKPiArKysgYi9k cml2ZXJzL21mZC9tYWRlcmEtaTJjLmMKPiBAQCAtMTEyLDEzICsxMTIsMTEgQEAgc3RhdGljIGlu dCBtYWRlcmFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIG1hZGVyYV9kZXZfaW5pdChtYWRlcmEpOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgbWFkZXJhX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGlj IHZvaWQgbWFkZXJhX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IG1hZGVyYSAqbWFkZXJhID0gZGV2X2dldF9kcnZkYXRhKCZp MmMtPmRldik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbWFkZXJhX2Rldl9leGl0KG1hZGVyYSk7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWFkZXJhX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21mZC9tYXgxNDU3Ny5jIGIvZHJpdmVycy9tZmQvbWF4MTQ1NzcuYwo+IGluZGV4 IDZjNDg3ZmExNGU5Yy4uZDQ0YWQ2ZjMzNzQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL21h eDE0NTc3LmMKPiArKysgYi9kcml2ZXJzL21mZC9tYXgxNDU3Ny5jCj4gQEAgLTQ2Myw3ICs0NjMs NyBAQCBzdGF0aWMgaW50IG1heDE0NTc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpp MmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBtYXgxNDU3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2 b2lkIG1heDE0NTc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heDE0NTc3ICptYXgxNDU3NyA9IGkyY19nZXRfY2xpZW50 ZGF0YShpMmMpOwo+IMKgCj4gQEAgLTQ3MSw4ICs0NzEsNiBAQCBzdGF0aWMgaW50IG1heDE0NTc3 X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqBy ZWdtYXBfZGVsX2lycV9jaGlwKG1heDE0NTc3LT5pcnEsIG1heDE0NTc3LT5pcnFfZGF0YSk7Cj4g wqDCoMKgwqDCoMKgwqDCoGlmIChtYXgxNDU3Ny0+ZGV2X3R5cGUgPT0gTUFYSU1fREVWSUNFX1RZ UEVfTUFYNzc4MzYpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXg3NzgzNl9y ZW1vdmUobWF4MTQ1NzcpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1heDE0NTc3X2kyY19pZFtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9tYXg3NzY5My5jIGIvZHJpdmVycy9tZmQv bWF4Nzc2OTMuYwo+IGluZGV4IDRlNjI0NGUxNzU1OS4uNzA4OGNiNmY5MTc0IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvbWZkL21heDc3NjkzLmMKPiArKysgYi9kcml2ZXJzL21mZC9tYXg3NzY5My5j Cj4gQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgaW50IG1heDc3NjkzX2kyY19wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBtYXg3NzY5M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gK3N0YXRpYyB2b2lkIG1heDc3NjkzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heDc3NjkzX2RldiAqbWF4 Nzc2OTMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC0zMDcsOCArMzA3LDYg QEAgc3RhdGljIGludCBtYXg3NzY5M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmky YykKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UobWF4Nzc2OTMt PmkyY19tdWljKTsKPiDCoMKgwqDCoMKgwqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2aWNlKG1heDc3 NjkzLT5pMmNfaGFwdGljKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtYXg3NzY5M19pMmNfaWRb XSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWF4ODkwNy5jIGIvZHJpdmVycy9tZmQv bWF4ODkwNy5jCj4gaW5kZXggNDFmNTY2ZTZhMDk2Li5jMzQwMDgwOTcxY2UgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9tZmQvbWF4ODkwNy5jCj4gKysrIGIvZHJpdmVycy9tZmQvbWF4ODkwNy5jCj4g QEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgaW50IG1heDg5MDdfaTJjX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IG1heDg5MDdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJj KQo+ICtzdGF0aWMgdm9pZCBtYXg4OTA3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmky YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heDg5MDcgKm1heDg5MDcgPSBpMmNf Z2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC0yOTMsOCArMjkzLDYgQEAgc3RhdGljIGlu dCBtYXg4OTA3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKg wqDCoMKgwqByZWdtYXBfZGVsX2lycV9jaGlwKG1heDg5MDctPmkyY19nZW4tPmlycSwgbWF4ODkw Ny0KPiA+aXJxY19jaGcpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGkyY191bnJlZ2lzdGVyX2Rl dmljZShtYXg4OTA3LT5pMmNfcnRjKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfT0YKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQv bWF4ODkyNS1pMmMuYyBiL2RyaXZlcnMvbWZkL21heDg5MjUtaTJjLmMKPiBpbmRleCAxMTRlOTA1 YmVmMjUuLjA0MTAxZGE0MmJkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9tYXg4OTI1LWky Yy5jCj4gKysrIGIvZHJpdmVycy9tZmQvbWF4ODkyNS1pMmMuYwo+IEBAIC0xOTgsMTQgKzE5OCwx MyBAQCBzdGF0aWMgaW50IG1heDg5MjVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1h eDg5MjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1h eDg5MjVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBtYXg4OTI1X2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtYXg4OTI1X2RldmljZV9leGl0KGNoaXApOwo+ IMKgwqDCoMKgwqDCoMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoY2hpcC0+YWRjKTsKPiDCoMKg wqDCoMKgwqDCoMKgaTJjX3VucmVnaXN0ZXJfZGV2aWNlKGNoaXAtPnJ0Yyk7Cj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWMxM3h4eC1pMmMuYyBiL2RyaXZlcnMvbWZkL21jMTN4 eHgtaTJjLmMKPiBpbmRleCBmYjkzN2Y2NjI3N2UuLmViOTRmMzAwNGNmMyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL21mZC9tYzEzeHh4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvbWMxM3h4eC1p MmMuYwo+IEBAIC04NSwxMCArODUsOSBAQCBzdGF0aWMgaW50IG1jMTN4eHhfaTJjX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIG1jMTN4 eHhfY29tbW9uX2luaXQoJmNsaWVudC0+ZGV2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1j MTN4eHhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBtYzEzeHh4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgbWMxM3h4eF9jb21tb25fZXhpdCgmY2xpZW50LT5kZXYpOwo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2 ZXIgbWMxM3h4eF9pMmNfZHJpdmVyID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9tZW5l bGF1cy5jIGIvZHJpdmVycy9tZmQvbWVuZWxhdXMuYwo+IGluZGV4IDA3ZTBjYTJlNDY3Yy4uZWIw OGY2OTAwMWY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL21lbmVsYXVzLmMKPiArKysgYi9k cml2ZXJzL21mZC9tZW5lbGF1cy5jCj4gQEAgLTEyMjIsMTQgKzEyMjIsMTMgQEAgc3RhdGljIGlu dCBtZW5lbGF1c19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtZW5lbGF1c19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbWVuZWxhdXNfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBtZW5lbGF1c19jaGlwwqDCoMKgwqAqbWVuZWxhdXMgPQo+IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGNsaWVudC0+aXJxLCBt ZW5lbGF1cyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGZsdXNoX3dvcmsoJm1lbmVsYXVzLT53b3JrKTsK PiDCoMKgwqDCoMKgwqDCoMKgdGhlX21lbmVsYXVzID0gTlVMTDsKPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IG1lbmVsYXVzX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL250eGVjLmMgYi9k cml2ZXJzL21mZC9udHhlYy5jCj4gaW5kZXggYjcxMWU3M2VlZGNiLi5lMTZhN2E4MmE5MjkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvbnR4ZWMuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL250eGVj LmMKPiBAQCAtMjM5LDE1ICsyMzksMTMgQEAgc3RhdGljIGludCBudHhlY19wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXM7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBudHhlY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgbnR4ZWNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChjbGllbnQgPT0gcG93ZXJvZmZfcmVzdGFydF9j bGllbnQpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBvd2Vyb2ZmX3Jlc3Rh cnRfY2xpZW50ID0gTlVMTDsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBtX3Bv d2VyX29mZiA9IE5VTEw7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnJlZ2lz dGVyX3Jlc3RhcnRfaGFuZGxlcigmbnR4ZWNfcmVzdGFydF9oYW5kbGVyKTsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfbnR4ZWNfbWF0Y2hfdGFibGVbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvcGFsbWFzLmMgYi9kcml2ZXJzL21mZC9wYWxtYXMu Ywo+IGluZGV4IGY1YjNmYTk3M2IxMy4uOGI3NDI5YmQyZTNlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWZkL3BhbG1hcy5jCj4gKysrIGIvZHJpdmVycy9tZmQvcGFsbWFzLmMKPiBAQCAtNzAwLDcg KzcwMCw3IEBAIHN0YXRpYyBpbnQgcGFsbWFzX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICppMmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBwYWxtYXNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMg dm9pZCBwYWxtYXNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGFsbWFzICpwYWxtYXMgPSBpMmNfZ2V0X2NsaWVudGRhdGEo aTJjKTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGk7Cj4gQEAgLTcxNiw4ICs3MTYsNiBAQCBzdGF0 aWMgaW50IHBhbG1hc19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBtX3Bvd2VyX29mZiA9IE5VTEw7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYWxtYXNfZGV2ID0gTlVMTDsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHBhbG1hc19pMmNfaWRbXSA9IHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZmQvcGNmNTA2MzMtY29yZS5jIGIvZHJpdmVycy9tZmQvcGNmNTA2 MzMtCj4gY29yZS5jCj4gaW5kZXggZTljNTY1Y2YwZjU0Li40Y2NjMmMzZTc2ODEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9tZmQvcGNmNTA2MzMtY29yZS5jCj4gKysrIGIvZHJpdmVycy9tZmQvcGNm NTA2MzMtY29yZS5jCj4gQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgaW50IHBjZjUwNjMzX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHBjZjUwNjMzX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBwY2Y1MDYzM19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBjZjUwNjMz ICpwY2YgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50 IGk7Cj4gQEAgLTI4OSw4ICsyODksNiBAQCBzdGF0aWMgaW50IHBjZjUwNjMzX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0g MDsgaSA8IFBDRjUwNjMzX05VTV9SRUdVTEFUT1JTOyBpKyspCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihwY2YtPnJlZ3VsYXRvcl9w ZGV2W2ldKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBwY2Y1MDYzM19pZF90YWJsZVtdID0gewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9yZXR1LW1mZC5jIGIvZHJpdmVycy9tZmQvcmV0dS1t ZmQuYwo+IGluZGV4IGM3NDhmZDI5YTIyMC4uM2I1YWNmN2NhMzljIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvbWZkL3JldHUtbWZkLmMKPiArKysgYi9kcml2ZXJzL21mZC9yZXR1LW1mZC5jCj4gQEAg LTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgaW50IHJldHVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQg KmkyYywKPiBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcmV0dV9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgcmV0dV9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJldHVfZGV2ICpyZGV2ID0g aTJjX2dldF9jbGllbnRkYXRhKGkyYyk7Cj4gwqAKPiBAQCAtMjk3LDggKzI5Nyw2IEBAIHN0YXRp YyBpbnQgcmV0dV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgwqDCoMKgwqDCoMKgwqBtZmRfcmVtb3ZlX2RldmljZXMocmRldi0+ZGV2KTsKPiDC oMKgwqDCoMKgwqDCoMKgcmVnbWFwX2RlbF9pcnFfY2hpcChpMmMtPmlycSwgcmRldi0+aXJxX2Rh dGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHJldHVfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZmQvcms4MDguYyBiL2RyaXZlcnMvbWZkL3JrODA4LmMKPiBpbmRleCA0MTQyYjYz OGU1ZmEuLmQ1ZDY0MWVmYTA3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9yazgwOC5jCj4g KysrIGIvZHJpdmVycy9tZmQvcms4MDguYwo+IEBAIC03NzgsNyArNzc4LDcgQEAgc3RhdGljIGlu dCByazgwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcms4MDhfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHJrODA4X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgcms4MDgg KnJrODA4ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNzkyLDggKzc5 Miw2IEBAIHN0YXRpYyBpbnQgcms4MDhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBtX3Bvd2VyX29mZiA9IE5VTEw7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdW5yZWdpc3Rlcl9yZXN0YXJ0X2hhbmRsZXIoJnJrODA4 X3Jlc3RhcnRfaGFuZGxlcik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHJrOHh4X3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9ybjV0NjE4LmMgYi9kcml2ZXJz L21mZC9ybjV0NjE4LmMKPiBpbmRleCAzODRhY2I0NTk0MjcuLmViODAwNWI0ZTU4ZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL21mZC9ybjV0NjE4LmMKPiArKysgYi9kcml2ZXJzL21mZC9ybjV0NjE4 LmMKPiBAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBpbnQgcm41dDYxOF9pMmNfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcm41dDYxOF9p cnFfaW5pdChwcml2KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHJuNXQ2MThfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBybjV0NjE4X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGky YyA9PSBybjV0NjE4X3BtX3Bvd2VyX29mZikgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcm41dDYxOF9wbV9wb3dlcl9vZmYgPSBOVUxMOwo+IEBAIC0yNDksOCArMjQ5LDYgQEAg c3RhdGljIGludCBybjV0NjE4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+ IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdW5yZWdpc3Rlcl9yZXN0 YXJ0X2hhbmRsZXIoJnJuNXQ2MThfcmVzdGFydF9oYW5kbGVyKTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcm41 dDYxOF9pMmNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWZkL3JzbXVfaTJjLmMgYi9kcml2ZXJzL21mZC9yc211X2kyYy5jCj4gaW5kZXggZGMwMDFj OTc5MWMxLi5mNzE2YWI4MDM5YTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvcnNtdV9pMmMu Ywo+ICsrKyBiL2RyaXZlcnMvbWZkL3JzbXVfaTJjLmMKPiBAQCAtMTQ2LDEzICsxNDYsMTEgQEAg c3RhdGljIGludCByc211X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiByc211X2NvcmVfaW5pdChyc211KTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IHJzbXVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ ICtzdGF0aWMgdm9pZCByc211X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJzbXVfZGRhdGEgKnJzbXUgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByc211X2NvcmVfZXhp dChyc211KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCByc211X2kyY19pZFtdID0gewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21mZC9ydDQ4MzEuYyBiL2RyaXZlcnMvbWZkL3J0NDgzMS5jCj4gaW5k ZXggZmIzYmQ3ODhhM2ViLi5jNmQzNGRjMmI1MjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQv cnQ0ODMxLmMKPiArKysgYi9kcml2ZXJzL21mZC9ydDQ4MzEuYwo+IEBAIC04Nyw3ICs4Nyw3IEBA IHN0YXRpYyBpbnQgcnQ0ODMxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBUlJBWV9TSVpFKHJ0NDgzMV9zdWJkZXZzKSwgTlVMTCwKPiAwLCBOVUxMKTsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHJ0NDgzMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgcnQ0ODMxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBk ZXZfZ2V0X3JlZ21hcCgmY2xpZW50LT5kZXYsIE5VTEwpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQg cmV0Owo+IEBAIC05Niw4ICs5Niw2IEBAIHN0YXRpYyBpbnQgcnQ0ODMxX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXQgPSByZWdtYXBfdXBkYXRl X2JpdHMocmVnbWFwLCBSVDQ4MzFfUkVHX0VOQUJMRSwKPiBSVDQ4MzFfUkVTRVRfTUFTSywgUlQ0 ODMxX1JFU0VUX01BU0spOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X3dhcm4oJmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIGRp c2FibGUgb3V0cHV0cwo+ICglcGUpXG4iLCBFUlJfUFRSKHJldCkpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgX19tYXliZV91bnVzZWQgcnQ0ODMxX29mX21hdGNoW10gPQo+IHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZmQvc2k0NzZ4LWkyYy5jIGIvZHJpdmVycy9tZmQvc2k0NzZ4LWkyYy5jCj4g aW5kZXggYTI2MzVjMmQ5ZDFhLi44MTY2OTQ5YjcyNWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t ZmQvc2k0NzZ4LWkyYy5jCj4gKysrIGIvZHJpdmVycy9tZmQvc2k0NzZ4LWkyYy5jCj4gQEAgLTgz NSw3ICs4MzUsNyBAQCBzdGF0aWMgaW50IHNpNDc2eF9jb3JlX3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJ2YWw7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBzaTQ3NnhfY29yZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgc2k0NzZ4X2NvcmVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzaTQ3NnhfY29yZSAqY29yZSA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTg1MSw4ICs4NTEsNiBAQCBz dGF0aWMgaW50IHNpNDc2eF9jb3JlX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGdwaW9faXNfdmFsaWQoY29yZS0+Z3Bpb19yZXNl dCkpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBncGlvX2ZyZWUoY29yZS0+Z3Bp b19yZXNldCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvc3RtZnguYyBiL2RyaXZlcnMvbWZkL3N0bWZ4LmMK PiBpbmRleCAxMjJmOTYwOTQ0MTAuLjVkZDdkOTY4ODQ1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21mZC9zdG1meC5jCj4gKysrIGIvZHJpdmVycy9tZmQvc3RtZnguYwo+IEBAIC00NjcsMTMgKzQ2 NywxMSBAQCBzdGF0aWMgaW50IHN0bWZ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHN0bWZ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBz dG1meF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RtZnhfaXJxX2V4aXQoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBzdG1m eF9jaGlwX2V4aXQoY2xpZW50KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZmQvc3RtcGUtaTJjLmMgYi9kcml2ZXJzL21mZC9zdG1wZS1pMmMuYwo+IGluZGV4IGQzZWVkZjNk NjA3ZS4uNGQ1NTQ5NGE5N2M0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL3N0bXBlLWkyYy5j Cj4gKysrIGIvZHJpdmVycy9tZmQvc3RtcGUtaTJjLmMKPiBAQCAtOTEsMTMgKzkxLDExIEBAIHN0 bXBlX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCBjb25zdAo+IHN0cnVjdCBpMmNf ZGV2aWNlX2lkICppZCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHN0bXBlX3Byb2JlKCZpMmNf Y2ksIHBhcnRudW0pOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc3RtcGVfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBzdG1wZV9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdG1w ZSAqc3RtcGUgPSBkZXZfZ2V0X2RydmRhdGEoJmkyYy0+ZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBzdG1wZV9yZW1vdmUoc3RtcGUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0bXBlX2ky Y19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC90YzM1ODl4LmMgYi9kcml2ZXJz L21mZC90YzM1ODl4LmMKPiBpbmRleCAxMzU4M2NkYjkzYjYuLmQ1ZDBlYzExN2FjYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL21mZC90YzM1ODl4LmMKPiArKysgYi9kcml2ZXJzL21mZC90YzM1ODl4 LmMKPiBAQCAtNDI5LDEzICs0MjksMTEgQEAgc3RhdGljIGludCB0YzM1ODl4X3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB0YzM1ODl4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCB0YzM1ODl4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdGMzNTg5eCAqdGMzNTg5eCA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1mZF9yZW1vdmVf ZGV2aWNlcyh0YzM1ODl4LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21mZC90cHM2MTA1eC5jIGIvZHJpdmVycy9tZmQvdHBzNjEwNXguYwo+IGluZGV4IGM5MDYzMjRk MjkzZS4uYjM2MDU2OGVhNjc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL3RwczYxMDV4LmMK PiArKysgYi9kcml2ZXJzL21mZC90cHM2MTA1eC5jCj4gQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0 aWMgaW50IHRwczYxMDV4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRwczYxMDV4 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0cHM2MTA1 eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHRwczYxMDV4ICp0cHM2MTA1eCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgCj4gQEAgLTE4OSw4ICsxODksNiBAQCBzdGF0aWMgaW50IHRwczYxMDV4X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF91cGRh dGVfYml0cyh0cHM2MTA1eC0+cmVnbWFwLCBUUFM2MTA1WF9SRUdfMCwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFRQUzYxMDVYX1JFRzBfTU9ERV9NQVNLLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgVFBTNjEwNVhfTU9ERV9TSFVURE9XTiA8PCBUUFM2MTA1WF9S RUcwX01PREVfU0hJRlQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRwczYxMDV4X2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3RwczY1MDEwLmMgYi9kcml2ZXJzL21mZC90cHM2 NTAxMC5jCj4gaW5kZXggN2U3ZGJlZTU4Y2E5Li5jMmFmYTJlNjlmNDIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZmQvdHBzNjUwMTAuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL3RwczY1MDEwLmMKPiBA QCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBpbnQgdHBzNjUwMTBfZ3Bpb19nZXQoc3RydWN0IGdw aW9fY2hpcAo+ICpjaGlwLCB1bnNpZ25lZCBvZmZzZXQpCj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3Qg dHBzNjUwMTAgKnRoZV90cHM7Cj4gwqAKPiAtc3RhdGljIGludCB0cHM2NTAxMF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHBzNjUwMTBfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0 cHM2NTAxMMKgwqDCoMKgwqDCoMKgwqDCoCp0cHMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50 KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRwczY1MDEwX2JvYXJkwqDCoMKgKmJvYXJkID0g ZGV2X2dldF9wbGF0ZGF0YSgmY2xpZW50LQo+ID5kZXYpOwo+IEBAIC01MTcsNyArNTE3LDYgQEAg c3RhdGljIGludCB0cHM2NTAxMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnRwcy0+d29yayk7Cj4g wqDCoMKgwqDCoMKgwqDCoGRlYnVnZnNfcmVtb3ZlKHRwcy0+ZmlsZSk7Cj4gwqDCoMKgwqDCoMKg wqDCoHRoZV90cHMgPSBOVUxMOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgaW50IHRwczY1MDEwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3RwczY1MDg2LmMgYi9kcml2ZXJzL21mZC90cHM2 NTA4Ni5jCj4gaW5kZXggM2JkNTcyODg0NGEwLi5lYjVhZmJlYjBlOTEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZmQvdHBzNjUwODYuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL3RwczY1MDg2LmMKPiBA QCAtMTE5LDE0ICsxMTksMTIgQEAgc3RhdGljIGludCB0cHM2NTA4Nl9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB0cHM2NTA4Nl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIHZvaWQgdHBzNjUwODZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0cHM2NTA4NiAqdHBzID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHRwcy0+aXJx ID4gMCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ21hcF9kZWxfaXJxX2No aXAodHBzLT5pcnEsIHRwcy0+aXJxX2RhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRwczY1 MDg2X2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3RwczY1MjE3LmMg Yi9kcml2ZXJzL21mZC90cHM2NTIxNy5jCj4gaW5kZXggODAyN2IwYTllMTRmLi5hNzIwMGRkZDg1 ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvdHBzNjUyMTcuYwo+ICsrKyBiL2RyaXZlcnMv bWZkL3RwczY1MjE3LmMKPiBAQCAtMzgyLDcgKzM4Miw3IEBAIHN0YXRpYyBpbnQgdHBzNjUyMTdf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRwczY1MjE3X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0cHM2NTIxN19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRwczY1MjE3 ICp0cHMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgdW5z aWduZWQgaW50IHZpcnE7Cj4gQEAgLTM5Niw4ICszOTYsNiBAQCBzdGF0aWMgaW50IHRwczY1MjE3 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgaXJxX2RvbWFpbl9yZW1vdmUodHBzLT5pcnFfZG9tYWluKTsKPiDCoMKgwqDCoMKgwqDCoMKg dHBzLT5pcnFfZG9tYWluID0gTlVMTDsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0cHM2NTIxN19p ZF90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC90cHM2NTg2eC5jIGIvZHJp dmVycy9tZmQvdHBzNjU4NnguYwo+IGluZGV4IGM5MzAzZDNkNjYwMi4uZmIzNDBkYTY0YmJjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL3RwczY1ODZ4LmMKPiArKysgYi9kcml2ZXJzL21mZC90 cHM2NTg2eC5jCj4gQEAgLTU3OSw3ICs1NzksNyBAQCBzdGF0aWMgaW50IHRwczY1ODZ4X2kyY19w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0cHM2NTg2eF9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHRwczY1ODZ4X2kyY19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHRwczY1ODZ4ICp0cHM2NTg2eCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4g QEAgLTU4Nyw3ICs1ODcsNiBAQCBzdGF0aWMgaW50IHRwczY1ODZ4X2kyY19yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBtZmRfcmVtb3ZlX2Rldmlj ZXModHBzNjU4NngtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChjbGllbnQtPmlycSkKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGNsaWVudC0+aXJxLCB0cHM2 NTg2eCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBp bnQgX19tYXliZV91bnVzZWQgdHBzNjU4NnhfaTJjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2 KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC90cHM2NTkxMi1pMmMuYyBiL2RyaXZlcnMvbWZk L3RwczY1OTEyLWkyYy5jCj4gaW5kZXggMDZlYjI3ODRkMzIyLi5jYmJhYzE1NjdlYWEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9tZmQvdHBzNjU5MTItaTJjLmMKPiArKysgYi9kcml2ZXJzL21mZC90 cHM2NTkxMi1pMmMuYwo+IEBAIC01MSwxMyArNTEsMTEgQEAgc3RhdGljIGludCB0cHM2NTkxMl9p MmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gdHBzNjU5MTJfZGV2aWNlX2luaXQodHBzKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHRwczY1OTEyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgdHBzNjU5MTJfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHBzNjU5MTIgKnRwcyA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHRwczY1OTEyX2RldmljZV9leGl0 KHRwcyk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdHBzNjU5MTJfaTJjX2lkX3RhYmxlW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3R3bC1jb3JlLmMgYi9kcml2ZXJzL21mZC90d2wt Y29yZS5jCj4gaW5kZXggYmQ2NjU5Y2YzYmMwLi44OWE5NmRiMTViMzMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9tZmQvdHdsLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvbWZkL3R3bC1jb3JlLmMKPiBA QCAtMTAzMyw3ICsxMDMzLDcgQEAgc3RhdGljIHZvaWQgY2xvY2tzX2luaXQoc3RydWN0IGRldmlj ZSAqZGV2LAo+IMKgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tKi8KPiDCoAo+IMKgCj4gLXN0YXRpYyBpbnQg dHdsX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB0d2xf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGksIG51bV9zbGF2ZXM7Cj4gwqAKPiBAQCAtMTA1MSw3ICsxMDUxLDYgQEAgc3Rh dGljIGludCB0d2xfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR3bC0+Y2xpZW50ID0gTlVMTDsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqB0d2xfcHJpdi0+cmVhZHkgPSBmYWxzZTsKPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBvZl9kZXZf YXV4ZGF0YSB0d2xfYXV4ZGF0YV9sb29rdXBbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZmQvdHdsNjA0MC5jIGIvZHJpdmVycy9tZmQvdHdsNjA0MC5jCj4gaW5kZXggYjljNmQ5NGI0MDAy Li5mNDI5YjhmMDBkYjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvdHdsNjA0MC5jCj4gKysr IGIvZHJpdmVycy9tZmQvdHdsNjA0MC5jCj4gQEAgLTgwOCw3ICs4MDgsNyBAQCBzdGF0aWMgaW50 IHR3bDYwNDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdHdsNjA0MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHdsNjA0MF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IHR3bDYwNDAgKnR3bDYwNDAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBA IC04MjAsOCArODIwLDYgQEAgc3RhdGljIGludCB0d2w2MDQwX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG1mZF9yZW1vdmVfZGV2aWNlcygmY2xp ZW50LT5kZXYpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUo VFdMNjA0MF9OVU1fU1VQUExJRVMsIHR3bDYwNDAtCj4gPnN1cHBsaWVzKTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCB0d2w2MDQwX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21m ZC93bTg5OTQtY29yZS5jIGIvZHJpdmVycy9tZmQvd204OTk0LWNvcmUuYwo+IGluZGV4IDdiMWQy NzA3MjJiYS4uN2U4OGY1YjBhYmU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL3dtODk5NC1j b3JlLmMKPiArKysgYi9kcml2ZXJzL21mZC93bTg5OTQtY29yZS5jCj4gQEAgLTY1NywxMyArNjU3 LDExIEBAIHN0YXRpYyBpbnQgd204OTk0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpp MmMsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiB3bTg5OTRfZGV2aWNlX2luaXQod204OTk0LCBp MmMtPmlycSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB3bTg5OTRfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCB3bTg5OTRfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd204OTk0 ICp3bTg5OTQgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqB3bTg5OTRfZGV2aWNlX2V4aXQod204OTk0KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB3bTg5 OTRfaTJjX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9hZDUyNXhfZHBvdC1p MmMuYwo+IGIvZHJpdmVycy9taXNjL2FkNTI1eF9kcG90LWkyYy5jCj4gaW5kZXggMGVlMGM2ZDgw OGMzLi4yOGZmYjQzNzdkOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2FkNTI1eF9kcG90 LWkyYy5jCj4gKysrIGIvZHJpdmVycy9taXNjL2FkNTI1eF9kcG90LWkyYy5jCj4gQEAgLTY3LDEw ICs2Nyw5IEBAIHN0YXRpYyBpbnQgYWRfZHBvdF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gYWRfZHBvdF9wcm9iZSgmY2xpZW50 LT5kZXYsICZiZGF0YSwgaWQtPmRyaXZlcl9kYXRhLAo+IGlkLT5uYW1lKTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGFkX2Rwb3RfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBhZF9kcG90X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYWRfZHBvdF9yZW1vdmUoJmNsaWVudC0+ZGV2 KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFkX2Rwb3RfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9taXNjL2FwZHM5ODAyYWxzLmMgYi9kcml2ZXJzL21pc2MvYXBkczk4MDJhbHMuYwo+IGlu ZGV4IDZmZmY0NGI5NTJiZC4uYTMyNDMxZjRiMzcwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlz Yy9hcGRzOTgwMmFscy5jCj4gKysrIGIvZHJpdmVycy9taXNjL2FwZHM5ODAyYWxzLmMKPiBAQCAt MjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBpbnQgYXBkczk4MDJhbHNfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmVzOwo+IMKgfQo+IMKg Cj4gLXN0YXRpYyBpbnQgYXBkczk4MDJhbHNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gK3N0YXRpYyB2b2lkIGFwZHM5ODAyYWxzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWxzX2RhdGEgKmRhdGEgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0yNTYsNyArMjU2LDYgQEAgc3Rh dGljIGludCBhcGRzOTgwMmFsc19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX3B1dF9ub2lkbGUoJmNsaWVudC0+ZGV2KTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21pc2MvYXBkczk5MHguYyBiL2RyaXZlcnMvbWlzYy9hcGRzOTkweC5jCj4gaW5kZXggNDVmNWI5 OTdhMGUxLi5lMjEwMGNjNDJjZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2FwZHM5OTB4 LmMKPiArKysgYi9kcml2ZXJzL21pc2MvYXBkczk5MHguYwo+IEBAIC0xMTg1LDcgKzExODUsNyBA QCBzdGF0aWMgaW50IGFwZHM5OTB4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFw ZHM5OTB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBh cGRzOTkweF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGFwZHM5OTB4X2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KTsKPiDCoAo+IEBAIC0xMjA1LDcgKzEyMDUsNiBAQCBzdGF0aWMgaW50IGFwZHM5OTB4 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJl Z3VsYXRvcl9idWxrX2ZyZWUoQVJSQVlfU0laRShjaGlwLT5yZWdzKSwgY2hpcC0+cmVncyk7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoY2hpcCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9taXNjL2JoMTc3MGdsYy5jIGIvZHJpdmVycy9taXNjL2JoMTc3MGdsYy5jCj4gaW5k ZXggMDU4MWJiOWNlZjJlLi5kMGRmYTY3NDQxNGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNj L2JoMTc3MGdsYy5jCj4gKysrIGIvZHJpdmVycy9taXNjL2JoMTc3MGdsYy5jCj4gQEAgLTEyODAs NyArMTI4MCw3IEBAIHN0YXRpYyBpbnQgYmgxNzcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGJoMTc3MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgYmgxNzcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYmgxNzcwX2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xMjk5LDggKzEyOTksNiBAQCBzdGF0aWMgaW50IGJoMTc3 MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKg wqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBw bV9ydW50aW1lX3NldF9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9taXNjL2RzMTY4Mi5jIGIvZHJpdmVycy9taXNjL2RzMTY4Mi5jCj4g aW5kZXggNDJmMzE2YzJkNzE5Li4wNjk4ZGRjNWY0ZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t aXNjL2RzMTY4Mi5jCj4gKysrIGIvZHJpdmVycy9taXNjL2RzMTY4Mi5jCj4gQEAgLTIyOCwxMSAr MjI4LDEwIEBAIHN0YXRpYyBpbnQgZHMxNjgyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgZHMxNjgyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBkczE2ODJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmY2xpZW50LT5kZXYua29iaiwKPiAmZHMx NjgyX2VlcHJvbV9hdHRyKTsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dyb3VwKCZj bGllbnQtPmRldi5rb2JqLCAmZHMxNjgyX2dyb3VwKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGRzMTY4 Ml9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvZWVwcm9tL2F0MjQuYyBiL2Ry aXZlcnMvbWlzYy9lZXByb20vYXQyNC5jCj4gaW5kZXggNjMzZTFjZjA4ZDZlLi45MzhjNGY0MWI5 OGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2VlcHJvbS9hdDI0LmMKPiArKysgYi9kcml2 ZXJzL21pc2MvZWVwcm9tL2F0MjQuYwo+IEBAIC03OTEsNyArNzkxLDcgQEAgc3RhdGljIGludCBh dDI0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYXQyNF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYXQyNF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGF0MjRfZGF0YSAqYXQy NCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTgwMSw4ICs4MDEsNiBA QCBzdGF0aWMgaW50IGF0MjRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rp c2FibGUoYXQyNC0+dmNjX3JlZyk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBw bV9ydW50aW1lX3NldF9zdXNwZW5kZWQoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKg fQo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCBhdDI0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21pc2MvZWVwcm9tL2VlMTAwNC5jCj4gYi9kcml2ZXJzL21pc2MvZWVw cm9tL2VlMTAwNC5jCj4gaW5kZXggOWZiZmU3ODRkNzEwLi5jOGM2ZGViN2VkODkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9taXNjL2VlcHJvbS9lZTEwMDQuYwo+ICsrKyBiL2RyaXZlcnMvbWlzYy9l ZXByb20vZWUxMDA0LmMKPiBAQCAtMjE5LDE0ICsyMTksMTIgQEAgc3RhdGljIGludCBlZTEwMDRf cHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZWUxMDA0X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBlZTEwMDRfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIFJlbW92ZSBwYWdlIHNl bGVjdCBjbGllbnRzIGlmIHRoaXMgaXMgdGhlIGxhc3QgZGV2aWNlICovCj4gwqDCoMKgwqDCoMKg wqDCoG11dGV4X2xvY2soJmVlMTAwNF9idXNfbG9jayk7Cj4gwqDCoMKgwqDCoMKgwqDCoGVlMTAw NF9jbGVhbnVwKEVFMTAwNF9OVU1fUEFHRVMpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxv Y2soJmVlMTAwNF9idXNfbG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IC0tLS0tLS0qLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21pc2MvZWVwcm9tL2VlcHJvbS5jCj4gYi9kcml2ZXJzL21pc2MvZWVwcm9tL2VlcHJvbS5jCj4g aW5kZXggMzRmYTM4NWRmZDRiLi40YTk0NDVmZWE5M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9t aXNjL2VlcHJvbS9lZXByb20uYwo+ICsrKyBiL2RyaXZlcnMvbWlzYy9lZXByb20vZWVwcm9tLmMK PiBAQCAtMTgzLDExICsxODMsOSBAQCBzdGF0aWMgaW50IGVlcHJvbV9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBzeXNmc19jcmVhdGVf YmluX2ZpbGUoJmNsaWVudC0+ZGV2LmtvYmosCj4gJmVlcHJvbV9hdHRyKTsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGVlcHJvbV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgZWVwcm9tX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzeXNmc19yZW1vdmVfYmluX2ZpbGUoJmNsaWVudC0+ZGV2Lmtv YmosICZlZXByb21fYXR0cik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgZWVwcm9tX2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9lZXByb20vaWR0Xzg5aHBlc3guYwo+IGIvZHJp dmVycy9taXNjL2VlcHJvbS9pZHRfODlocGVzeC5jCj4gaW5kZXggYjBjZmY0YjE1MmRhLi4wYzIz ZTkwOWJjM2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2VlcHJvbS9pZHRfODlocGVzeC5j Cj4gKysrIGIvZHJpdmVycy9taXNjL2VlcHJvbS9pZHRfODlocGVzeC5jCj4gQEAgLTE0MDEsNyAr MTQwMSw3IEBAIHN0YXRpYyBpbnQgaWR0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQs Cj4gY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgLyoKPiDCoCAqIGlkdF9yZW1v dmUoKSAtIElEVCA4OUhQRVN4IGRyaXZlciByZW1vdmUoKSBjYWxsYmFjayBtZXRob2QKPiDCoCAq Lwo+IC1zdGF0aWMgaW50IGlkdF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgaWR0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+ IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWR0Xzg5aHBlc3hfZGV2ICpwZGV2ID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMTQxMyw4ICsxNDEzLDYgQEAgc3RhdGljIGlu dCBpZHRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqAvKiBEaXNjYXJkIGRyaXZlciBkYXRhIHN0cnVjdHVyZSAqLwo+IMKgwqDCoMKgwqDC oMKgwqBpZHRfZnJlZV9wZGV2KHBkZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2VlcHJvbS9tYXg2 ODc1LmMKPiBiL2RyaXZlcnMvbWlzYy9lZXByb20vbWF4Njg3NS5jCj4gaW5kZXggOWRhODFmNmQ0 YTFjLi42YmQ0ZjQzMzlhZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2VlcHJvbS9tYXg2 ODc1LmMKPiArKysgYi9kcml2ZXJzL21pc2MvZWVwcm9tL21heDY4NzUuYwo+IEBAIC0xNzMsNyAr MTczLDcgQEAgc3RhdGljIGludCBtYXg2ODc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IG1heDY4NzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2 b2lkIG1heDY4NzVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBtYXg2ODc1X2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xODEsOCArMTgxLDYgQEAgc3RhdGljIGludCBtYXg2ODc1 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgc3lzZnNfcmVtb3ZlX2Jpbl9maWxlKCZjbGllbnQtPmRldi5rb2JqLCAmdXNlcl9lZXByb21f YXR0cik7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRhdGEpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNl X2lkIG1heDY4NzVfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2htYzYzNTIu YyBiL2RyaXZlcnMvbWlzYy9obWM2MzUyLmMKPiBpbmRleCA1NzJhMmZmMTBmMDAuLjQyYjlhZGVm MjhhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21pc2MvaG1jNjM1Mi5jCj4gKysrIGIvZHJpdmVy cy9taXNjL2htYzYzNTIuYwo+IEBAIC0xMTYsMTAgKzExNiw5IEBAIHN0YXRpYyBpbnQgaG1jNjM1 Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaG1jNjM1Ml9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaG1jNjM1Ml9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dy b3VwKCZjbGllbnQtPmRldi5rb2JqLCAmbV9jb21wYXNzX2dyKTsKPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IGhtYzYzNTJfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2ljczkzMnM0MDEu YyBiL2RyaXZlcnMvbWlzYy9pY3M5MzJzNDAxLmMKPiBpbmRleCAwZjllYTc1YjBiMTguLjJjNGJi NmQ2ZTFhMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21pc2MvaWNzOTMyczQwMS5jCj4gKysrIGIv ZHJpdmVycy9taXNjL2ljczkzMnM0MDEuYwo+IEBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBpbnQg aWNzOTMyczQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkICppZCk7Cj4gwqBzdGF0aWMgaW50IGljczkzMnM0MDFfZGV0ZWN0KHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGkyY19ib2FyZF9pbmZvICppbmZvKTsKPiAtc3RhdGljIGlu dCBpY3M5MzJzNDAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKPiArc3RhdGlj IHZvaWQgaWNzOTMyczQwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBpY3M5MzJzNDAxX2lkW10gPSB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHsgImljczkzMnM0MDEiLCAwIH0sCj4gQEAgLTQ2MCwxMyArNDYw LDEyIEBAIHN0YXRpYyBpbnQgaWNzOTMyczQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBpY3M5MzJzNDAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBpY3M5MzJzNDAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWNzOTMyczQwMV9kYXRhICpkYXRhID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3Zl X2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmZGF0YS0+YXR0cnMpOwo+IMKgwqDCoMKgwqDCoMKg wqBrZnJlZShkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg bW9kdWxlX2kyY19kcml2ZXIoaWNzOTMyczQwMV9kcml2ZXIpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21pc2MvaXNsMjkwMDMuYyBiL2RyaXZlcnMvbWlzYy9pc2wyOTAwMy5jCj4gaW5kZXggNzAz ZDIwZTgzZWJkLi44YWI2MWJlNzljNzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9taXNjL2lzbDI5 MDAzLmMKPiArKysgYi9kcml2ZXJzL21pc2MvaXNsMjkwMDMuYwo+IEBAIC00MTAsMTIgKzQxMCwx MSBAQCBzdGF0aWMgaW50IGlzbDI5MDAzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGlzbDI5MDAzX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBpc2wyOTAwM19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmaXNsMjkw MDNfYXR0cl9ncm91cCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlzbDI5MDAzX3NldF9wb3dlcl9zdGF0 ZShjbGllbnQsIDApOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShpMmNfZ2V0X2NsaWVudGRhdGEo Y2xpZW50KSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRl ZiBDT05GSUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2lzbDI5MDIwLmMg Yi9kcml2ZXJzL21pc2MvaXNsMjkwMjAuYwo+IGluZGV4IGZjNWZmMjgwNWI5NC4uYzZmMmE5NGY1 MDFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWlzYy9pc2wyOTAyMC5jCj4gKysrIGIvZHJpdmVy cy9taXNjL2lzbDI5MDIwLmMKPiBAQCAtMTcxLDExICsxNzEsMTAgQEAgc3RhdGljIGludMKgIGlz bDI5MDIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJlczsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGlzbDI5MDIwX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBpc2wyOTAyMF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVu dGltZV9kaXNhYmxlKCZjbGllbnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHN5c2ZzX3JlbW92 ZV9ncm91cCgmY2xpZW50LT5kZXYua29iaiwgJm1fYWxzX2dyKTsKPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IGlzbDI5MDIwX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9saXMzbHYwMmQv bGlzM2x2MDJkX2kyYy5jCj4gYi9kcml2ZXJzL21pc2MvbGlzM2x2MDJkL2xpczNsdjAyZF9pMmMu Ywo+IGluZGV4IDUyNTU1ZDJlODI0Yi4uZDdkYWEwMWZlN2NhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWlzYy9saXMzbHYwMmQvbGlzM2x2MDJkX2kyYy5jCj4gKysrIGIvZHJpdmVycy9taXNjL2xp czNsdjAyZC9saXMzbHYwMmRfaTJjLmMKPiBAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBpbnQg bGlzM2x2MDJkX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBsaXMzbHYwMmRf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBsaXMz bHYwMmRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgbGlzM2x2MDJkICpsaXMzID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsaXMzbHYwMmRfcGxhdGZvcm1fZGF0YSAq cGRhdGEgPSBjbGllbnQtCj4gPmRldi5wbGF0Zm9ybV9kYXRhOwo+IEBAIC0xOTAsNyArMTkwLDYg QEAgc3RhdGljIGludCBsaXMzbHYwMmRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2J1bGtfZnJlZShBUlJBWV9T SVpFKGxpczMtPnJlZ3VsYXRvcnMpLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaXMzX2Rldi5yZWd1bGF0b3JzKTsKPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvdHNsMjU1MC5jIGIvZHJpdmVycy9taXNjL3RzbDI1NTAu Ywo+IGluZGV4IDZkNzE4NjVjODA0Mi4uMTY1MmZiOWIzODU2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvbWlzYy90c2wyNTUwLmMKPiArKysgYi9kcml2ZXJzL21pc2MvdHNsMjU1MC5jCj4gQEAgLTM4 OSw3ICszODksNyBAQCBzdGF0aWMgaW50IHRzbDI1NTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgdHNsMjU1MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3Rh dGljIHZvaWQgdHNsMjU1MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAm dHNsMjU1MF9hdHRyX2dyb3VwKTsKPiDCoAo+IEBAIC0zOTcsOCArMzk3LDYgQEAgc3RhdGljIGlu dCB0c2wyNTUwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHRzbDI1NTBfc2V0X3Bvd2VyX3N0YXRlKGNsaWVudCwgMCk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKga2ZyZWUoaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCkpOwo+IC0KPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3Bpc21vLmMgYi9kcml2ZXJzL210ZC9tYXBz L3Bpc21vLmMKPiBpbmRleCA5NDZiYTgwZjk3NTguLjVmY2VmY2QwYmFjYSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL210ZC9tYXBzL3Bpc21vLmMKPiArKysgYi9kcml2ZXJzL210ZC9tYXBzL3Bpc21v LmMKPiBAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHBpc21vX2FkZF9vbmUoc3RydWN0 IHBpc21vX2RhdGEKPiAqcGlzbW8sIGludCBpLAo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBwaXNtb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgcGlzbW9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBwaXNtb19kYXRhICpwaXNtbyA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiBAQCAtMjA0LDgg KzIwNCw2IEBAIHN0YXRpYyBpbnQgcGlzbW9fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBsYXRmb3JtX2RldmljZV91 bnJlZ2lzdGVyKHBpc21vLT5kZXZbaV0pOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHBp c21vKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBpbnQgcGlzbW9fcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfaTJjLmMKPiBiL2RyaXZlcnMvbmV0L2RzYS9sYW45 MzAzX2kyYy5jCj4gaW5kZXggOGNhNDcxMzMxMGZhLi5iMjVlOTFiMjZkOTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9uZXQvZHNhL2xhbjkzMDNfaTJjLmMKPiArKysgYi9kcml2ZXJzL25ldC9kc2Ev bGFuOTMwM19pMmMuYwo+IEBAIC02NSwxOCArNjUsMTYgQEAgc3RhdGljIGludCBsYW45MzAzX2ky Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbGFuOTMwM19pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxhbjkzMDNfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bGFuOTMwM19pMmMgKnN3X2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGlmICghc3dfZGV2KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGxhbjkzMDNfcmVtb3ZlKCZzd19kZXYtPmNoaXApOwo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIE5VTEwpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgbGFu OTMwM19pMmNfc2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jCj4gYi9kcml2ZXJzL25l dC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMKPiBpbmRleCBmYWEzMTYzYzg2YjAuLmVmOWQz Y2M0YjE1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0Nzdf aTJjLmMKPiArKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMKPiBA QCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiAr c3RhdGljIHZvaWQga3N6OTQ3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC02MCw4ICs2MCw2IEBAIHN0YXRpYyBpbnQga3N6OTQ3 N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgaTJjX3NldF9jbGllbnRkYXRhKGkyYywgTlVMTCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19zaHV0ZG93 bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2Ev eHJzNzAweC94cnM3MDB4X2kyYy5jCj4gYi9kcml2ZXJzL25ldC9kc2EveHJzNzAweC94cnM3MDB4 X2kyYy5jCj4gaW5kZXggNmRlYWUzODhhMGQ2Li5iYmFmNWEzZmJmMDAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweF9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbmV0 L2RzYS94cnM3MDB4L3hyczcwMHhfaTJjLmMKPiBAQCAtMTA1LDE4ICsxMDUsMTYgQEAgc3RhdGlj IGludCB4cnM3MDB4X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMsCj4gwqDCoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgeHJzNzAweF9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIHhyczcwMHhfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgeHJzNzAweCAqcHJpdiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoGlmICghcHJpdikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqB4cnM3MDB4X3N3aXRjaF9yZW1vdmUocHJpdik7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgaTJjX3NldF9jbGllbnRkYXRhKGkyYywgTlVMTCk7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCB4cnM3MDB4X2kyY19z aHV0ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYwo+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4c3cvaTJjLmMKPiBpbmRleCBjZTg0M2VhOTE0NjQuLjUwYjcxMjFhNWUzYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9pMmMuYwo+ ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L2kyYy5jCj4gQEAgLTY1 NiwxNCArNjU2LDEyIEBAIHN0YXRpYyBpbnQgbWx4c3dfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IG1seHN3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgbWx4c3dfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWx4c3dfaTJjICptbHhzd19pMmMgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtbHhzd19j b3JlX2J1c19kZXZpY2VfdW5yZWdpc3RlcihtbHhzd19pMmMtPmNvcmUsIGZhbHNlKTsKPiDCoMKg wqDCoMKgwqDCoMKgbXV0ZXhfZGVzdHJveSgmbWx4c3dfaTJjLT5jbWQubG9jayk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBpbnQgbWx4c3dfaTJjX2RyaXZl cl9yZWdpc3RlcihzdHJ1Y3QgaTJjX2RyaXZlciAqaTJjX2RyaXZlcikKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkyYy5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLQo+IGky Yy5jCj4gaW5kZXggNTM4NDZjNmI1NmNhLi42NzBhZDliMzA2ZmUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9uZXQvbWN0cC9tY3RwLWkyYy5jCj4gKysrIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWky Yy5jCj4gQEAgLTk4Niw3ICs5ODYsNyBAQCBzdGF0aWMgaW50IG1jdHBfaTJjX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJjOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgbWN0cF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIG1jdHBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWN0cF9pMmNfY2xpZW50ICpt Y2xpID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBtY3RwX2kyY19kZXYgKm1pZGV2ID0gTlVMTCwgKnRtcCA9IE5VTEw7Cj4gQEAgLTEwMDAsNyAr MTAwMCw2IEBAIHN0YXRpYyBpbnQgbWN0cF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4g KmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbWN0cF9pMmNfZnJlZV9jbGllbnQobWNsaSk7Cj4g wqDCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZHJpdmVyX2NsaWVudHNfbG9jayk7Cj4gwqDC oMKgwqDCoMKgwqDCoC8qIENhbGxlcnMgaWdub3JlIHJldHVybiBjb2RlICovCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qIFdlIGxvb2sgZm9yIGEgJ21jdHAtY29u dHJvbGxlcicgcHJvcGVydHkgb24gSTJDIGJ1c3NlcyBhcyB0aGV5Cj4gYXJlCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmZjL2ZkcC9pMmMuYyBiL2RyaXZlcnMvbmZjL2ZkcC9pMmMuYwo+IGluZGV4 IDI4YTllMWViOWJjZi4uMmQ1M2UwZjg4ZDJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmZjL2Zk cC9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbmZjL2ZkcC9pMmMuYwo+IEBAIC0zMzYsMTQgKzMzNiwx MiBAQCBzdGF0aWMgaW50IGZkcF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBmZHBfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgZmRwX25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBmZHBfaTJjX3BoeSAqcGh5ID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZmRwX25jaV9yZW1vdmUocGh5 LT5uZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgZmRwX25jaV9pMmNfZGlzYWJsZShwaHkpOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBhY3BpX2RldmljZV9pZCBmZHBfbmNpX2kyY19hY3BpX21hdGNoW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmZjL21pY3JvcmVhZC9pMmMuYwo+IGIvZHJpdmVycy9uZmMvbWljcm9y ZWFkL2kyYy5jCj4gaW5kZXggMDY3Mjk1MTI0ZWI5Li41ZWFhMThmODEzNTUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9uZmMvbWljcm9yZWFkL2kyYy5jCj4gKysrIGIvZHJpdmVycy9uZmMvbWljcm9y ZWFkL2kyYy5jCj4gQEAgLTI2OCwxNSArMjY4LDEzIEBAIHN0YXRpYyBpbnQgbWljcm9yZWFkX2ky Y19wcm9iZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbWljcm9yZWFkX2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbWljcm9yZWFkX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG1pY3JvcmVhZF9pMmNfcGh5ICpwaHkgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtaWNyb3JlYWRfcmVtb3ZlKHBoeS0+aGRldik7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgZnJlZV9pcnEoY2xpZW50LT5pcnEsIHBoeSk7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgbWljcm9yZWFkX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25mYy9uZmNtcnZsL2kyYy5jIGIvZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYwo+IGluZGV4IGNl ZWY4MWQ5M2FjOS4uNjFmMWUyMDE5YzBhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmZjL25mY21y dmwvaTJjLmMKPiArKysgYi9kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jCj4gQEAgLTIzMSwxMyAr MjMxLDExIEBAIHN0YXRpYyBpbnQgbmZjbXJ2bF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IG5mY21ydmxfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBuZmNtcnZsX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG5mY21ydmxfaTJjX2Rydl9kYXRhICpkcnZf ZGF0YSA9Cj4gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgbmZjbXJ2bF9uY2lfdW5yZWdpc3Rlcl9kZXYoZHJ2X2RhdGEtPnByaXYpOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmZjL254cC1uY2kvaTJjLmMgYi9kcml2ZXJzL25mYy9ueHAtbmNpL2kyYy5jCj4gaW5kZXgg N2U0NTFjMTA5ODVkLi44MmEyZTJmYjE0NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZmMvbnhw LW5jaS9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbmZjL254cC1uY2kvaTJjLmMKPiBAQCAtMzA3LDE0 ICszMDcsMTIgQEAgc3RhdGljIGludCBueHBfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgbnhwX25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIG54cF9uY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbnhwX25jaV9pMmNfcGh5ICpwaHkgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBueHBfbmNp X3JlbW92ZShwaHktPm5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBmcmVlX2lycShjbGllbnQtPmly cSwgcGh5KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBueHBfbmNpX2kyY19pZF90YWJsZVtdID0g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9wbjUzMy9pMmMuYyBiL2RyaXZlcnMvbmZjL3Bu NTMzL2kyYy5jCj4gaW5kZXggNjczZWI1ZTliODg3Li5kZGYzZGIyODZiYWQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9uZmMvcG41MzMvaTJjLmMKPiArKysgYi9kcml2ZXJzL25mYy9wbjUzMy9pMmMu Ywo+IEBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGludCBwbjUzM19pMmNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcjsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHBuNTMzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIHZvaWQgcG41MzNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcG41MzNfaTJjX3BoeSAqcGh5 ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMjM1LDggKzIzNSw2IEBA IHN0YXRpYyBpbnQgcG41MzNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQp Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcG41M3hfdW5yZWdpc3Rlcl9uZmMocGh5LT5wcml2KTsK PiDCoMKgwqDCoMKgwqDCoMKgcG41M3hfY29tbW9uX2NsZWFuKHBoeS0+cHJpdik7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBvZl9wbjUzM19pMmNfbWF0Y2hbXSBfX21heWJlX3VudXNlZAo+ID0gewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9wbjU0NC9pMmMuYyBiL2RyaXZlcnMvbmZjL3BuNTQ0 L2kyYy5jCj4gaW5kZXggNjJhMGYxYTAxMGNiLi45ZTc1NGFiY2ZhMmEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9uZmMvcG41NDQvaTJjLmMKPiArKysgYi9kcml2ZXJzL25mYy9wbjU0NC9pMmMuYwo+ IEBAIC05MjgsNyArOTI4LDcgQEAgc3RhdGljIGludCBwbjU0NF9oY2lfaTJjX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBwbjU0NF9oY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBwbjU0NF9oY2lfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcG41NDRfaTJj X3BoeSAqcGh5ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtOTQwLDgg Kzk0MCw2IEBAIHN0YXRpYyBpbnQgcG41NDRfaGNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChwaHktPnBvd2VyZWQpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwbjU0NF9oY2lfaTJjX2Rpc2FibGUocGh5 KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX3BuNTQ0X2kyY19tYXRjaFtdIF9fbWF5YmVfdW51 c2VkCj4gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3MzZndybjUvaTJjLmMgYi9kcml2 ZXJzL25mYy9zM2Z3cm41L2kyYy5jCj4gaW5kZXggNGQxY2YxYmI1NWIwLi5mODI0ZGM3MDk5Y2Ug MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZmMvczNmd3JuNS9pMmMuYwo+ICsrKyBiL2RyaXZlcnMv bmZjL3MzZndybjUvaTJjLmMKPiBAQCAtMjQ2LDE0ICsyNDYsMTIgQEAgc3RhdGljIGludCBzM2Z3 cm41X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzM2Z3cm41X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgczNmd3JuNV9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBzM2Z3cm41X2kyY19waHkgKnBoeSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHMzZndybjVfcmVtb3ZlKHBoeS0+Y29tbW9uLm5kZXYp Owo+IMKgwqDCoMKgwqDCoMKgwqBjbGtfZGlzYWJsZV91bnByZXBhcmUocGh5LT5jbGspOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0 cnVjdCBpMmNfZGV2aWNlX2lkIHMzZndybjVfaTJjX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwo+ IGluZGV4IGNiZDk2OGYwMTNjNy4uODlmYTI0ZDcxYmVmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv bmZjL3N0LW5jaS9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwo+IEBAIC0y NTAsMTMgKzI1MCwxMSBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcjsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5ID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbmRsY19y ZW1vdmUocGh5LT5uZGxjKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBzdF9uY2lfaTJjX2lkX3Rh YmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jIGIvZHJp dmVycy9uZmMvc3QyMW5mY2EvaTJjLmMKPiBpbmRleCA0MmRjMGU1ZWIxNjEuLjc2YjU1OTg2YmNm OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYwo+ICsrKyBiL2RyaXZl cnMvbmZjL3N0MjFuZmNhL2kyYy5jCj4gQEAgLTU2Miw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IHN0 MjFuZmNhX2hjaV9pMmNfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gcjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHN0MjFuZmNhX2hj aV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHN0 MjFuZmNhX2hjaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdDIxbmZjYV9pMmNfcGh5ICpwaHkgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC01NzEsOCArNTcxLDYgQEAgc3RhdGljIGludCBz dDIxbmZjYV9oY2lfaTJjX3JlbW92ZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoGlmIChwaHktPnBvd2VyZWQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzdDIxbmZjYV9oY2lfaTJjX2Rpc2FibGUocGh5KTsKPiDCoMKgwqDCoMKgwqDCoMKg a2ZyZWVfc2tiKHBoeS0+cGVuZGluZ19za2IpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0MjFu ZmNhX2hjaV9pMmNfaWRfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi91bml0 dGVzdC5jIGIvZHJpdmVycy9vZi91bml0dGVzdC5jCj4gaW5kZXggN2Y2YmJhMThjNTE1Li5lMGI5 OGNlOWM1ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9vZi91bml0dGVzdC5jCj4gKysrIGIvZHJp dmVycy9vZi91bml0dGVzdC5jCj4gQEAgLTI1MjUsMTMgKzI1MjUsMTIgQEAgc3RhdGljIGludCB1 bml0dGVzdF9pMmNfZGV2X3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKmNsaWVudCwKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBpbnQgdW5pdHRlc3Rf aTJjX2Rldl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg dW5pdHRlc3RfaTJjX2Rldl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2Owo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gY2xpZW50LT5kZXYub2Zfbm9k ZTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfZGJnKGRldiwgIiVzIGZvciBub2RlIEAlcE9G XG4iLCBfX2Z1bmNfXywgbnApOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdW5pdHRlc3RfaTJjX2Rldl9p ZFtdID0gewo+IEBAIC0yNjAyLDcgKzI2MDEsNyBAQCBzdGF0aWMgaW50IHVuaXR0ZXN0X2kyY19t dXhfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGludCB1bml0dGVzdF9pMmNfbXV4X3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB1bml0dGVzdF9pMmNf bXV4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBjbGllbnQtPmRldi5vZl9ub2RlOwo+IEBAIC0yNjEw LDcgKzI2MDksNiBAQCBzdGF0aWMgaW50IHVuaXR0ZXN0X2kyY19tdXhfcmVtb3ZlKHN0cnVjdAo+ IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfZGJnKGRldiwg IiVzIGZvciBub2RlIEAlcE9GXG4iLCBfX2Z1bmNfXywgbnApOwo+IMKgwqDCoMKgwqDCoMKgwqBp MmNfbXV4X2RlbF9hZGFwdGVycyhtdXhjKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHVuaXR0ZXN0X2ky Y19tdXhfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jv c19lY19pMmMuYwo+IGIvZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jvc19lY19pMmMuYwo+IGlu ZGV4IDlmNWI5NTc2MzE3My4uYjY4MjNjNjU0YzNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGxh dGZvcm0vY2hyb21lL2Nyb3NfZWNfaTJjLmMKPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL2Nocm9t ZS9jcm9zX2VjX2kyYy5jCj4gQEAgLTMxNywxMyArMzE3LDExIEBAIHN0YXRpYyBpbnQgY3Jvc19l Y19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNyb3NfZWNfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjcm9zX2VjX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGNyb3NfZWNfZGV2aWNlICplY19kZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBjcm9zX2VjX3VucmVnaXN0ZXIoZWNfZGV2KTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1f U0xFRVAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL3N1cmZhY2UzX3Bv d2VyLmMKPiBiL2RyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9zdXJmYWNlM19wb3dlci5jCj4gaW5k ZXggNDQ0ZWM4MWJhMDJkLi4zYjIwZGRkZWI4MTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wbGF0 Zm9ybS9zdXJmYWNlL3N1cmZhY2UzX3Bvd2VyLmMKPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL3N1 cmZhY2Uvc3VyZmFjZTNfcG93ZXIuYwo+IEBAIC01NTQsNyArNTU0LDcgQEAgc3RhdGljIGludCBt c2h3MDAxMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiBlcnJvcjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1zaHcwMDExX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBtc2h3MDAxMV9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG1zaHcwMDExX2RhdGEgKmNkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4g wqAKPiBAQCAtNTY0LDggKzU2NCw2IEBAIHN0YXRpYyBpbnQgbXNodzAwMTFfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGt0aHJlYWRfc3RvcChjZGF0YS0+cG9sbF90YXNrKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBp MmNfdW5yZWdpc3Rlcl9kZXZpY2UoY2RhdGEtPmJhdDApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9p ZCBtc2h3MDAxMV9hY3BpX21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZv cm0veDg2L2FzdXMtdGYxMDNjLWRvY2suYwo+IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvYXN1cy10 ZjEwM2MtZG9jay5jCj4gaW5kZXggNmZkMGM5ZmVhODJkLi42MjMxMGUwNjI4MmIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvYXN1cy10ZjEwM2MtZG9jay5jCj4gKysrIGIvZHJp dmVycy9wbGF0Zm9ybS94ODYvYXN1cy10ZjEwM2MtZG9jay5jCj4gQEAgLTg3OCwxNCArODc4LDEy IEBAIHN0YXRpYyBpbnQgdGYxMDNjX2RvY2tfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHRmMTAzY19kb2NrX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCB0ZjEwM2NfZG9ja19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRmMTAzY19kb2NrX2RhdGEgKmRvY2sgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB0ZjEwM2NfZG9ja19z dG9wX2hwZChkb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgdGYxMDNjX2RvY2tfZGlzYWJsZShkb2Nr KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBp bnQgX19tYXliZV91bnVzZWQgdGYxMDNjX2RvY2tfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2ludDM0NzIvdHBzNjg0 NzAuYwo+IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi90cHM2ODQ3MC5jCj4g aW5kZXggMjJmNjFiNDdmOWU1Li41ZGQ4MWJiMDUyNTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9w bGF0Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi90cHM2ODQ3MC5jCj4gKysrIGIvZHJpdmVycy9wbGF0 Zm9ybS94ODYvaW50ZWwvaW50MzQ3Mi90cHM2ODQ3MC5jCj4gQEAgLTE3OCwxNSArMTc4LDEzIEBA IHN0YXRpYyBpbnQgc2tsX2ludDM0NzJfdHBzNjg0NzBfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgc2tsX2ludDM0NzJfdHBzNjg0NzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpj bGllbnQpCj4gK3N0YXRpYyB2b2lkIHNrbF9pbnQzNDcyX3RwczY4NDcwX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3Qg aW50MzQ3Ml90cHM2ODQ3MF9ib2FyZF9kYXRhICpib2FyZF9kYXRhOwo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoGJvYXJkX2RhdGEgPQo+IGludDM0NzJfdHBzNjg0NzBfZ2V0X2JvYXJkX2RhdGEoZGV2 X25hbWUoJmNsaWVudC0+ZGV2KSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChib2FyZF9kYXRhKQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Bpb2RfcmVtb3ZlX2xvb2t1cF90YWJs ZShib2FyZF9kYXRhLQo+ID50cHM2ODQ3MF9ncGlvX2xvb2t1cF90YWJsZSk7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGFj cGlfZGV2aWNlX2lkIGludDM0NzJfZGV2aWNlX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvcG93ZXIvc3VwcGx5L2JxMjQxNXhfY2hhcmdlci5jCj4gYi9kcml2ZXJzL3Bvd2VyL3N1cHBs eS9icTI0MTV4X2NoYXJnZXIuYwo+IGluZGV4IDU3MjQwMDFlNjZiOS4uNmI5OWUxYzY3NWI4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjQxNXhfY2hhcmdlci5jCj4gKysr IGIvZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyNDE1eF9jaGFyZ2VyLmMKPiBAQCAtMTY5Niw3ICsx Njk2LDcgQEAgc3RhdGljIGludCBicTI0MTV4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNs aWVudCwKPiDCoAo+IMKgLyogbWFpbiBicTI0MTV4IHJlbW92ZSBmdW5jdGlvbiAqLwo+IMKgCj4g LXN0YXRpYyBpbnQgYnEyNDE1eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgYnEyNDE1eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGJxMjQxNXhfZGV2aWNlICpicSA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTE3MTUsOCArMTcxNSw2IEBAIHN0YXRpYyBp bnQgYnEyNDE1eF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqBkZXZfaW5mbyhicS0+ZGV2LCAiZHJpdmVyIHVucmVnaXN0ZXJlZFxuIik7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoYnEtPm5hbWUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk IGJxMjQxNXhfaTJjX2lkX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIv c3VwcGx5L2JxMjQxOTBfY2hhcmdlci5jCj4gYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI0MTkw X2NoYXJnZXIuYwo+IGluZGV4IDI3ZjVjNzY0ODYxNy4uMjI3NDY3OWM1ZGRkIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjQxOTBfY2hhcmdlci5jCj4gKysrIGIvZHJpdmVy cy9wb3dlci9zdXBwbHkvYnEyNDE5MF9jaGFyZ2VyLmMKPiBAQCAtMTkwMSw3ICsxOTAxLDcgQEAg c3RhdGljIGludCBicTI0MTkwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGJxMjQx OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJxMjQx OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBicTI0MTkwX2Rldl9pbmZvICpiZGkgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVycm9yOwo+IEBAIC0xOTE4LDggKzE5MTgsNiBA QCBzdGF0aWMgaW50IGJxMjQxOTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfcHV0X3N5bmMoYmRp LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5k KGJkaS0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKGJkaS0+ZGV2 KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2 b2lkIGJxMjQxOTBfc2h1dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyNDI1N19jaGFyZ2VyLmMKPiBiL2RyaXZlcnMv cG93ZXIvc3VwcGx5L2JxMjQyNTdfY2hhcmdlci5jCj4gaW5kZXggOTZjYjMyOTBiY2FhLi5kYWZi NjRiMzJjZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyNDI1N19jaGFy Z2VyLmMKPiArKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI0MjU3X2NoYXJnZXIuYwo+IEBA IC0xMDc3LDcgKzEwNzcsNyBAQCBzdGF0aWMgaW50IGJxMjQyNTdfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IC1zdGF0aWMgaW50IGJxMjQyNTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGJxMjQyNTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBicTI0MjU3X2RldmljZSAqYnEgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xMDg1LDggKzEwODUsNiBAQCBzdGF0aWMg aW50IGJxMjQyNTdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYnEtPmlp bGltaXRfc2V0dXBfd29yayk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgYnEyNDI1N19maWVsZF93 cml0ZShicSwgRl9SRVNFVCwgMSk7IC8qIHJlc2V0IHRvIGRlZmF1bHRzICovCj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNX1NMRUVQ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2JxMjU4OTBfY2hhcmdlci5jCj4g Yi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI1ODkwX2NoYXJnZXIuYwo+IGluZGV4IDg1MmE2ZmVj NDMzOS4uMDZlYTczOTlkMTUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2Jx MjU4OTBfY2hhcmdlci5jCj4gKysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyNTg5MF9jaGFy Z2VyLmMKPiBAQCAtMTI1OCw3ICsxMjU4LDcgQEAgc3RhdGljIGludCBicTI1ODkwX3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGJxMjU4OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJxMjU4OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBicTI1ODkwX2RldmljZSAq YnEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xMjY5LDggKzEyNjks NiBAQCBzdGF0aWMgaW50IGJxMjU4OTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHJlc2V0IGFsbCByZWdpc3Rl cnMgdG8gZGVmYXVsdCB2YWx1ZXMgKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGJxMjU4OTBfY2hpcF9yZXNldChicSk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGJxMjU4OTBfc2h1 dGRvd24oc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w b3dlci9zdXBwbHkvYnEyN3h4eF9iYXR0ZXJ5X2kyYy5jCj4gYi9kcml2ZXJzL3Bvd2VyL3N1cHBs eS9icTI3eHh4X2JhdHRlcnlfaTJjLmMKPiBpbmRleCBjZjM4Y2JmZTEzZTkuLjk0YjAwYmI4OWMx NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI3eHh4X2JhdHRlcnlfaTJj LmMKPiArKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI3eHh4X2JhdHRlcnlfaTJjLmMKPiBA QCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbnQgYnEyN3h4eF9iYXR0ZXJ5X2kyY19wcm9iZShz dHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBicTI3eHh4X2JhdHRlcnlfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBicTI3eHh4X2JhdHRlcnlfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgYnEyN3h4eF9kZXZpY2VfaW5mbyAqZGkgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IEBAIC0yMTQsOCArMjE0LDYgQEAgc3RhdGljIGludCBicTI3eHh4X2JhdHRl cnlfaTJjX3JlbW92ZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoG11dGV4X2xvY2soJmJhdHRlcnlfbXV0ZXgpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZHJfcmVt b3ZlKCZiYXR0ZXJ5X2lkLCBkaS0+aWQpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2so JmJhdHRlcnlfbXV0ZXgpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGJxMjd4eHhfaTJjX2lkX3Rh YmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2N3MjAxNV9iYXR0 ZXJ5LmMKPiBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2N3MjAxNV9iYXR0ZXJ5LmMKPiBpbmRleCA3 MjhlMmE2Y2M5YzMuLjgxZTE3YWQ4MDE2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Bvd2VyL3N1 cHBseS9jdzIwMTVfYmF0dGVyeS5jCj4gKysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvY3cyMDE1 X2JhdHRlcnkuYwo+IEBAIC03MjUsMTMgKzcyNSwxMiBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51 c2VkIGN3X2JhdF9yZXN1bWUoc3RydWN0Cj4gZGV2aWNlICpkZXYpCj4gwqAKPiDCoHN0YXRpYyBT SU1QTEVfREVWX1BNX09QUyhjd19iYXRfcG1fb3BzLCBjd19iYXRfc3VzcGVuZCwKPiBjd19iYXRf cmVzdW1lKTsKPiDCoAo+IC1zdGF0aWMgaW50IGN3X2JhdF9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgY3dfYmF0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY3dfYmF0dGVyeSAqY3df YmF0ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZjd19iYXQtPmJhdHRlcnlfZGVsYXlfd29yayk7Cj4g wqDCoMKgwqDCoMKgwqDCoHBvd2VyX3N1cHBseV9wdXRfYmF0dGVyeV9pbmZvKGN3X2JhdC0+cmtf YmF0LCBjd19iYXQtCj4gPmJhdHRlcnkpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgY3dfYmF0X2lkX3Rh YmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2RzMjc4Ml9iYXR0 ZXJ5LmMKPiBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2RzMjc4Ml9iYXR0ZXJ5LmMKPiBpbmRleCA5 YWUyNzNmZGU3YTIuLmQ3OGNkMDU0MDJmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Bvd2VyL3N1 cHBseS9kczI3ODJfYmF0dGVyeS5jCj4gKysrIGIvZHJpdmVycy9wb3dlci9zdXBwbHkvZHMyNzgy X2JhdHRlcnkuYwo+IEBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIHZvaWQgZHMyNzh4X3Bvd2Vy X3N1cHBseV9pbml0KHN0cnVjdAo+IHBvd2VyX3N1cHBseV9kZXNjICpiYXR0ZXJ5KQo+IMKgwqDC oMKgwqDCoMKgwqBiYXR0ZXJ5LT5leHRlcm5hbF9wb3dlcl9jaGFuZ2VkwqA9IE5VTEw7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBkczI3OHhfYmF0dGVyeV9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZHMyNzh4X2JhdHRlcnlfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkczI3OHhf aW5mbyAqaW5mbyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDCoMKgwqDCoMKg wqBpbnQgaWQgPSBpbmZvLT5pZDsKPiBAQCAtMzI1LDggKzMyNSw2IEBAIHN0YXRpYyBpbnQgZHMy Nzh4X2JhdHRlcnlfcmVtb3ZlKHN0cnVjdAo+IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoMKgwqDC oMKgwqDCoMKgbXV0ZXhfbG9jaygmYmF0dGVyeV9sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWRy X3JlbW92ZSgmYmF0dGVyeV9pZCwgaWQpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2so JmJhdHRlcnlfbG9jayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqAjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIv c3VwcGx5L2xwODcyN19jaGFyZ2VyLmMKPiBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2xwODcyN19j aGFyZ2VyLmMKPiBpbmRleCA5ZWU1NGUzOTc3NTQuLjM4NGEzNzRiNTJjMSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9scDg3MjdfY2hhcmdlci5jCj4gKysrIGIvZHJpdmVycy9w b3dlci9zdXBwbHkvbHA4NzI3X2NoYXJnZXIuYwo+IEBAIC01OTAsMTMgKzU5MCwxMiBAQCBzdGF0 aWMgaW50IGxwODcyN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2wsCj4gY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IC1zdGF0aWMgaW50IGxwODcyN19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsKQo+ICtz dGF0aWMgdm9pZCBscDg3MjdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IGxwODcyN19jaGcgKnBjaGcgPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2wpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGxwODcyN19yZWxlYXNlX2lycShwY2hnKTsK PiDCoMKgwqDCoMKgwqDCoMKgbHA4NzI3X3VucmVnaXN0ZXJfcHN5KHBjaGcpOwo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBscDg3MjdfZHRfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIv c3VwcGx5L3J0NTAzM19iYXR0ZXJ5LmMKPiBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3J0NTAzM19i YXR0ZXJ5LmMKPiBpbmRleCA3YTIzYzcwZjQ4NzkuLjczNmRlYzYwOGZmNiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9ydDUwMzNfYmF0dGVyeS5jCj4gKysrIGIvZHJpdmVycy9w b3dlci9zdXBwbHkvcnQ1MDMzX2JhdHRlcnkuYwo+IEBAIC0xNDksMTMgKzE0OSwxMSBAQCBzdGF0 aWMgaW50IHJ0NTAzM19iYXR0ZXJ5X3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBydDUw MzNfYmF0dGVyeV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgcnQ1MDMzX2JhdHRlcnlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDUwMzNfYmF0dGVyeSAqYmF0dGVyeSA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHBvd2VyX3N1cHBs eV91bnJlZ2lzdGVyKGJhdHRlcnktPnBzeSk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgcnQ1MDMz X2JhdHRlcnlfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci9zdXBwbHkvcnQ5 NDU1X2NoYXJnZXIuYwo+IGIvZHJpdmVycy9wb3dlci9zdXBwbHkvcnQ5NDU1X2NoYXJnZXIuYwo+ IGluZGV4IDc0ZWU1NDMyMGU2YS4uNzI5NjIyODZkNzA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv cG93ZXIvc3VwcGx5L3J0OTQ1NV9jaGFyZ2VyLmMKPiArKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBs eS9ydDk0NTVfY2hhcmdlci5jCj4gQEAgLTE2OTgsNyArMTY5OCw3IEBAIHN0YXRpYyBpbnQgcnQ5 NDU1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHJ0OTQ1NV9yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcnQ5NDU1X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKg wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcnQ5NDU1X2luZm8gKmluZm8gPSBpMmNfZ2V0X2NsaWVudGRh dGEoY2xpZW50KTsKPiBAQCAtMTcxNSw4ICsxNzE1LDYgQEAgc3RhdGljIGludCBydDk0NTVfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZpbmZvLT5wd3JfcmR5X3dvcmspOwo+IMKgwqDCoMKgwqDCoMKg wqBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmluZm8tPm1heF9jaGFyZ2luZ190aW1lX3dvcmsp Owo+IMKgwqDCoMKgwqDCoMKgwqBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmluZm8tPmJhdHRf cHJlc2VuY2Vfd29yayk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgcnQ5NDU1X2kyY19pZF90YWJs ZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9zbWIzNDctY2hhcmdl ci5jCj4gYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9zbWIzNDctY2hhcmdlci5jCj4gaW5kZXggMTUx MWY3MWY5MzdjLi45OTZhODJmOGEyYTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wb3dlci9zdXBw bHkvc21iMzQ3LWNoYXJnZXIuYwo+ICsrKyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3NtYjM0Ny1j aGFyZ2VyLmMKPiBAQCAtMTU5NSwxNCArMTU5NSwxMiBAQCBzdGF0aWMgaW50IHNtYjM0N19wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc21iMzQ3X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzbWIzNDdfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzbWIzNDdfY2hhcmdlciAq c21iID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg c21iMzQ3X3VzYl92YnVzX3JlZ3VsYXRvcl9kaXNhYmxlKHNtYi0+dXNiX3JkZXYpOwo+IMKgwqDC oMKgwqDCoMKgwqBzbWIzNDdfaXJxX2Rpc2FibGUoc21iKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHNtYjM0N19zaHV0ZG93bihzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBs eS96Ml9iYXR0ZXJ5LmMKPiBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3oyX2JhdHRlcnkuYwo+IGlu ZGV4IDdlZDRlNGJiMjZlYy4uMTg5N2MyOTg0ODYwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcG93 ZXIvc3VwcGx5L3oyX2JhdHRlcnkuYwo+ICsrKyBiL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3oyX2Jh dHRlcnkuYwo+IEBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGludCB6Ml9iYXR0X3Byb2JlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHoyX2JhdHRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHoyX2JhdHRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB6Ml9jaGFyZ2VyICpjaGFy Z2VyID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMjYzLDggKzI2Myw2 IEBAIHN0YXRpYyBpbnQgejJfYmF0dF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZV9pcnEoZ3Bpb2RfdG9faXJx KGNoYXJnZXItPmNoYXJnZV9ncGlvZCksCj4gY2hhcmdlcik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKga2ZyZWUoY2hhcmdlcik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1w Y2E5Njg1LmMgYi9kcml2ZXJzL3B3bS9wd20tcGNhOTY4NS5jCj4gaW5kZXggYzkxZmE3ZjllMzNk Li5mMjMwYzEwZDI4YmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wd20vcHdtLXBjYTk2ODUuYwo+ ICsrKyBiL2RyaXZlcnMvcHdtL3B3bS1wY2E5Njg1LmMKPiBAQCAtNTk4LDcgKzU5OCw3IEBAIHN0 YXRpYyBpbnQgcGNhOTY4NV9wd21fcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHBjYTk2 ODVfcHdtX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBw Y2E5Njg1X3B3bV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IHBjYTk2ODUgKnBjYSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgCj4gQEAgLTYxMCw4ICs2MTAsNiBAQCBzdGF0aWMgaW50IHBjYTk2ODVfcHdtX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2KTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgcGNhOTY4NV9wd21fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UKPiAq ZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3JlZ3VsYXRvci9kYTkxMjEtcmVndWxhdG9yLmMK PiBiL2RyaXZlcnMvcmVndWxhdG9yL2RhOTEyMS1yZWd1bGF0b3IuYwo+IGluZGV4IDc2ZTBlMjNi ZjU5OC4uZTRjNzUzYjgzMDg4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcmVndWxhdG9yL2RhOTEy MS1yZWd1bGF0b3IuYwo+ICsrKyBiL2RyaXZlcnMvcmVndWxhdG9yL2RhOTEyMS1yZWd1bGF0b3Iu Ywo+IEBAIC0xMTY0LDcgKzExNjQsNyBAQCBzdGF0aWMgaW50IGRhOTEyMV9pMmNfcHJvYmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgZGE5MTIxX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmkyYykKPiArc3RhdGljIHZvaWQgZGE5MTIxX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRhOTEyMSAqY2hpcCA9IGkyY19n ZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBpbnQgbWFza19hbGxb NF0gPSB7IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYgfTsKPiBAQCAtMTE3Niw3ICsxMTc2LDYgQEAg c3RhdGljIGludCBkYTkxMjFfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4g wqDCoMKgwqDCoMKgwqDCoHJldCA9IHJlZ21hcF9idWxrX3dyaXRlKGNoaXAtPnJlZ21hcCwgREE5 MTIxX1JFR19TWVNfTUFTS18wLAo+IG1hc2tfYWxsLCA0KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYg KHJldCAhPSAwKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihjaGlw LT5kZXYsICJGYWlsZWQgdG8gc2V0IElSUSBtYXNrczogJWRcbiIsCj4gcmV0KTsKPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIGRhOTEyMV9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZWd1 bGF0b3IvbHA4NzU1LmMgYi9kcml2ZXJzL3JlZ3VsYXRvci9scDg3NTUuYwo+IGluZGV4IDMyMWJl YzZlM2Y4ZC4uMzFiNDM0MjZkNDdjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcmVndWxhdG9yL2xw ODc1NS5jCj4gKysrIGIvZHJpdmVycy9yZWd1bGF0b3IvbHA4NzU1LmMKPiBAQCAtNDIyLDE1ICs0 MjIsMTMgQEAgc3RhdGljIGludCBscDg3NTVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgbHA4NzU1X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBscDg3NTVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoGludCBpY250Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbHA4NzU1X2NoaXAg KnBjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgZm9yIChpY250ID0gMDsgaWNudCA8IExQODc1NV9CVUNLX01BWDsgaWNudCsrKQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVnbWFwX3dyaXRlKHBjaGlwLT5yZWdtYXAsIGlj bnQsIDB4MDApOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGxwODc1NV9pZFtdID0gewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3JlZ3VsYXRvci9ycGktcGFuZWwtYXR0aW55LXJlZ3VsYXRvci5jCj4g Yi9kcml2ZXJzL3JlZ3VsYXRvci9ycGktcGFuZWwtYXR0aW55LXJlZ3VsYXRvci5jCj4gaW5kZXgg ZmE4NzA2YTM1MmNlLi4wNGI0YWIxMzE5ODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9yZWd1bGF0 b3IvcnBpLXBhbmVsLWF0dGlueS1yZWd1bGF0b3IuYwo+ICsrKyBiL2RyaXZlcnMvcmVndWxhdG9y L3JwaS1wYW5lbC1hdHRpbnktcmVndWxhdG9yLmMKPiBAQCAtMzg1LDEzICszODUsMTEgQEAgc3Rh dGljIGludCBhdHRpbnlfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGF0dGlueV9p MmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGF0dGlu eV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBhdHRpbnlfbGNkICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJnN0YXRlLT5sb2NrKTsK PiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF0dGlueV9kdF9pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ydGMvcnRjLWJxMzJrLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYnEzMmsuYwo+IGluZGV4 IDIyMzVjOTY4ODQyZC4uZjE5ODY2M2YyMGM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcnRjL3J0 Yy1icTMyay5jCj4gKysrIGIvZHJpdmVycy9ydGMvcnRjLWJxMzJrLmMKPiBAQCAtMjk4LDExICsy OTgsOSBAQCBzdGF0aWMgaW50IGJxMzJrX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBi cTMya19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYnEz MmtfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoGJxMzJrX3N5c2ZzX3VucmVnaXN0ZXIoJmNsaWVudC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCBicTMya19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtZHMx Mzc0LmMgYi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzc0LmMKPiBpbmRleCA4ZGI1YTYzMWJjYTguLjQ0 MTQ4ODAyYjFhNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3J0Yy9ydGMtZHMxMzc0LmMKPiArKysg Yi9kcml2ZXJzL3J0Yy9ydGMtZHMxMzc0LmMKPiBAQCAtNTMxLDcgKzUzMSw3IEBAIHN0YXRpYyBp bnQgZHMxMzc0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBkczEzNzRfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGRzMTM3NF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRz MTM3NCAqZHMxMzc0ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNTQz LDggKzU0Myw2IEBAIHN0YXRpYyBpbnQgZHMxMzc0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZtX2ZyZWVfaXJx KCZjbGllbnQtPmRldiwgY2xpZW50LT5pcnEsIGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYW5jZWxfd29ya19zeW5jKCZkczEzNzQtPndvcmspOwo+IMKgwqDCoMKg wqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAj aWZkZWYgQ09ORklHX1BNX1NMRUVQCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1pc2wx MjAyNi5jIGIvZHJpdmVycy9ydGMvcnRjLWlzbDEyMDI2LmMKPiBpbmRleCAxZmM2NjI3ZDg1NGQu LjFiZmNhMzkwNzlkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3J0Yy9ydGMtaXNsMTIwMjYuYwo+ ICsrKyBiL2RyaXZlcnMvcnRjL3J0Yy1pc2wxMjAyNi5jCj4gQEAgLTQ3MiwxMiArNDcyLDExIEBA IHN0YXRpYyBpbnQgaXNsMTIwMjZfcHJvYmVfbmV3KHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRldm1fcnRjX3JlZ2lzdGVyX2RldmljZShwcml2 LT5ydGMpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaXNsMTIwMjZfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGlzbDEyMDI2X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaXNsMTIw MjYgKnByaXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UocHJpdi0+bnZtX2NsaWVudCk7Cj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIGlzbDEyMDI2X2R0X21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRj L3J0Yy1tNDF0ODAuYyBiL2RyaXZlcnMvcnRjL3J0Yy1tNDF0ODAuYwo+IGluZGV4IGQ4Njg0NThj ZDQwZS4uZTBiNGQzNzk0MzIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1tNDF0ODAu Ywo+ICsrKyBiL2RyaXZlcnMvcnRjL3J0Yy1tNDF0ODAuYwo+IEBAIC05ODksNyArOTg5LDcgQEAg c3RhdGljIGludCBtNDF0ODBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG00MXQ4MF9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgbTQxdDgwX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgI2lmZGVmIENPTkZJR19S VENfRFJWX000MVQ4MF9XRFQKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG00MXQ4MF9kYXRhICpj bGllbnRkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gQEAgLTk5OSw4ICs5OTks NiBAQCBzdGF0aWMgaW50IG00MXQ4MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5yZWdpc3Rlcl9yZWJvb3Rfbm90 aWZpZXIoJndkdF9ub3RpZmllcik7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoCNlbmRpZgo+IC0K PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBp MmNfZHJpdmVyIG00MXQ4MF9kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0 Yy1yczVjMzcyLmMgYi9kcml2ZXJzL3J0Yy9ydGMtcnM1YzM3Mi5jCj4gaW5kZXggY2IxNTk4MzM4 M2Y1Li45NTYyYzQ3N2UxYzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ydGMvcnRjLXJzNWMzNzIu Ywo+ICsrKyBiL2RyaXZlcnMvcnRjL3J0Yy1yczVjMzcyLmMKPiBAQCAtOTEwLDEwICs5MTAsOSBA QCBzdGF0aWMgaW50IHJzNWMzNzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcnM1 YzM3Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcnM1 YzM3Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgcnM1Y19zeXNmc191bnJlZ2lzdGVyKCZjbGllbnQtPmRldik7Cj4gLcKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciByczVj MzcyX2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMgYi9k cml2ZXJzL3J0Yy9ydGMteDEyMDUuYwo+IGluZGV4IGQxZDVhNDRkOTEyMi4uNzc5MmUyMmRlODA1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jCj4gKysrIGIvZHJpdmVycy9y dGMvcnRjLXgxMjA1LmMKPiBAQCAtNjU4LDEwICs2NTgsOSBAQCBzdGF0aWMgaW50IHgxMjA1X3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB4MTIwNV9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgeDEyMDVfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHgxMjA1X3N5c2ZzX3VucmVnaXN0ZXIo JmNsaWVudC0+ZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHgxMjA1X2lkW10gPSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLWdjMDMxMC5j Cj4gYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1nYzAzMTAuYwo+ IGluZGV4IGNiYzhiMWQ5MTk5NS4uNzgzZjFiODhlYmYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLWdjMDMxMC5jCj4gKysrIGIvZHJpdmVy cy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3AtZ2MwMzEwLmMKPiBAQCAtMTE5NCw3 ICsxMTk0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9vcHMgZ2MwMzEwX29w cwo+ID0gewo+IMKgwqDCoMKgwqDCoMKgwqAuc2Vuc29yID0gJmdjMDMxMF9zZW5zb3Jfb3BzLAo+ IMKgfTsKPiDCoAo+IC1zdGF0aWMgaW50IGdjMDMxMF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgZ2MwMzEwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBnYzAz MTBfZGV2aWNlICpkZXYgPSB0b19nYzAzMTBfc2Vuc29yKHNkKTsKPiBAQCAtMTIwNyw4ICsxMjA3 LDYgQEAgc3RhdGljIGludCBnYzAzMTBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5X2NsZWFudXAoJmRldi0+c2QuZW50aXR5 KTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmZGV2LT5jdHJsX2hh bmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShkZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBnYzAzMTBfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L2F0b21pc3AvaTJjL2F0b21pc3AtZ2MyMjM1LmMKPiBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9h dG9taXNwL2kyYy9hdG9taXNwLWdjMjIzNS5jCj4gaW5kZXggMGU2YjJlNjEwMGQxLi40ZDVhN2Uz MzVmODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0 b21pc3AtZ2MyMjM1LmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMv YXRvbWlzcC1nYzIyMzUuYwo+IEBAIC05NTIsNyArOTUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB2NGwyX3N1YmRldl9vcHMgZ2MyMjM1X29wcyA9Cj4gewo+IMKgwqDCoMKgwqDCoMKgwqAuc2Vu c29yID0gJmdjMjIzNV9zZW5zb3Jfb3BzLAo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgaW50IGdjMjIz NV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZ2MyMjM1 X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBnYzIyMzVfZGV2aWNlICpkZXYgPSB0b19nYzIyMzVfc2Vu c29yKHNkKTsKPiBAQCAtOTY1LDggKzk2NSw2IEBAIHN0YXRpYyBpbnQgZ2MyMjM1X3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG1lZGlhX2VudGl0 eV9jbGVhbnVwKCZkZXYtPnNkLmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfY3RybF9o YW5kbGVyX2ZyZWUoJmRldi0+Y3RybF9oYW5kbGVyKTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUo ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyBpbnQgZ2MyMjM1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLWxtMzU1NC5jCj4g Yi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1sbTM1NTQuYwo+IGlu ZGV4IGUwNDY0ODljZDI1My4uNzVkMTZiNTI1Mjk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3Rh Z2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLWxtMzU1NC5jCj4gKysrIGIvZHJpdmVycy9z dGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3AtbG0zNTU0LmMKPiBAQCAtOTEwLDcgKzkx MCw3IEBAIHN0YXRpYyBpbnQgbG0zNTU0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVu dCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGxtMzU1NF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg bG0zNTU0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVu dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsbTM1NTQgKmZsYXNoID0gdG9fbG0zNTU0KHNk KTsKPiBAQCAtOTI2LDggKzkyNiw2IEBAIHN0YXRpYyBpbnQgbG0zNTU0X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGxtMzU1NF9ncGlvX3VuaW5p dChjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGZsYXNoKTsKPiAtCj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGV2X3BtX29wcyBsbTM1NTRfcG1fb3BzID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1tdDltMTE0LmMKPiBiL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLW10OW0xMTQuYwo+IGluZGV4IDAwZDY4NDJjMDdk Ni4uNDYwMWEyMzhjYjg5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9t aXNwL2kyYy9hdG9taXNwLW10OW0xMTQuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9h dG9taXNwL2kyYy9hdG9taXNwLW10OW0xMTQuYwo+IEBAIC0xNzExLDcgKzE3MTEsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X29wcyBtdDltMTE0X29wcwo+ID0gewo+IMKgwqDC oMKgwqDCoMKgwqAuc2Vuc29yID0gJm10OW0xMTRfc2Vuc29yX29wcywKPiDCoH07Cj4gwqAKPiAt c3RhdGljIGludCBtdDltMTE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBtdDltMTE0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKg ewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXQ5bTExNF9kZXZpY2UgKmRldjsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IEBAIC0xNzIyLDcgKzE3MjIsNiBAQCBzdGF0aWMgaW50IG10OW0xMTRfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50aXR5 X2NsZWFudXAoJmRldi0+c2QuZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDCoMKgdjRsMl9jdHJsX2hh bmRsZXJfZnJlZSgmZGV2LT5jdHJsX2hhbmRsZXIpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShk ZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50 IG10OW0xMTRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3Atb3YyNjgwLmMKPiBiL2Ry aXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNwLW92MjY4MC5jCj4gaW5kZXgg NGJhOTljNjYwNjgxLi44ZjQ4YjIzYmUzYWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5n L21lZGlhL2F0b21pc3AvaTJjL2F0b21pc3Atb3YyNjgwLmMKPiArKysgYi9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1vdjI2ODAuYwo+IEBAIC0xMTM1LDcgKzExMzUs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X29wcyBvdjI2ODBfb3BzCj4gPSB7 Cj4gwqDCoMKgwqDCoMKgwqDCoC5zZW5zb3IgPSAmb3YyNjgwX3NlbnNvcl9vcHMsCj4gwqB9Owo+ IMKgCj4gLXN0YXRpYyBpbnQgb3YyNjgwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBvdjI2ODBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG92MjY4MF9kZXZp Y2UgKmRldiA9IHRvX292MjY4MF9zZW5zb3Ioc2QpOwo+IEBAIC0xMTQ4LDggKzExNDgsNiBAQCBz dGF0aWMgaW50IG92MjY4MF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqBtZWRpYV9lbnRpdHlfY2xlYW51cCgmZGV2LT5zZC5lbnRpdHkpOwo+IMKg wqDCoMKgwqDCoMKgwqB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZkZXYtPmN0cmxfaGFuZGxlcik7 Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW50IG92MjY4MF9wcm9iZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlz cC9pMmMvYXRvbWlzcC1vdjI3MjIuYwo+IGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3Av aTJjL2F0b21pc3Atb3YyNzIyLmMKPiBpbmRleCBkYTk4MDk0ZDcwOTQuLjcxNWE3YWVlZGExOCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvYXRvbWlzcC9pMmMvYXRvbWlzcC1v djI3MjIuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9hdG9taXNwL2kyYy9hdG9taXNw LW92MjcyMi5jCj4gQEAgLTEwOTQsNyArMTA5NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRs Ml9zdWJkZXZfb3BzIG92MjcyMl9vcHMKPiA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgLnNlbnNvciA9 ICZvdjI3MjJfc2Vuc29yX29wcywKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGludCBvdjI3MjJfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92MjcyMl9yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3Qgb3YyNzIyX2RldmljZSAqZGV2ID0gdG9fb3YyNzIyX3NlbnNvcihz ZCk7Cj4gQEAgLTExMDcsOCArMTEwNyw2IEBAIHN0YXRpYyBpbnQgb3YyNzIyX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbWVkaWFfZW50 aXR5X2NsZWFudXAoJmRldi0+c2QuZW50aXR5KTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoZGV2 KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBp bnQgX19vdjI3MjJfaW5pdF9jdHJsX2hhbmRsZXIoc3RydWN0IG92MjcyMl9kZXZpY2UgKmRldikK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL292NTY5My9h dG9taXNwLQo+IG92NTY5My5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL292 NTY5My9hdG9taXNwLW92NTY5My5jCj4gaW5kZXggNmM5NWY1N2E1MmU5Li5jMWNkNjMxNDU1ZTYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJjL292NTY5My9h dG9taXNwLW92NTY5My5jCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvaTJj L292NTY5My9hdG9taXNwLW92NTY5My5jCj4gQEAgLTE4NzcsNyArMTg3Nyw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIG92NTY5M19vcHMKPiA9IHsKPiDCoMKgwqDCoMKg wqDCoMKgLnBhZCA9ICZvdjU2OTNfcGFkX29wcywKPiDCoH07Cj4gwqAKPiAtc3RhdGljIGludCBv djU2OTNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG92 NTY5M19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgb3Y1NjkzX2RldmljZSAqZGV2ID0gdG9fb3Y1Njkz X3NlbnNvcihzZCk7Cj4gQEAgLTE4OTMsOCArMTg5Myw2IEBAIHN0YXRpYyBpbnQgb3Y1NjkzX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoG1lZGlh X2VudGl0eV9jbGVhbnVwKCZkZXYtPnNkLmVudGl0eSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJf Y3RybF9oYW5kbGVyX2ZyZWUoJmRldi0+Y3RybF9oYW5kbGVyKTsKPiDCoMKgwqDCoMKgwqDCoMKg a2ZyZWUoZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBpbnQgb3Y1NjkzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tYXg5NjcxMi9tYXg5NjcxMi5jCj4gYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWF4OTY3MTIvbWF4OTY3MTIuYwo+IGluZGV4IDZiNWFiZDk1 OGJmZi4uOTliMzMzYjY4MTk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9t YXg5NjcxMi9tYXg5NjcxMi5jCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21heDk2NzEy L21heDk2NzEyLmMKPiBAQCAtNDA3LDE1ICs0MDcsMTMgQEAgc3RhdGljIGludCBtYXg5NjcxMl9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biBtYXg5NjcxMl92NGwyX3JlZ2lzdGVyKHByaXYpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg bWF4OTY3MTJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lk IG1heDk2NzEyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgbWF4OTY3MTJfcHJpdiAqcHJpdiA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9z dWJkZXYoJnByaXYtPnNkKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBncGlvZF9zZXRfdmFsdWVf Y2Fuc2xlZXAocHJpdi0+Z3Bpb2RfcHdkbiwgMCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtYXg5 NjcxMl9vZl90YWJsZVtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbW9zdC9p MmMvaTJjLmMKPiBiL2RyaXZlcnMvc3RhZ2luZy9tb3N0L2kyYy9pMmMuYwo+IGluZGV4IDcwNDJm MTA4ODdiYi4uMjg1YTA3MWYwMmJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tb3N0 L2kyYy9pMmMuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tb3N0L2kyYy9pMmMuYwo+IEBAIC0z NDAsMTQgKzM0MCwxMiBAQCBzdGF0aWMgaW50IGkyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LAo+IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiDCoCAqCj4gwqAgKiBV bnJlZ2lzdGVyIHRoZSBpMmMgY2xpZW50IGRldmljZSBhcyBhIE1PU1QgaW50ZXJmYWNlCj4gwqAg Ki8KPiAtc3RhdGljIGludCBpMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIGkyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGhkbV9pMmMgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1vc3RfZGVyZWdpc3Rlcl9pbnRlcmZh Y2UoJmRldi0+bW9zdF9pZmFjZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGRldik7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgaTJjX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Rh Z2luZy9vbHBjX2Rjb24vb2xwY19kY29uLmMKPiBiL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24v b2xwY19kY29uLmMKPiBpbmRleCA3Mjg0Y2I0YWMzOTUuLmFlYTI4NDFmNzU5OCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbi5jCj4gKysrIGIvZHJpdmVy cy9zdGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb24uYwo+IEBAIC02NzEsNyArNjcxLDcgQEAgc3Rh dGljIGludCBkY29uX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4gY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBkY29uX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 KQo+ICtzdGF0aWMgdm9pZCBkY29uX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZGNvbl9wcml2ICpkY29uID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNjg3LDggKzY4Nyw2IEBAIHN0YXRpYyBpbnQg ZGNvbl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKg Y2FuY2VsX3dvcmtfc3luYygmZGNvbi0+c3dpdGNoX3NvdXJjZSk7Cj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKga2ZyZWUoZGNvbik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3Nlcmlh bC9zYzE2aXM3eHguYwo+IGIvZHJpdmVycy90dHkvc2VyaWFsL3NjMTZpczd4eC5jCj4gaW5kZXgg ODQ3MmJmNzA0NzdjLi5jYzNiMjJjYmRhOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy90dHkvc2Vy aWFsL3NjMTZpczd4eC5jCj4gKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL3NjMTZpczd4eC5jCj4g QEAgLTE2ODMsMTEgKzE2ODMsOSBAQCBzdGF0aWMgaW50IHNjMTZpczd4eF9pMmNfcHJvYmUoc3Ry dWN0Cj4gaTJjX2NsaWVudCAqaTJjLAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc2MxNmlzN3h4 X3Byb2JlKCZpMmMtPmRldiwgZGV2dHlwZSwgcmVnbWFwLCBpMmMtPmlycSk7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBzYzE2aXM3eHhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50KQo+ICtzdGF0aWMgdm9pZCBzYzE2aXM3eHhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzYzE2aXM3eHhfcmVtb3ZlKCZjbGll bnQtPmRldik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc2MxNmlzN3h4X2kyY19pZF90YWJsZVtd ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYyBiL2RyaXZlcnMv dXNiL21pc2MvdXNiMzUwMy5jCj4gaW5kZXggMzMwZjQ5NGNkMTU4Li4zYzlmYTY2MzQ3NWYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMKPiArKysgYi9kcml2ZXJzL3Vz Yi9taXNjL3VzYjM1MDMuYwo+IEBAIC0yODksMTQgKzI4OSwxMiBAQCBzdGF0aWMgaW50IHVzYjM1 MDNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYywKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHVzYjM1MDNfcHJvYmUoaHViKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHVzYjM1 MDNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCB1c2Iz NTAzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IHVzYjM1MDMgKmh1YjsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBodWIgPSBp MmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoMKgwqDCoMKgwqDCoMKgY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGh1Yi0+Y2xrKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBpbnQgdXNiMzUwM19wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9waHkvcGh5LWlzcDEzMDEt b21hcC5jCj4gYi9kcml2ZXJzL3VzYi9waHkvcGh5LWlzcDEzMDEtb21hcC5jCj4gaW5kZXggZjhi ZDkzZmU2OWNkLi5lNWQzZjIwNjA5N2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvcGh5L3Bo eS1pc3AxMzAxLW9tYXAuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL3BoeS9waHktaXNwMTMwMS1vbWFw LmMKPiBAQCAtMTE5Niw3ICsxMTk2LDcgQEAgc3RhdGljIHZvaWQgaXNwMTMwMV9yZWxlYXNlKHN0 cnVjdCBkZXZpY2UgKmRldikKPiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpc3AxMzAxICp0aGVfdHJh bnNjZWl2ZXI7Cj4gwqAKPiAtc3RhdGljIGludCBpc3AxMzAxX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBpc3AxMzAxX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaXNwMTMwMcKgwqAqaXNwOwo+ IMKgCj4gQEAgLTEyMTQsOCArMTIxNCw2IEBAIHN0YXRpYyBpbnQgaXNwMTMwMV9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHB1dF9kZXZpY2Uo JmkyYy0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgdGhlX3RyYW5zY2VpdmVyID0gTlVMTDsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoC8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g LS0tLS0tLSovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3BoeS9waHktaXNwMTMwMS5jIGIv ZHJpdmVycy91c2IvcGh5L3BoeS0KPiBpc3AxMzAxLmMKPiBpbmRleCBhZDNkNTdmMWMyNzMuLmMy Nzc3YTVjMWY0ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9waHkvcGh5LWlzcDEzMDEuYwo+ ICsrKyBiL2RyaXZlcnMvdXNiL3BoeS9waHktaXNwMTMwMS5jCj4gQEAgLTEyMCwxNCArMTIwLDEy IEBAIHN0YXRpYyBpbnQgaXNwMTMwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQs Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgaXNw MTMwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgaXNw MTMwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgc3RydWN0IGlzcDEzMDEgKmlzcCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHVzYl9yZW1vdmVfcGh5KCZpc3AtPnBoeSk7Cj4gwqDCoMKg wqDCoMKgwqDCoGlzcDEzMDFfaTJjX2NsaWVudCA9IE5VTEw7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaXNwMTMw MV9kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL2hkM3NzMzIyMC5j Cj4gYi9kcml2ZXJzL3VzYi90eXBlYy9oZDNzczMyMjAuYwo+IGluZGV4IGNkNDdjMzU5N2UxOS4u MmE1ODE4NWZiMTRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL2hkM3NzMzIyMC5j Cj4gKysrIGIvZHJpdmVycy91c2IvdHlwZWMvaGQzc3MzMjIwLmMKPiBAQCAtMjQ1LDE0ICsyNDUs MTIgQEAgc3RhdGljIGludCBoZDNzczMyMjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xp ZW50LAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgaGQzc3MzMjIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMg dm9pZCBoZDNzczMyMjBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBoZDNzczMyMjAgKmhkM3NzMzIyMCA9IGkyY19nZXRfY2xp ZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHR5cGVjX3VucmVnaXN0ZXJf cG9ydChoZDNzczMyMjAtPnBvcnQpOwo+IMKgwqDCoMKgwqDCoMKgwqB1c2Jfcm9sZV9zd2l0Y2hf cHV0KGhkM3NzMzIyMC0+cm9sZV9zdyk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkZXZfaWRzW10g PSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9mc2E0NDgwLmMKPiBiL2Ry aXZlcnMvdXNiL3R5cGVjL211eC9mc2E0NDgwLmMKPiBpbmRleCA2MTg0ZjUzNjcxOTAuLmQ2NDk1 ZTUzM2U1OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvZnNhNDQ4MC5jCj4g KysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L2ZzYTQ0ODAuYwo+IEBAIC0xODEsMTQgKzE4MSwx MiBAQCBzdGF0aWMgaW50IGZzYTQ0ODBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50 KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZz YTQ0ODBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGZz YTQ0ODBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBmc2E0NDgwICpmc2EgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB0eXBlY19tdXhfdW5yZWdpc3Rlcihmc2EtPm11eCk7Cj4g wqDCoMKgwqDCoMKgwqDCoHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKGZzYS0+c3cpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIGZzYTQ0ODBfdGFibGVbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMKPiBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9w aTN1c2IzMDUzMi5jCj4gaW5kZXggNmNlOWYyODI1OTRlLi4xY2QzODhiNTVjMzAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmMKPiArKysgYi9kcml2ZXJz L3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYwo+IEBAIC0xNjAsMTMgKzE2MCwxMiBAQCBzdGF0 aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBwaTN1c2Iz MDUzMl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgcGkz dXNiMzA1MzJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBwaTN1c2IzMDUzMiAqcGkgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp ZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB0eXBlY19tdXhfdW5yZWdpc3RlcihwaS0+bXV4 KTsKPiDCoMKgwqDCoMKgwqDCoMKgdHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIocGktPnN3KTsKPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIHBpM3VzYjMwNTMyX3RhYmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL3R5cGVjL3J0MTcxOS5jIGIvZHJpdmVycy91c2IvdHlwZWMvcnQxNzE5LmMKPiBp bmRleCBmMWI2OThlZGQ3ZWIuLmVhOGI3MDBiMGNlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3Vz Yi90eXBlYy9ydDE3MTkuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3J0MTcxOS5jCj4gQEAg LTkzMCwxNCArOTMwLDEyIEBAIHN0YXRpYyBpbnQgcnQxNzE5X3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBydDE3MTlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2 b2lkIHJ0MTcxOV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHJ0MTcxOV9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGky Yyk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdHlwZWNfdW5yZWdpc3Rlcl9wb3J0KGRhdGEtPnBv cnQpOwo+IMKgwqDCoMKgwqDCoMKgwqB1c2Jfcm9sZV9zd2l0Y2hfcHV0KGRhdGEtPnJvbGVfc3cp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgX19tYXliZV91bnVzZWQKPiBydDE3MTlfZGV2aWNlX3Rh YmxlW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3N0dXNiMTYweC5jCj4g Yi9kcml2ZXJzL3VzYi90eXBlYy9zdHVzYjE2MHguYwo+IGluZGV4IGU3NzQ1ZDFjMmE1Yy4uODYz OGYxZDM5ODk2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3N0dXNiMTYweC5jCj4g KysrIGIvZHJpdmVycy91c2IvdHlwZWMvc3R1c2IxNjB4LmMKPiBAQCAtODAxLDcgKzgwMSw3IEBA IHN0YXRpYyBpbnQgc3R1c2IxNjB4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHN0 dXNiMTYweF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg c3R1c2IxNjB4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3Qgc3R1c2IxNjB4ICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqAKPiBAQCAtODIzLDggKzgyMyw2IEBAIHN0YXRpYyBpbnQgc3R1c2IxNjB4X3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGNoaXAtPm1haW5fc3VwcGx5KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmVndWxhdG9yX2Rpc2FibGUoY2hpcC0+bWFpbl9zdXBwbHkpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBzdHVz YjE2MHhfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL3R5cGVjL3RjcG0vZnVzYjMwMi5jCj4gYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL2Z1c2Iz MDIuYwo+IGluZGV4IDk2YzU1ZWFmM2Y4MC4uNWU5MzQ4ZjI4ZDUwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvdXNiL3R5cGVjL3RjcG0vZnVzYjMwMi5jCj4gKysrIGIvZHJpdmVycy91c2IvdHlwZWMv dGNwbS9mdXNiMzAyLmMKPiBAQCAtMTc3MSw3ICsxNzcxLDcgQEAgc3RhdGljIGludCBmdXNiMzAy X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZ1c2IzMDJfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGZ1c2IzMDJfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBmdXNiMzAy X2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xNzgz LDggKzE3ODMsNiBAQCBzdGF0aWMgaW50IGZ1c2IzMDJfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgZndub2RlX2hhbmRsZV9wdXQoY2hpcC0+dGNw Y19kZXYuZndub2RlKTsKPiDCoMKgwqDCoMKgwqDCoMKgZGVzdHJveV93b3JrcXVldWUoY2hpcC0+ d3EpOwo+IMKgwqDCoMKgwqDCoMKgwqBmdXNiMzAyX2RlYnVnZnNfZXhpdChjaGlwKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgZnVzYjMw Ml9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91 c2IvdHlwZWMvdGNwbS90Y3BjaS5jCj4gYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcGNpLmMK PiBpbmRleCBmMzNlMDhlYjc2NzAuLmM0OGZjYTYwYmIwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3VzYi90eXBlYy90Y3BtL3RjcGNpLmMKPiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3Rj cGNpLmMKPiBAQCAtODY5LDcgKzg2OSw3IEBAIHN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCB0Y3BjaV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgdGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwID0gaTJjX2dldF9j bGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBlcnI7Cj4gQEAgLTg4MCw4 ICs4ODAsNiBAQCBzdGF0aWMgaW50IHRjcGNpX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpj bGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfd2FybigmY2xpZW50 LT5kZXYsICJGYWlsZWQgdG8gZGlzYWJsZSBpcnFzCj4gKCVwZSlcbiIsIEVSUl9QVFIoZXJyKSk7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KGNoaXAtPnRjcGNp KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBj b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0Y3BjaV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcGNpX21heGltLmMKPiBiL2RyaXZlcnMvdXNiL3R5cGVj L3RjcG0vdGNwY2lfbWF4aW0uYwo+IGluZGV4IGRmMjUwNTU3MGYwNy4uYTExYmU1NzU0MTI4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwY2lfbWF4aW0uYwo+ICsrKyBi L2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwY2lfbWF4aW0uYwo+IEBAIC00OTMsMTQgKzQ5Mywx MiBAQCBzdGF0aWMgaW50IG1heF90Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtYXhfdGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1heF90Y3BjaV9yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1heF90Y3Bj aV9jaGlwICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgaWYgKCFJU19FUlJfT1JfTlVMTChjaGlwLT50Y3BjaSkpCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoY2hpcC0+dGNwY2kpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1heF90Y3BjaV9pZFtdID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcGNpX3J0MTcxMWguYwo+IGIvZHJpdmVycy91c2IvdHlw ZWMvdGNwbS90Y3BjaV9ydDE3MTFoLmMKPiBpbmRleCBiNTZhMDg4MGEwNDQuLjlhZDQ5MjRiNGJh NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcGNpX3J0MTcxMWguYwo+ ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwY2lfcnQxNzExaC5jCj4gQEAgLTI2Mywx MiArMjYzLDExIEBAIHN0YXRpYyBpbnQgcnQxNzExaF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgcnQxNzExaF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGlj IHZvaWQgcnQxNzExaF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoMKgc3RydWN0IHJ0MTcxMWhfY2hpcCAqY2hpcCA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHRjcGNpX3VucmVnaXN0ZXJfcG9y dChjaGlwLT50Y3BjaSk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBydDE3MTFoX2lkW10gPSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RpcGQvY29yZS5jCj4gYi9kcml2ZXJzL3VzYi90 eXBlYy90aXBkL2NvcmUuYwo+IGluZGV4IGRmYmJhNWFlOTQ4Ny4uYjYzN2U4YjM3OGIzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RpcGQvY29yZS5jCj4gKysrIGIvZHJpdmVycy91 c2IvdHlwZWMvdGlwZC9jb3JlLmMKPiBAQCAtODU3LDE1ICs4NTcsMTMgQEAgc3RhdGljIGludCB0 cHM2NTk4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB0cHM2NTk4eF9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdHBzNjU5OHhfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCB0cHM2NTk4eCAqdHBzID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgdHBzNjU5OHhfZGlzY29ubmVjdCh0cHMsIDApOwo+IMKgwqDCoMKgwqDCoMKg wqB0eXBlY191bnJlZ2lzdGVyX3BvcnQodHBzLT5wb3J0KTsKPiDCoMKgwqDCoMKgwqDCoMKgdXNi X3JvbGVfc3dpdGNoX3B1dCh0cHMtPnJvbGVfc3cpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdHBz NjU5OHhfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdWNz aS91Y3NpX2NjZy5jCj4gYi9kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3Vjc2lfY2NnLmMKPiBpbmRl eCA2ZGI3YzhkZGQ1MWMuLjkyMGI3ZTc0M2Y1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi90 eXBlYy91Y3NpL3Vjc2lfY2NnLmMKPiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3Vjc2lf Y2NnLmMKPiBAQCAtMTM5OCw3ICsxMzk4LDcgQEAgc3RhdGljIGludCB1Y3NpX2NjZ19wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBzdGF0 dXM7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB1Y3NpX2NjZ19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdWNzaV9jY2dfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB1Y3NpX2NjZyAq dWMgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0xNDA4LDggKzE0MDgs NiBAQCBzdGF0aWMgaW50IHVjc2lfY2NnX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqDCoMKgwqDCoMKgwqDCoHVjc2lfdW5yZWdpc3Rlcih1Yy0+dWNzaSk7Cj4gwqDCoMKg wqDCoMKgwqDCoHVjc2lfZGVzdHJveSh1Yy0+dWNzaSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGZyZWVf aXJxKHVjLT5pcnEsIHVjKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB1Y3NpX2NjZ19kZXZpY2Vf aWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwo+IGIv ZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwo+IGluZGV4IGU2MzUwOWY4YjAxZS4uM2NjN2Ex NWVjYmQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMKPiArKysg Yi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jCj4gQEAgLTM5OSw3ICszOTksNyBAQCBzdGF0 aWMgaW50IHd1c2IzODAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHd1c2IzODAx X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB3dXNiMzgw MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IHd1c2IzODAxICp3dXNiMzgwMSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Owo+IMKgCj4gQEAgLTQxMSw4ICs0MTEsNiBAQCBzdGF0aWMgaW50IHd1c2IzODAxX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHd1 c2IzODAxLT52YnVzX29uKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVndWxh dG9yX2Rpc2FibGUod3VzYjM4MDEtPnZidXNfc3VwcGx5KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHd1c2IzODAxX29mX21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFj a2xpZ2h0L2FkcDg4NjBfYmwuYwo+IGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg2MF9i bC5jCj4gaW5kZXggOGVjMTk0MjU2NzFmLi5iMGZlMDIyNzNlODcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg2MF9ibC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9i YWNrbGlnaHQvYWRwODg2MF9ibC5jCj4gQEAgLTc1Myw3ICs3NTMsNyBAQCBzdGF0aWMgaW50IGFk cDg4NjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWRwODg2MF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWRwODg2MF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFk cDg4NjBfYmwgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC03 NjUsOCArNzY1LDYgQEAgc3RhdGljIGludCBhZHA4ODYwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChkYXRhLT5lbl9hbWJsX3NlbnMpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeXNmc19yZW1vdmVfZ3JvdXAoJmRhdGEt PmJsLT5kZXYua29iaiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAmYWRwODg2MF9ibF9hdHRyX2dyb3VwKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg3MF9ibC5jCj4gYi9kcml2ZXJzL3ZpZGVv L2JhY2tsaWdodC9hZHA4ODcwX2JsLmMKPiBpbmRleCA4YjUyMTNhMzk1MjcuLjViZWNhY2UzZmQw ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODcwX2JsLmMKPiAr KysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODcwX2JsLmMKPiBAQCAtOTI1LDcgKzky NSw3IEBAIHN0YXRpYyBpbnQgYWRwODg3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGlu dCBhZHA4ODcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9p ZCBhZHA4ODcwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgYWRwODg3MF9ibCAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShj bGllbnQpOwo+IMKgCj4gQEAgLTkzNyw4ICs5MzcsNiBAQCBzdGF0aWMgaW50IGFkcDg4NzBfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGRh dGEtPnBkYXRhLT5lbl9hbWJsX3NlbnMpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzeXNmc19yZW1vdmVfZ3JvdXAoJmRhdGEtPmJsLT5kZXYua29iaiwKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmYWRwODg3MF9ibF9hdHRyX2dyb3Vw KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoCNpZmRlZiBD T05GSUdfUE1fU0xFRVAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYXJj eGNubl9ibC5jCj4gYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hcmN4Y25uX2JsLmMKPiBpbmRl eCA3YjFjMGEwZTZjYWQuLjA2MGMwZWVmNmE1MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVv L2JhY2tsaWdodC9hcmN4Y25uX2JsLmMKPiArKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9h cmN4Y25uX2JsLmMKPiBAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbnQgYXJjeGNubl9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2wsCj4gY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlk KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg YXJjeGNubl9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsKQo+ICtzdGF0aWMgdm9pZCBhcmN4 Y25uX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2wpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBhcmN4Y25uICpscCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbCk7Cj4gwqAKPiBAQCAt Mzc2LDggKzM3Niw2IEBAIHN0YXRpYyBpbnQgYXJjeGNubl9yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsKQo+IMKgwqDCoMKgwqDCoMKgwqBscC0+YmwtPnByb3BzLmJyaWdodG5lc3MgPSAwOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGxwLT5ibCk7Cj4g LQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBhcmN4Y25uX2R0X2lkc1tdID0gewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9iZDYxMDcuYwo+IGIvZHJpdmVycy92aWRlby9iYWNrbGln aHQvYmQ2MTA3LmMKPiBpbmRleCA1MTUxODRmYmUzM2EuLmE1MDY4NzJkNDM5NiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9iZDYxMDcuYwo+ICsrKyBiL2RyaXZlcnMvdmlk ZW8vYmFja2xpZ2h0L2JkNjEwNy5jCj4gQEAgLTE3NSwxNCArMTc1LDEyIEBAIHN0YXRpYyBpbnQg YmQ2MTA3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBiZDYxMDdfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGJkNjEwN19yZW1vdmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGJhY2ts aWdodF9kZXZpY2UgKmJhY2tsaWdodCA9Cj4gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0LT5wcm9wcy5icmlnaHRuZXNzID0gMDsKPiDC oMKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoYmFja2xpZ2h0KTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTJjX2RldmljZV9pZCBiZDYxMDdfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vYmFja2xpZ2h0L2xtMzYzMGFfYmwuYwo+IGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv bG0zNjMwYV9ibC5jCj4gaW5kZXggMWQxN2M0Mzk0MzBlLi40NzVmMzU2MzViZjYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG0zNjMwYV9ibC5jCj4gKysrIGIvZHJpdmVy cy92aWRlby9iYWNrbGlnaHQvbG0zNjMwYV9ibC5jCj4gQEAgLTU3OSw3ICs1NzksNyBAQCBzdGF0 aWMgaW50IGxtMzYzMGFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGxtMzYzMGFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGxtMzYzMGFfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlu dCBydmFsOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbG0zNjMwYV9jaGlwICpwY2hpcCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IEBAIC01OTYsNyArNTk2LDYgQEAgc3RhdGljIGlu dCBsbTM2MzBhX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlX2lycShwY2hpcC0+aXJxLCBwY2hpcCk7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXN0cm95X3dvcmtxdWV1ZShwY2hpcC0+aXJx dGhyZWFkKTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbG0zNjMwYV9p ZFtdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbTM2MzlfYmwu Ywo+IGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG0zNjM5X2JsLmMKPiBpbmRleCA0OGMwNDE1 NWE1ZjkuLjY1ODA5MTE2NzFhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdo dC9sbTM2MzlfYmwuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xtMzYzOV9ibC5j Cj4gQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgaW50IGxtMzYzOV9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBsbTM2MzlfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gK3N0YXRpYyB2b2lkIGxtMzYzOV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGxtMzYzOV9jaGlwX2RhdGEgKnBjaGlwID0g aTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtNDAwLDcgKzQwMCw2IEBAIHN0 YXRpYyBpbnQgbG0zNjM5X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDC oMKgwqDCoMKgwqDCoGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZwY2hpcC0+Y2Rldl9mbGFzaCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChwY2hpcC0+YmxlZCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRldmljZV9yZW1vdmVfZmlsZSgmKHBjaGlwLT5ibGVkLT5kZXYpLAo+ICZk ZXZfYXR0cl9ibGVkX21vZGUpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbG0zNjM5X2lkW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xwODU1eF9ibC5jCj4gYi9kcml2 ZXJzL3ZpZGVvL2JhY2tsaWdodC9scDg1NXhfYmwuYwo+IGluZGV4IDJiOWUyYmJiYjAzZS4uNDNi MzljZjY4YjA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xwODU1eF9i bC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbHA4NTV4X2JsLmMKPiBAQCAtNTM3 LDcgKzUzNyw3IEBAIHN0YXRpYyBpbnQgbHA4NTV4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpj bCwKPiBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBscDg1NXhfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbCkKPiArc3RhdGljIHZvaWQgbHA4NTV4X3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqY2wpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBscDg1NXggKmxwID0gaTJj X2dldF9jbGllbnRkYXRhKGNsKTsKPiDCoAo+IEBAIC01NDgsOCArNTQ4LDYgQEAgc3RhdGljIGlu dCBscDg1NXhfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbCkKPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGxwLT5zdXBwbHkpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0 b3JfZGlzYWJsZShscC0+c3VwcGx5KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2dy b3VwKCZscC0+ZGV2LT5rb2JqLCAmbHA4NTV4X2F0dHJfZ3JvdXApOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgbHA4NTV4X2R0X2lkc1tdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9sdjUyMDdscC5jCj4gYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sdjUyMDdscC5j Cj4gaW5kZXggMTg0MmFlOWE1NWY4Li43NjdiODAwZDc5ZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy92aWRlby9iYWNrbGlnaHQvbHY1MjA3bHAuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xp Z2h0L2x2NTIwN2xwLmMKPiBAQCAtMTI0LDE0ICsxMjQsMTIgQEAgc3RhdGljIGludCBsdjUyMDds cF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbHY1MjA3bHBfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGx2NTIwN2xwX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYmFja2xp Z2h0X2RldmljZSAqYmFja2xpZ2h0ID0KPiBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHQtPnByb3BzLmJyaWdodG5lc3MgPSAwOwo+IMKg wqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhiYWNrbGlnaHQpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVj dCBpMmNfZGV2aWNlX2lkIGx2NTIwN2xwX2lkc1tdID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2JhY2tsaWdodC90b3NhX2JsLmMKPiBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3Rv c2FfYmwuYwo+IGluZGV4IDZkZjZmY2QxMzJlMy4uZjU1YjNkNjE2YTg3IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3Rvc2FfYmwuYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8v YmFja2xpZ2h0L3Rvc2FfYmwuYwo+IEBAIC0xMjEsMTIgKzEyMSwxMSBAQCBzdGF0aWMgaW50IHRv c2FfYmxfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50LAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdG9zYV9ibF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdG9zYV9ibF9yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRv c2FfYmxfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gwqDC oMKgwqDCoMKgwqDCoGRhdGEtPmJsID0gTlVMTDsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9tYXZlbi5jCj4gYi9kcml2ZXJzL3ZpZGVv L2ZiZGV2L21hdHJveC9tYXRyb3hmYl9tYXZlbi5jCj4gaW5kZXggOWE5OGM0YTZiYTMzLi5mMmUw Mjk1ODY3M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94 ZmJfbWF2ZW4uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX21h dmVuLmMKPiBAQCAtMTI3NiwxMSArMTI3NiwxMCBAQCBFUlJPUjA6Owo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gZXJyOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbWF2ZW5fcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG1hdmVuX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBtYXZlbl9zaHV0ZG93 bl9jbGllbnQoY2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUoaTJjX2dldF9jbGllbnRk YXRhKGNsaWVudCkpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWF2ZW5faWRbXSA9IHsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9zc2QxMzA3ZmIuYwo+IGIvZHJpdmVycy92aWRlby9m YmRldi9zc2QxMzA3ZmIuYwo+IGluZGV4IDVjNzY1NjU1ZDAwMC4uZmJmMjZjZGZiMWMwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvc3NkMTMwN2ZiLmMKPiArKysgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L3NzZDEzMDdmYi5jCj4gQEAgLTgxNyw3ICs4MTcsNyBAQCBzdGF0aWMgaW50 IHNzZDEzMDdmYl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzc2QxMzA3ZmJfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHNzZDEzMDdmYl9y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IGZiX2luZm8gKmluZm8gPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IHNzZDEzMDdmYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKPiBAQCAt ODM2LDggKzgzNiw2IEBAIHN0YXRpYyBpbnQgc3NkMTMwN2ZiX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoGZiX2RlZmVycmVkX2lvX2NsZWFudXAo aW5mbyk7Cj4gwqDCoMKgwqDCoMKgwqDCoF9fZnJlZV9wYWdlcyhfX3ZhKGluZm8tPmZpeC5zbWVt X3N0YXJ0KSwgZ2V0X29yZGVyKGluZm8tCj4gPmZpeC5zbWVtX2xlbikpOwo+IMKgwqDCoMKgwqDC oMKgwqBmcmFtZWJ1ZmZlcl9yZWxlYXNlKGluZm8pOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNz ZDEzMDdmYl9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy93MS9tYXN0ZXJzL2Rz MjQ4Mi5jCj4gYi9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDgyLmMKPiBpbmRleCA2Yzk2MmU4ODUw MWMuLjYyYzQ0NjE2ZDhhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDgy LmMKPiArKysgYi9kcml2ZXJzL3cxL21hc3RlcnMvZHMyNDgyLmMKPiBAQCAtNTI1LDcgKzUyNSw3 IEBAIHN0YXRpYyBpbnQgZHMyNDgyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCwK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVycjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGRz MjQ4Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgZHMy NDgyX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZHMyNDgyX2RhdGHCoMKgICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNs aWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBpZHg7Cj4gQEAgLTUzOCw3ICs1MzgsNiBAQCBz dGF0aWMgaW50IGRzMjQ4Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIEZyZWUgdGhlIG1lbW9yeSAqLwo+IMKgwqDCoMKgwqDCoMKg wqBrZnJlZShkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg LyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy96aWlyYXZlX3dkdC5jCj4gYi9kcml2 ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMKPiBpbmRleCBjNWE5YjgyMGQ0M2EuLmQwZTg4ODc1 NDQzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMKPiArKysg Yi9kcml2ZXJzL3dhdGNoZG9nL3ppaXJhdmVfd2R0LmMKPiBAQCAtNzA4LDEzICs3MDgsMTEgQEAg c3RhdGljIGludCB6aWlyYXZlX3dkdF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQs Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB6 aWlyYXZlX3dkdF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZv aWQgemlpcmF2ZV93ZHRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB6aWlyYXZlX3dkdF9kYXRhICp3X3ByaXYgPSBpMmNfZ2V0 X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB3YXRjaGRvZ191bnJl Z2lzdGVyX2RldmljZSgmd19wcml2LT53ZGQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHppaXJh dmVfd2R0X2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaTJjLmggYi9pbmNs dWRlL2xpbnV4L2kyYy5oCj4gaW5kZXggZmJkYTVhZGEyYWZjLi4wNjZiNTQxYTBkNWQgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9pMmMuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvaTJjLmgK PiBAQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBpMmNfZHJpdmVyIHsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqAvKiBTdGFuZGFyZCBkcml2ZXIgbW9kZWwgaW50ZXJmYWNlcyAqLwo+IMKgwqDCoMKg wqDCoMKgwqBpbnQgKCpwcm9iZSkoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3Qgc3Ry dWN0Cj4gaTJjX2RldmljZV9pZCAqaWQpOwo+IC3CoMKgwqDCoMKgwqDCoGludCAoKnJlbW92ZSko c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gK8KgwqDCoMKgwqDCoMKgdm9pZCAoKnJlbW92 ZSkoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyog TmV3IGRyaXZlciBtb2RlbCBpbnRlcmZhY2UgdG8gYWlkIHRoZSBzZWFtbGVzcyByZW1vdmFsIG9m Cj4gdGhlCj4gwqDCoMKgwqDCoMKgwqDCoCAqIGN1cnJlbnQgcHJvYmUoKSdzLCBtb3JlIGNvbW1v bmx5IHVudXNlZCB0aGFuIHVzZWQgc2Vjb25kCj4gcGFyYW1ldGVyLgo+IGRpZmYgLS1naXQgYS9s aWIvS2NvbmZpZy5rYXNhbiBiL2xpYi9LY29uZmlnLmthc2FuCj4gaW5kZXggZjA5NzNkYTU4M2Uw Li4zNjZlNjE2MzljYjIgMTAwNjQ0Cj4gLS0tIGEvbGliL0tjb25maWcua2FzYW4KPiArKysgYi9s aWIvS2NvbmZpZy5rYXNhbgo+IEBAIC0xNDksNiArMTQ5LDcgQEAgY29uZmlnIEtBU0FOX1NUQUNL Cj4gwqDCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gS0FTQU5fR0VORVJJQyB8fCBLQVNBTl9TV19U QUdTCj4gwqDCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gIUFSQ0hfRElTQUJMRV9LQVNBTl9JTkxJ TkUKPiDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdCB5IGlmIENDX0lTX0dDQwo+ICvCoMKgwqDCoMKg wqDCoGRlcGVuZHMgb24gIUFSTQo+IMKgwqDCoMKgwqDCoMKgwqBoZWxwCj4gwqDCoMKgwqDCoMKg wqDCoMKgIERpc2FibGVzIHN0YWNrIGluc3RydW1lbnRhdGlvbiBhbmQgdGh1cyBLQVNBTidzIGFi aWxpdHkgdG8KPiBkZXRlY3QKPiDCoMKgwqDCoMKgwqDCoMKgwqAgb3V0LW9mLWJvdW5kcyBidWdz IGluIHN0YWNrIHZhcmlhYmxlcy4KPiBkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvZGVjcy9vbnl4 LmMgYi9zb3VuZC9hb2EvY29kZWNzL29ueXguYwo+IGluZGV4IDFhYmVlODQxY2M0NS4uMmQwZjkw NGFiYTAwIDEwMDY0NAo+IC0tLSBhL3NvdW5kL2FvYS9jb2RlY3Mvb255eC5jCj4gKysrIGIvc291 bmQvYW9hL2NvZGVjcy9vbnl4LmMKPiBAQCAtMTAyOSw3ICsxMDI5LDcgQEAgc3RhdGljIGludCBv bnl4X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiAtRU5PREVWOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb255eF9pMmNfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIG9ueXhfaTJjX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qgb255eCAqb255eCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAg LTEwMzcsNyArMTAzNyw2IEBAIHN0YXRpYyBpbnQgb255eF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgb2Zfbm9kZV9wdXQob255eC0+Y29k ZWMubm9kZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKG9ueXgtPmNvZGVjX2luZm8pOwo+IMKg wqDCoMKgwqDCoMKgwqBrZnJlZShvbnl4KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG9ueXhfaTJjX2lk W10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb2RlY3MvdGFzLmMgYi9zb3VuZC9hb2Ev Y29kZWNzL3Rhcy5jCj4gaW5kZXggYWIxOWEzN2UyYTY4Li5hYjg5NDc1Yjc3MTUgMTAwNjQ0Cj4g LS0tIGEvc291bmQvYW9hL2NvZGVjcy90YXMuYwo+ICsrKyBiL3NvdW5kL2FvYS9jb2RlY3MvdGFz LmMKPiBAQCAtOTEyLDcgKzkxMiw3IEBAIHN0YXRpYyBpbnQgdGFzX2kyY19wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudAo+ICpjbGllbnQsCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdGFzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGFzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRhcyAqdGFzID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHU4IHRtcCA9IFRBU19BQ1Jf QU5BTE9HX1BET1dOOwo+IEBAIC05MjUsNyArOTI1LDYgQEAgc3RhdGljIGludCB0YXNfaTJjX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg bXV0ZXhfZGVzdHJveSgmdGFzLT5tdHgpOwo+IMKgwqDCoMKgwqDCoMKgwqBrZnJlZSh0YXMpOwo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgdGFzX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9zb3VuZC9w Y2kvaGRhL2NzMzVsNDFfaGRhX2kyYy5jCj4gYi9zb3VuZC9wY2kvaGRhL2NzMzVsNDFfaGRhX2ky Yy5jCj4gaW5kZXggZTgxMGIyNzhmYjkxLi5hY2FiOGMwNThlNjYgMTAwNjQ0Cj4gLS0tIGEvc291 bmQvcGNpL2hkYS9jczM1bDQxX2hkYV9pMmMuYwo+ICsrKyBiL3NvdW5kL3BjaS9oZGEvY3MzNWw0 MV9oZGFfaTJjLmMKPiBAQCAtMzAsMTEgKzMwLDkgQEAgc3RhdGljIGludCBjczM1bDQxX2hkYV9p MmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2x0LCBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2x0LAo+ICZjczM1bDQxX3JlZ21hcF9p MmMpKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNzMzVsNDFfaGRhX2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsdCkKPiArc3RhdGljIHZvaWQgY3MzNWw0MV9oZGFfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2x0KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjczM1bDQx X2hkYV9yZW1vdmUoJmNsdC0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBjczM1bDQxX2hk YV9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvcHBjL2tleXdlc3QuYyBiL3NvdW5k L3BwYy9rZXl3ZXN0LmMKPiBpbmRleCA2ZTVkYWFlMThmOWQuLjgwZTUxMDgxNTdlZiAxMDA2NDQK PiAtLS0gYS9zb3VuZC9wcGMva2V5d2VzdC5jCj4gKysrIGIvc291bmQvcHBjL2tleXdlc3QuYwo+ IEBAIC03MSwxNCArNzEsMTIgQEAgc3RhdGljIGludCBrZXl3ZXN0X2F0dGFjaF9hZGFwdGVyKHN0 cnVjdAo+IGkyY19hZGFwdGVyICphZGFwdGVyKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGtleXdlc3RfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGtleXdlc3RfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmICghIGtleXdlc3RfY3R4KQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xpZW50ID09IGtl eXdlc3RfY3R4LT5jbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrZXl3 ZXN0X2N0eC0+Y2xpZW50ID0gTlVMTDsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoAo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2FkYXUxNzYxLWky Yy5jCj4gYi9zb3VuZC9zb2MvY29kZWNzL2FkYXUxNzYxLWkyYy5jCj4gaW5kZXggMDY4M2NhZjg2 YWVhLi4wY2VmZmY0OTU2OWMgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9hZGF1MTc2 MS1pMmMuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvYWRhdTE3NjEtaTJjLmMKPiBAQCAtMzAs MTAgKzMwLDkgQEAgc3RhdGljIGludCBhZGF1MTc2MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWQtPmRyaXZl cl9kYXRhLCBOVUxMKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFkYXUxNzYxX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgYWRhdTE3NjFfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBhZGF1MTd4MV9yZW1vdmUoJmNsaWVudC0+ZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIGFkYXUx NzYxX2kyY19pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9hZGF1MTc4 MS1pMmMuYwo+IGIvc291bmQvc29jL2NvZGVjcy9hZGF1MTc4MS1pMmMuYwo+IGluZGV4IGUwNDZk ZTBlYmNjNy4uMzkwMjFiOGNmYjYyIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvYWRh dTE3ODEtaTJjLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL2FkYXUxNzgxLWkyYy5jCj4gQEAg LTMwLDEwICszMCw5IEBAIHN0YXRpYyBpbnQgYWRhdTE3ODFfaTJjX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlkLT5k cml2ZXJfZGF0YSwgTlVMTCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhZGF1MTc4MV9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGFkYXUxNzgx X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgYWRhdTE3eDFfcmVtb3ZlKCZjbGllbnQtPmRldik7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBh ZGF1MTc4MV9pMmNfaWRzW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWs0 Mzc1LmMgYi9zb3VuZC9zb2MvY29kZWNzL2FrNDM3NS5jCj4gaW5kZXggOWE3YjY2MjAxNmI5Li5i ZmVkMDhmZTRiOWUgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9hazQzNzUuYwo+ICsr KyBiL3NvdW5kL3NvYy9jb2RlY3MvYWs0Mzc1LmMKPiBAQCAtNTgxLDExICs1ODEsOSBAQCBzdGF0 aWMgaW50IGFrNDM3NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFrNDM3NV9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIGFrNDM3NV9pMmNf cmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBt X3J1bnRpbWVfZGlzYWJsZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWs0Mzc1 X29mX21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWs0NDU4LmMg Yi9zb3VuZC9zb2MvY29kZWNzL2FrNDQ1OC5jCj4gaW5kZXggYmFhOWZmNWQwY2U1Li45MTlhYTA5 NzMwNTAgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9hazQ0NTguYwo+ICsrKyBiL3Nv dW5kL3NvYy9jb2RlY3MvYWs0NDU4LmMKPiBAQCAtODI2LDExICs4MjYsOSBAQCBzdGF0aWMgaW50 IGFrNDQ1OF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFrNDQ1OF9pMmNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIGFrNDQ1OF9pMmNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRp bWVfZGlzYWJsZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWs0NDU4X29mX21h dGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWs0NjQxLmMgYi9zb3Vu ZC9zb2MvY29kZWNzL2FrNDY0MS5jCj4gaW5kZXggZDhkOWNjNzEyZDY3Li42NWExMWNkMzlhNDMg MTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9hazQ2NDEuYwo+ICsrKyBiL3NvdW5kL3Nv Yy9jb2RlY3MvYWs0NjQxLmMKPiBAQCAtNjA1LDcgKzYwNSw3IEBAIHN0YXRpYyBpbnQgYWs0NjQx X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBhazQ2NDFfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBhazQ2NDFfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgYWs0NjQx X3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gaTJjLT5kZXYucGxhdGZvcm1fZGF0YTsKPiDCoAo+IEBA IC02MTcsOCArNjE3LDYgQEAgc3RhdGljIGludCBhazQ2NDFfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZ3Bp b19pc192YWxpZChwZGF0YS0+Z3Bpb19ucGRuKSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBncGlvX2ZyZWUocGRhdGEtPmdwaW9fbnBkbik7Cj4gwqDC oMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhazQ2NDFfaTJjX2lkW10gPSB7 Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWs1NTU4LmMgYi9zb3VuZC9zb2MvY29k ZWNzL2FrNTU1OC5jCj4gaW5kZXggYzk0Y2ZkZTNlNGE4Li5kZjgxNDA5MDdhYzUgMTAwNjQ0Cj4g LS0tIGEvc291bmQvc29jL2NvZGVjcy9hazU1NTguYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3Mv YWs1NTU4LmMKPiBAQCAtNDgxLDExICs0ODEsOSBAQCBzdGF0aWMgaW50IGFrNTU1OF9pMmNfcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFrNTU1OF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIGFrNTU1OF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmaTJj LT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWs1NTU4X2kyY19kdF9pZHNbXSBfX21heWJl X3VudXNlZAo+ID0gewo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2NzMzVsMzIuYyBi L3NvdW5kL3NvYy9jb2RlY3MvY3MzNWwzMi5jCj4gaW5kZXggYmFkZmM1NWJjNWZhLi43YWVjMTI2 ODhkYTkgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9jczM1bDMyLmMKPiArKysgYi9z b3VuZC9zb2MvY29kZWNzL2NzMzVsMzIuYwo+IEBAIC00OTgsMTQgKzQ5OCwxMiBAQCBzdGF0aWMg aW50IGNzMzVsMzJfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyY19jbGllbnQpCj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczM1 bDMyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQpCj4gK3N0YXRpYyB2 b2lkIGNzMzVsMzJfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNzMzVsMzJfcHJpdmF0ZSAqY3MzNWwzMiA9Cj4g aTJjX2dldF9jbGllbnRkYXRhKGkyY19jbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8q IEhvbGQgZG93biByZXNldCAqLwo+IMKgwqDCoMKgwqDCoMKgwqBncGlvZF9zZXRfdmFsdWVfY2Fu c2xlZXAoY3MzNWwzMi0+cmVzZXRfZ3BpbywgMCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9jb2RlY3MvY3MzNWwzMy5jIGIvc291bmQvc29jL2NvZGVjcy9jczM1bDMzLmMKPiBpbmRl eCA0N2RjMGY2ZDkwYTIuLjQ2OTcyYzg2ZmQ4OCAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29k ZWNzL2NzMzVsMzMuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWwzMy5jCj4gQEAgLTEy NTEsNyArMTI1MSw3IEBAIHN0YXRpYyBpbnQgY3MzNWwzM19pMmNfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqaTJjX2NsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IGNzMzVsMzNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjczM1bDMzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNzMzVsMzNfcHJpdmF0 ZSAqY3MzNWwzMyA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKgCj4gQEAgLTEyNjAs OCArMTI2MCw2IEBAIHN0YXRpYyBpbnQgY3MzNWwzM19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGll bnQtPmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoY3MzNWwz My0+bnVtX2NvcmVfc3VwcGxpZXMsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj czM1bDMzLT5jb3JlX3N1cHBsaWVzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNzMzVsMzNfb2Zf bWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczM1bDM0LmMgYi9z b3VuZC9zb2MvY29kZWNzL2NzMzVsMzQuYwo+IGluZGV4IDUwZDUwOWEwNjA3MS4uYzM2YjgyNGI2 NmU2IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWwzNC5jCj4gKysrIGIvc291 bmQvc29jL2NvZGVjcy9jczM1bDM0LmMKPiBAQCAtMTEyOSw3ICsxMTI5LDcgQEAgc3RhdGljIGlu dCBjczM1bDM0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmNfY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3MzNWwz NF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNz MzVsMzRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgY3MzNWwzNF9wcml2YXRlICpjczM1bDM0ID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gwqAKPiBAQCAtMTEzOCw4ICsxMTM4LDYgQEAgc3RhdGljIGludCBj czM1bDM0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmNsaWVudC0+ZGV2KTsKPiDCoMKgwqDCoMKgwqDC oMKgcmVndWxhdG9yX2J1bGtfZGlzYWJsZShjczM1bDM0LT5udW1fY29yZV9zdXBwbGllcywKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNzMzVsMzQtPmNvcmVfc3VwcGxpZXMpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBf X21heWJlX3VudXNlZCBjczM1bDM0X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikK PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczM1bDM1LmMgYi9zb3VuZC9zb2MvY29k ZWNzL2NzMzVsMzUuYwo+IGluZGV4IDZiNzBhZmI3MGE2Ny4uMGY2OTY4YTI5YWNlIDEwMDY0NAo+ IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWwzNS5jCj4gKysrIGIvc291bmQvc29jL2NvZGVj cy9jczM1bDM1LmMKPiBAQCAtMTYyOCwxNCArMTYyOCwxMiBAQCBzdGF0aWMgaW50IGNzMzVsMzVf aTJjX3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKmkyY19jbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczM1bDM1X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzMzVsMzVf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudCkKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGNzMzVsMzVfcHJpdmF0ZSAqY3MzNWwzNSA9Cj4gaTJjX2dldF9jbGll bnRkYXRhKGkyY19jbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxr X2Rpc2FibGUoY3MzNWwzNS0+bnVtX3N1cHBsaWVzLCBjczM1bDM1LQo+ID5zdXBwbGllcyk7Cj4g wqDCoMKgwqDCoMKgwqDCoGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjczM1bDM1LT5yZXNldF9n cGlvLCAwKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNzMzVsMzVfb2ZfbWF0Y2hbXSA9IHsKPiBk aWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczM1bDM2LmMgYi9zb3VuZC9zb2MvY29kZWNz L2NzMzVsMzYuYwo+IGluZGV4IGRmZTg1ZGMyY2QyMC4uODA4NDQ0NzEzMDlkIDEwMDY0NAo+IC0t LSBhL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWwzNi5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9j czM1bDM2LmMKPiBAQCAtMTkxMSw3ICsxOTExLDcgQEAgc3RhdGljIGludCBjczM1bDM2X2kyY19w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmNfY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3MzNWwzNl9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzMzVsMzZfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgY3MzNWwzNl9wcml2YXRlICpjczM1bDM2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqAKPiBAQCAtMTkyNSw4ICsxOTI1LDYgQEAgc3RhdGljIGludCBjczM1bDM2X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGNzMzVsMzYtPnJlc2V0X2dwaW8sIDAp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoY3MzNWwzNi0+ bnVtX3N1cHBsaWVzLCBjczM1bDM2LQo+ID5zdXBwbGllcyk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+IMKgfQo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY3Mz NWwzNl9vZl9tYXRjaFtdID0gewo+IMKgwqDCoMKgwqDCoMKgwqB7LmNvbXBhdGlibGUgPSAiY2ly cnVzLGNzMzVsMzYifSwKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczM1bDQxLWky Yy5jCj4gYi9zb3VuZC9zb2MvY29kZWNzL2NzMzVsNDEtaTJjLmMKPiBpbmRleCAzN2M3MDNjMDhm ZDUuLjM2NzZiNTk2ZjYwYiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL2NzMzVsNDEt aTJjLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL2NzMzVsNDEtaTJjLmMKPiBAQCAtNTYsMTMg KzU2LDExIEBAIHN0YXRpYyBpbnQgY3MzNWw0MV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQK PiAqY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gY3MzNWw0MV9wcm9iZShjczM1bDQx LCBod19jZmcpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3MzNWw0MV9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzMzVsNDFfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgY3MzNWw0MV9wcml2YXRlICpjczM1bDQxID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgY3MzNWw0MV9yZW1vdmUoY3MzNWw0MSk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX09GCj4g ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvY3MzNWw0NS1pMmMuYwo+IGIvc291bmQvc29j L2NvZGVjcy9jczM1bDQ1LWkyYy5jCj4gaW5kZXggMDZjMmRkZmZiOWM1Li4zOWQyODY0MTQyOWUg MTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9jczM1bDQ1LWkyYy5jCj4gKysrIGIvc291 bmQvc29jL2NvZGVjcy9jczM1bDQ1LWkyYy5jCj4gQEAgLTM2LDEzICszNiwxMSBAQCBzdGF0aWMg aW50IGNzMzVsNDVfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIGNzMzVsNDVfcHJvYmUoY3MzNWw0NSk7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIGludCBjczM1bDQ1X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgY3MzNWw0NV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjczM1bDQ1X3ByaXZhdGUgKmNzMzVs NDUgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBj czM1bDQ1X3JlbW92ZShjczM1bDQ1KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4g wqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNzMzVsNDVfb2Zf bWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczQyMzQuYyBiL3Nv dW5kL3NvYy9jb2RlY3MvY3M0MjM0LmMKPiBpbmRleCA4ODFjNWJhNzBjMGUuLjE4YmRkZWI2Mzc2 MiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL2NzNDIzNC5jCj4gKysrIGIvc291bmQv c29jL2NvZGVjcy9jczQyMzQuYwo+IEBAIC04NTEsNyArODUxLDcgQEAgc3RhdGljIGludCBjczQy MzRfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyY19jbGllbnQpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczQyMzRfaTJjX3Jl bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudCkKPiArc3RhdGljIHZvaWQgY3M0MjM0 X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQpCj4gwqB7Cj4gwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBjczQyMzQgKmNzNDIzNCA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmNf Y2xpZW50KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2ID0gJmkyY19jbGll bnQtPmRldjsKPiBAQCAtODU5LDggKzg1OSw2IEBAIHN0YXRpYyBpbnQgY3M0MjM0X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjX2NsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgc25k X3NvY191bnJlZ2lzdGVyX2NvbXBvbmVudChkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50 aW1lX2Rpc2FibGUoZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgY3M0MjM0X3NodXRkb3duKGNzNDIz NCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg aW50IF9fbWF5YmVfdW51c2VkIGNzNDIzNF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvY3M0MjY1LmMgYi9zb3VuZC9zb2Mv Y29kZWNzL2NzNDI2NS5jCj4gaW5kZXggODZiZmE4ZDVlYzc4Li5jMTZjMGEwZDNiNTYgMTAwNjQ0 Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9jczQyNjUuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2Rl Y3MvY3M0MjY1LmMKPiBAQCAtNjI0LDE0ICs2MjQsMTIgQEAgc3RhdGljIGludCBjczQyNjVfaTJj X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyY19jbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQVJSQVlfU0laRShjczQyNjVfZGFpKSk7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjczQyNjVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBjczQyNjVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2Ns aWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY3M0MjY1X3ByaXZhdGUg KmNzNDI2NSA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDC oGlmIChjczQyNjUtPnJlc2V0X2dwaW8pCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3M0MjY1LT5yZXNldF9ncGlvLCAwKTsKPiAtCj4g LcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGNzNDI2NV9vZl9tYXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9zb3Vu ZC9zb2MvY29kZWNzL2NzNDI3MC5jIGIvc291bmQvc29jL2NvZGVjcy9jczQyNzAuYwo+IGluZGV4 IDUzMWY2M2IwMTU1NC4uNmJmZGRiMWI5OTY4IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2Rl Y3MvY3M0MjcwLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL2NzNDI3MC5jCj4gQEAgLTY1MSwx MyArNjUxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBjczQyNzBfcmVn bWFwCj4gPSB7Cj4gwqAgKiBUaGlzIGZ1bmN0aW9uIHB1dHMgdGhlIGNoaXAgaW50byBsb3cgcG93 ZXIgbW9kZSB3aGVuIHRoZSBpMmMKPiBkZXZpY2UKPiDCoCAqIGlzIHJlbW92ZWQuCj4gwqAgKi8K PiAtc3RhdGljIGludCBjczQyNzBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2Ns aWVudCkKPiArc3RhdGljIHZvaWQgY3M0MjcwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmkyY19jbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjczQyNzBfcHJpdmF0 ZSAqY3M0MjcwID0KPiBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjX2NsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGNzNDI3MC0+cmVzZXRfZ3Bpbywg MCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAvKioKPiBk aWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9jczQybDQyLmMgYi9zb3VuZC9zb2MvY29kZWNz L2NzNDJsNDIuYwo+IGluZGV4IDRmYWRlMjM4ODc5Ny4uYWI4NDhmZTVmNzIxIDEwMDY0NAo+IC0t LSBhL3NvdW5kL3NvYy9jb2RlY3MvY3M0Mmw0Mi5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9j czQybDQyLmMKPiBAQCAtMjM0Miw3ICsyMzQyLDcgQEAgc3RhdGljIGludCBjczQybDQyX2kyY19w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmNfY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3M0Mmw0Ml9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICppMmNfY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjczQybDQyX2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBjczQybDQyX3ByaXZhdGUgKmNzNDJsNDIgPQo+IGkyY19nZXRfY2xpZW50ZGF0 YShpMmNfY2xpZW50KTsKPiDCoAo+IEBAIC0yMzU5LDggKzIzNTksNiBAQCBzdGF0aWMgaW50IGNz NDJsNDJfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmNfY2xpZW50KQo+IMKgCj4g wqDCoMKgwqDCoMKgwqDCoGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChjczQybDQyLT5yZXNldF9n cGlvLCAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9T SVpFKGNzNDJsNDItPnN1cHBsaWVzKSwKPiBjczQybDQyLT5zdXBwbGllcyk7Cj4gLQo+IC3CoMKg wqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGRl dl9wbV9vcHMgY3M0Mmw0Ml9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2Rl Y3MvY3M0Mmw1MS1pMmMuYwo+IGIvc291bmQvc29jL2NvZGVjcy9jczQybDUxLWkyYy5jCj4gaW5k ZXggMzYxM2ZiMTJkNjIzLi44NTIzODMzOWZiY2EgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2Nv ZGVjcy9jczQybDUxLWkyYy5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9jczQybDUxLWkyYy5j Cj4gQEAgLTI4LDExICsyOCw5IEBAIHN0YXRpYyBpbnQgY3M0Mmw1MV9pMmNfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gY3M0Mmw1MV9wcm9i ZSgmaTJjLT5kZXYsIGRldm1fcmVnbWFwX2luaXRfaTJjKGkyYywKPiAmY29uZmlnKSk7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBjczQybDUxX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQg KmkyYykKPiArc3RhdGljIHZvaWQgY3M0Mmw1MV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGNzNDJsNTFfcmVtb3ZlKCZpMmMtPmRldik7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29u c3Qgc3RydWN0IGRldl9wbV9vcHMgY3M0Mmw1MV9wbV9vcHMgPSB7Cj4gZGlmZiAtLWdpdCBhL3Nv dW5kL3NvYy9jb2RlY3MvY3M0Mmw1Ni5jIGIvc291bmQvc29jL2NvZGVjcy9jczQybDU2LmMKPiBp bmRleCA1MTBjOTQyNjViMWYuLmQxY2FlMjRkMDE1ZiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2Mv Y29kZWNzL2NzNDJsNTYuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvY3M0Mmw1Ni5jCj4gQEAg LTEzMjEsMTMgKzEzMjEsMTIgQEAgc3RhdGljIGludCBjczQybDU2X2kyY19wcm9iZShzdHJ1Y3QK PiBpMmNfY2xpZW50ICppMmNfY2xpZW50KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgY3M0Mmw1Nl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzNDJsNTZfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY3M0Mmw1Nl9w cml2YXRlICpjczQybDU2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKGNzNDJsNTYtPnN1 cHBsaWVzKSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY3M0Mmw1Ni0+c3VwcGxpZXMpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjczQy bDU2X29mX21hdGNoW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvY3M0Mnh4 OC1pMmMuYwo+IGIvc291bmQvc29jL2NvZGVjcy9jczQyeHg4LWkyYy5jCj4gaW5kZXggY2IwNmEw NmQ0OGIwLi5iZDgwZTlmYzkwN2YgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9jczQy eHg4LWkyYy5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9jczQyeHg4LWkyYy5jCj4gQEAgLTMw LDExICszMCw5IEBAIHN0YXRpYyBpbnQgY3M0Mnh4OF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGNzNDJ4eDhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0 aWMgdm9pZCBjczQyeHg4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZpMmMtPmRldik7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19k ZXZpY2VfaWQgY3M0Mnh4OF9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2Nv ZGVjcy9jczQzMTMwLmMgYi9zb3VuZC9zb2MvY29kZWNzL2NzNDMxMzAuYwo+IGluZGV4IGEyYmNl MGY5ZjI0Ny4uOTQ0YmI5YTI2Y2E5IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvY3M0 MzEzMC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9jczQzMTMwLmMKPiBAQCAtMjU4NCw3ICsy NTg0LDcgQEAgc3RhdGljIGludCBjczQzMTMwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBjczQzMTMwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgY3M0MzEzMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjczQzMTMwX3ByaXZhdGUgKmNzNDMxMzAg PSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0yNjExLDggKzI2MTEsNiBA QCBzdGF0aWMgaW50IGNzNDMxMzBfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGll bnQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZjbGllbnQtPmRl dik7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQ1M0MzEzMF9OVU1f U1VQUExJRVMsIGNzNDMxMzAtCj4gPnN1cHBsaWVzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY3M0MzEzMF9y dW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZQo+ICpkZXYpCj4gZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9jb2RlY3MvY3M0MzQ5LmMgYi9zb3VuZC9zb2MvY29kZWNzL2NzNDM0OS5jCj4gaW5kZXgg NzA2OWU5YjU0ODU3Li40MTQ3MmVkMjIyMDkgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVj cy9jczQzNDkuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvY3M0MzQ5LmMKPiBAQCAtMzA2LDE0 ICszMDYsMTIgQEAgc3RhdGljIGludCBjczQzNDlfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50 Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZjczQzNDlfZGFp LCAxKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNzNDM0OV9pMmNfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGNzNDM0OV9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjczQz NDlfcHJpdmF0ZSAqY3M0MzQ5ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgLyogSG9sZCBkb3duIHJlc2V0ICovCj4gwqDCoMKgwqDCoMKgwqDCoGdw aW9kX3NldF92YWx1ZV9jYW5zbGVlcChjczQzNDktPnJlc2V0X2dwaW8sIDApOwo+IC0KPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJR19QTQo+IGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2NzNTNsMzAuYyBiL3NvdW5kL3NvYy9jb2RlY3Mv Y3M1M2wzMC5jCj4gaW5kZXggMzYwY2EyZmZkNTA2Li43MTI5OGExOGVlMWEgMTAwNjQ0Cj4gLS0t IGEvc291bmQvc29jL2NvZGVjcy9jczUzbDMwLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL2Nz NTNsMzAuYwo+IEBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBzdGF0aWMgaW50IGNzNTNsMzBfaTJjX3By b2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNzNTNsMzBfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBjczUzbDMwX2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNz NTNsMzBfcHJpdmF0ZSAqY3M1M2wzMCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IMKg Cj4gQEAgLTEwNTMsOCArMTA1Myw2IEBAIHN0YXRpYyBpbnQgY3M1M2wzMF9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0 b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3M1M2wzMC0+c3VwcGxpZXMpLAo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjczUz bDMwLT5zdXBwbGllcyk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvY3gy MDcyeC5jIGIvc291bmQvc29jL2NvZGVjcy9jeDIwNzJ4LmMKPiBpbmRleCBiMzVkZWJiNTgxOGQu LmMyNDkxNWY3ZGVjMyAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL2N4MjA3MnguYwo+ ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvY3gyMDcyeC5jCj4gQEAgLTE2NzYsMTAgKzE2NzYsOSBA QCBzdGF0aWMgaW50IGN4MjA3MnhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjeDIw NzJ4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgY3gy MDcyeF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJsZSgmaTJjLT5kZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQg Y3gyMDcyeF9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9tYXg5 ODA5MC5jCj4gYi9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMKPiBpbmRleCA1NzYyNzdhODJk NDEuLjQxNmU2ZjY2MDU0MSAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkw LmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMKPiBAQCAtMjYxOCwxMSArMjYx OCw5IEBAIHN0YXRpYyB2b2lkIG1heDk4MDkwX2kyY19zaHV0ZG93bihzdHJ1Y3QKPiBpMmNfY2xp ZW50ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoG1zbGVlcCg0MCk7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBtYXg5ODA5MF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4g K3N0YXRpYyB2b2lkIG1heDk4MDkwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgbWF4OTgwOTBfaTJjX3NodXRkb3duKGNsaWVudCk7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAjaWZkZWYgQ09O RklHX1BNCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbWF4OTg2MC5jIGIvc291bmQv c29jL2NvZGVjcy9tYXg5ODYwLmMKPiBpbmRleCA4MmYyMGE4ZTI3YWQuLjJiMGQwMjk4ZGE4MyAx MDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL21heDk4NjAuYwo+ICsrKyBiL3NvdW5kL3Nv Yy9jb2RlY3MvbWF4OTg2MC5jCj4gQEAgLTcwMiwxNCArNzAyLDEzIEBAIHN0YXRpYyBpbnQgbWF4 OTg2MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBtYXg5ODYwX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBtYXg5ODYwX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmaTJjLT5kZXY7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXg5ODYwX3ByaXYgKm1heDk4 NjAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50 aW1lX2Rpc2FibGUoZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgcmVndWxhdG9yX2Rpc2FibGUobWF4 OTg2MC0+ZHZkZGlvKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIG1heDk4NjBfaTJjX2lkW10gPSB7Cj4g ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbWF4OTg5MjcuYwo+IGIvc291bmQvc29jL2Nv ZGVjcy9tYXg5ODkyNy5jCj4gaW5kZXggYjdjZmY3NmQ3YjViLi5jOTY5NGJhOWMzNDEgMTAwNjQ0 Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9tYXg5ODkyNy5jCj4gKysrIGIvc291bmQvc29jL2Nv ZGVjcy9tYXg5ODkyNy5jCj4gQEAgLTkzNSwxNSArOTM1LDEzIEBAIHN0YXRpYyBpbnQgbWF4OTg5 MjdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG1heDk4OTI3X2kyY19yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgbWF4OTg5MjdfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bWF4OTg5MjdfcHJpdiAqbWF4OTg5MjcgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqBpZiAobWF4OTg5MjctPnJlc2V0X2dwaW8pIHsKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChtYXg5ODkyNy0+ cmVzZXRfZ3BpbywgMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBtYXg5ODkyN19pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9t dDY2NjAuYyBiL3NvdW5kL3NvYy9jb2RlY3MvbXQ2NjYwLmMKPiBpbmRleCBiYTExNTU1Nzk2YWQu LjQ5NzFjZDBiOTBmOCAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL210NjY2MC5jCj4g KysrIGIvc291bmQvc29jL2NvZGVjcy9tdDY2NjAuYwo+IEBAIC01MTYsMTQgKzUxNiwxMyBAQCBz dGF0aWMgaW50IG10NjY2MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgbXQ2 NjYwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQg bXQ2NjYwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IG10NjY2MF9jaGlwICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKGNoaXAt PmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChjaGlwLT5k ZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9kZXN0cm95KCZjaGlwLT5pb19sb2NrKTsKPiAt wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX21heWJl X3VudXNlZCBtdDY2NjBfaTJjX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlCj4gKmRldikK PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9uYXU4ODIxLmMgYi9zb3VuZC9zb2MvY29k ZWNzL25hdTg4MjEuYwo+IGluZGV4IGNlNGU3ZjQ2YmIwNi4uZGNhZTQxYmEyZTAyIDEwMDY0NAo+ IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvbmF1ODgyMS5jCj4gKysrIGIvc291bmQvc29jL2NvZGVj cy9uYXU4ODIxLmMKPiBAQCAtMTY2NSwxMyArMTY2NSwxMSBAQCBzdGF0aWMgaW50IG5hdTg4MjFf aTJjX3Byb2JlKHN0cnVjdAo+IGkyY19jbGllbnQgKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IG5hdTg4MjFfaTJjX3JlbW92ZShzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudCkKPiArc3RhdGljIHZvaWQgbmF1ODgyMV9pMmNfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmNfY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbmF1ODgyMSAqbmF1ODgyMSA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmNfY2xpZW50 KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZtX2ZyZWVfaXJxKG5hdTg4MjEtPmRldiwgbmF1 ODgyMS0+aXJxLCBuYXU4ODIxKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBuYXU4ODIxX2kyY19p ZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9uYXU4ODI1LmMgYi9zb3Vu ZC9zb2MvY29kZWNzL25hdTg4MjUuYwo+IGluZGV4IDIwZTQ1YTMzN2I4Zi4uYmQzNGM4NDUwN2Rh IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvbmF1ODgyNS5jCj4gKysrIGIvc291bmQv c29jL2NvZGVjcy9uYXU4ODI1LmMKPiBAQCAtMjY2OSwxMCArMjY2OSw4IEBAIHN0YXRpYyBpbnQg bmF1ODgyNV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgJm5hdTg4MjVfZGFpLCAxKTsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IG5hdTg4MjVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IC17 Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gLX0KPiArc3RhdGljIHZvaWQgbmF1ODgyNV9p MmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3t9Cj4gwqAKPiDCoHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBuYXU4ODI1X2kyY19pZHNbXSA9IHsKPiDCoMKg wqDCoMKgwqDCoMKgeyAibmF1ODgyNSIsIDAgfSwKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2Nv ZGVjcy9wY20xNzg5LWkyYy5jCj4gYi9zb3VuZC9zb2MvY29kZWNzL3BjbTE3ODktaTJjLmMKPiBp bmRleCAxZDJmNzQ4MGE2ZTQuLmZhZmUwZGNiZTRlYSAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2Mv Y29kZWNzL3BjbTE3ODktaTJjLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3BjbTE3ODktaTJj LmMKPiBAQCAtMjcsMTEgKzI3LDkgQEAgc3RhdGljIGludCBwY20xNzg5X2kyY19wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBwY20xNzg5 X2NvbW1vbl9pbml0KCZjbGllbnQtPmRldiwgcmVnbWFwKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IHBjbTE3ODlfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0 aWMgdm9pZCBwY20xNzg5X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgcGNtMTc4OV9jb21tb25fZXhpdCgmY2xpZW50LT5kZXYpOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVmIENPTkZJ R19PRgo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3BjbTMxNjhhLWkyYy5jCj4gYi9z b3VuZC9zb2MvY29kZWNzL3BjbTMxNjhhLWkyYy5jCj4gaW5kZXggYzBmYTBkYzgwZThmLi5hMGVl YzgyZTk4NzIgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9wY20zMTY4YS1pMmMuYwo+ ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvcGNtMzE2OGEtaTJjLmMKPiBAQCAtMjYsMTEgKzI2LDkg QEAgc3RhdGljIGludCBwY20zMTY4YV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJj KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcGNtMzE2OGFfcHJvYmUoJmkyYy0+ZGV2LCByZWdt YXApOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcGNtMzE2OGFfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBwY20zMTY4YV9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBjbTMxNjhhX3JlbW92 ZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHBjbTMxNjhhX2kyY19pZFtdID0g ewo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3BjbTUxMngtaTJjLmMKPiBiL3NvdW5k L3NvYy9jb2RlY3MvcGNtNTEyeC1pMmMuYwo+IGluZGV4IDgxNzU0ZTE0MWE1NS4uOWRmYmJlOGY0 YTBiIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvcGNtNTEyeC1pMmMuYwo+ICsrKyBi L3NvdW5kL3NvYy9jb2RlY3MvcGNtNTEyeC1pMmMuYwo+IEBAIC0yOSwxMCArMjksOSBAQCBzdGF0 aWMgaW50IHBjbTUxMnhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIHBjbTUxMnhfcHJvYmUoJmkyYy0+ZGV2LCByZWdtYXApOwo+IMKg fQo+IMKgCj4gLXN0YXRpYyBpbnQgcGNtNTEyeF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gK3N0YXRpYyB2b2lkIHBjbTUxMnhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBwY201MTJ4X3JlbW92ZSgmaTJjLT5kZXYp Owo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qg c3RydWN0IGkyY19kZXZpY2VfaWQgcGNtNTEyeF9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy9ydDI3NC5jIGIvc291bmQvc29jL2NvZGVjcy9ydDI3NC5jCj4gaW5k ZXggYWIwOTNiZGI1NTUyLi5jYjIxNDdmODY4MTggMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2Nv ZGVjcy9ydDI3NC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDI3NC5jCj4gQEAgLTEyMDcs MTQgKzEyMDcsMTIgQEAgc3RhdGljIGludCBydDI3NF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgcnQyNzRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0 aWMgdm9pZCBydDI3NF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDI3NF9wcml2ICpydDI3NCA9IGkyY19nZXRfY2xpZW50 ZGF0YShpMmMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChpMmMtPmlycSkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGkyYy0+aXJxLCBydDI3NCk7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy9ydDI4Ni5jIGIvc291bmQvc29jL2NvZGVjcy9ydDI4Ni5jCj4gaW5k ZXggYWQ4ZWExZmE3YzIzLi5jNjZkYjA3NjBhMGYgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2Nv ZGVjcy9ydDI4Ni5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDI4Ni5jCj4gQEAgLTEyNTQs MTQgKzEyNTQsMTIgQEAgc3RhdGljIGludCBydDI4Nl9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgcnQyODZfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0 aWMgdm9pZCBydDI4Nl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDI4Nl9wcml2ICpydDI4NiA9IGkyY19nZXRfY2xpZW50 ZGF0YShpMmMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChpMmMtPmlycSkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGkyYy0+aXJxLCBydDI4Nik7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy9ydDI5OC5jIGIvc291bmQvc29jL2NvZGVjcy9ydDI5OC5jCj4gaW5k ZXggYzI5MTc4NmRjODJkLi45ZjQ0ZWFiZmRiZGIgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2Nv ZGVjcy9ydDI5OC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDI5OC5jCj4gQEAgLTEyOTcs MTQgKzEyOTcsMTIgQEAgc3RhdGljIGludCBydDI5OF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgcnQyOThfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0 aWMgdm9pZCBydDI5OF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDI5OF9wcml2ICpydDI5OCA9IGkyY19nZXRfY2xpZW50 ZGF0YShpMmMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChpMmMtPmlycSkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWVfaXJxKGkyYy0+aXJxLCBydDI5OCk7Cj4gLQo+ IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqAKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy9ydDU2MTYuYyBiL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NjE2LmMKPiBp bmRleCAzN2YxYmY1NTJlZmYuLjdhOTk0YWJlZWRiMCAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2Mv Y29kZWNzL3J0NTYxNi5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDU2MTYuYwo+IEBAIC0x Mzg5LDEwICsxMzg5LDggQEAgc3RhdGljIGludCBydDU2MTZfaTJjX3Byb2JlKHN0cnVjdCBpMmNf Y2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBydDU2MTZfZGFpLAo+IEFSUkFZX1NJ WkUocnQ1NjE2X2RhaSkpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcnQ1NjE2X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IC19Cj4gK3N0YXRpYyB2b2lkIHJ0NTYxNl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gK3t9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHJ0NTYxNl9pMmNfc2h1dGRvd24oc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2Nv ZGVjcy9ydDU2MzEuYyBiL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NjMxLmMKPiBpbmRleCBjOTQxZTg3 ODQ3MWMuLmQ4MjI2NGVkZDI1YyAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL3J0NTYz MS5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDU2MzEuYwo+IEBAIC0xNzIxLDEwICsxNzIx LDggQEAgc3RhdGljIGludCBydDU2MzFfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmky YykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IHJ0NTYzMV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gLXsKPiAtwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiAtfQo+ICtzdGF0aWMgdm9pZCBydDU2MzFfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICt7fQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0 IGkyY19kcml2ZXIgcnQ1NjMxX2kyY19kcml2ZXIgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoC5kcml2 ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NjQ1LmMgYi9zb3VuZC9z b2MvY29kZWNzL3J0NTY0NS5jCj4gaW5kZXggNTA3YWJhOGRlM2NjLi5lNzdiZGJjMWEwOTggMTAw NjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9ydDU2NDUuYwo+ICsrKyBiL3NvdW5kL3NvYy9j b2RlY3MvcnQ1NjQ1LmMKPiBAQCAtNDE0Niw3ICs0MTQ2LDcgQEAgc3RhdGljIGludCBydDU2NDVf aTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHJ0NTY0NV9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICppMmMpCj4gK3N0YXRpYyB2b2lkIHJ0NTY0NV9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDU2NDVf cHJpdiAqcnQ1NjQ1ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7Cj4gwqAKPiBAQCAtNDE2Myw4 ICs0MTYzLDYgQEAgc3RhdGljIGludCBydDU2NDVfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmcnQ1 NjQ1LT5yY2Nsb2NrX3dvcmspOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxr X2Rpc2FibGUoQVJSQVlfU0laRShydDU2NDUtPnN1cHBsaWVzKSwgcnQ1NjQ1LQo+ID5zdXBwbGll cyk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMg dm9pZCBydDU2NDVfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gZGlmZiAt LWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NjYzLmMgYi9zb3VuZC9zb2MvY29kZWNzL3J0NTY2 My5jCj4gaW5kZXggZTUxZWVkOGE3OWFiLi4xNTI5NmUwZmE1NDUgMTAwNjQ0Cj4gLS0tIGEvc291 bmQvc29jL2NvZGVjcy9ydDU2NjMuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NjYzLmMK PiBAQCAtMzcxMSw3ICszNzExLDcgQEAgc3RhdGljIGludCBydDU2NjNfaTJjX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgaW50IHJ0NTY2M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMpCj4gK3N0YXRpYyB2b2lkIHJ0NTY2M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydDU2NjNfcHJpdiAqcnQ1NjYzID0g aTJjX2dldF9jbGllbnRkYXRhKGkyYyk7Cj4gwqAKPiBAQCAtMzcxOSw4ICszNzE5LDYgQEAgc3Rh dGljIGludCBydDU2NjNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlX2lycShpMmMtPmlycSwgcnQ1NjYzKTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUo cnQ1NjYzLT5zdXBwbGllcyksIHJ0NTY2My0KPiA+c3VwcGxpZXMpOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgcnQ1NjYzX2kyY19zaHV0 ZG93bihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2Mv Y29kZWNzL3J0NTY3MC5jIGIvc291bmQvc29jL2NvZGVjcy9ydDU2NzAuYwo+IGluZGV4IDhhOTdm NmRiMDRkNS4uZWI3M2UyNjI0NTdjIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1 NjcwLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3J0NTY3MC5jCj4gQEAgLTMzMjEsMTEgKzMz MjEsOSBAQCBzdGF0aWMgaW50IHJ0NTY3MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAq aTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBp bnQgcnQ1NjcwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZv aWQgcnQ1NjcwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgcG1fcnVudGltZV9kaXNhYmxlKCZpMmMtPmRldik7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIg cnQ1NjcwX2kyY19kcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1 Njc3LmMgYi9zb3VuZC9zb2MvY29kZWNzL3J0NTY3Ny5jCj4gaW5kZXggNGE4YzI2N2Q0ZmJjLi4z MTYxMDIyZjA3NTcgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9ydDU2NzcuYwo+ICsr KyBiL3NvdW5kL3NvYy9jb2RlY3MvcnQ1Njc3LmMKPiBAQCAtNTY5NCwxMSArNTY5NCw5IEBAIHN0 YXRpYyBpbnQgcnQ1Njc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcnQ1Njc3X2RhaSwKPiBBUlJBWV9TSVpFKHJ0NTY3N19kYWkpKTsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgaW50IHJ0NTY3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gK3N0YXRpYyB2b2lkIHJ0NTY3N19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHJ0NTY3N19mcmVlX2dwaW8oaTJjKTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3Qg aTJjX2RyaXZlciBydDU2NzdfaTJjX2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29j L2NvZGVjcy9ydDU2ODItaTJjLmMgYi9zb3VuZC9zb2MvY29kZWNzL3J0NTY4Mi0KPiBpMmMuYwo+ IGluZGV4IDNmNzJmNjA5MzQzNi4uMjkzNWMxYmI4MWYzIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3Nv Yy9jb2RlY3MvcnQ1NjgyLWkyYy5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDU2ODItaTJj LmMKPiBAQCAtMzAyLDExICszMDIsOSBAQCBzdGF0aWMgdm9pZCBydDU2ODJfaTJjX3NodXRkb3du KHN0cnVjdAo+IGkyY19jbGllbnQgKmNsaWVudCkKPiDCoMKgwqDCoMKgwqDCoMKgcnQ1NjgyX3Jl c2V0KHJ0NTY4Mik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBydDU2ODJfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBydDU2ODJfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBydDU2 ODJfaTJjX3NodXRkb3duKGNsaWVudCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydDU2ODJfb2Zf bWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9ydDU2ODJzLmMgYi9z b3VuZC9zb2MvY29kZWNzL3J0NTY4MnMuYwo+IGluZGV4IDRkNDRlZGRlZTkwMS4uYTgwYzY4NjYx M2Y0IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1Njgycy5jCj4gKysrIGIvc291 bmQvc29jL2NvZGVjcy9ydDU2ODJzLmMKPiBAQCAtMzE5NSwxMSArMzE5NSw5IEBAIHN0YXRpYyB2 b2lkIHJ0NTY4MnNfaTJjX3NodXRkb3duKHN0cnVjdAo+IGkyY19jbGllbnQgKmNsaWVudCkKPiDC oMKgwqDCoMKgwqDCoMKgcnQ1Njgyc19yZXNldChydDU2ODJzKTsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IHJ0NTY4MnNfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtz dGF0aWMgdm9pZCBydDU2ODJzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgcnQ1Njgyc19pMmNfc2h1dGRvd24oY2xpZW50KTsKPiAt Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0NTY4MnNfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy9ydDkxMjAuYyBiL3NvdW5kL3NvYy9jb2RlY3MvcnQ5MTIwLmMKPiBp bmRleCBkYTQ5NWJkYzg0MTUuLjY0NDMwMGU4OGI0YyAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2Mv Y29kZWNzL3J0OTEyMC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDkxMjAuYwo+IEBAIC01 NzIsMTEgKzU3MiwxMCBAQCBzdGF0aWMgaW50IHJ0OTEyMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dCAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZydDkxMjBfZGFp LCAxKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHJ0OTEyMF9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgcnQ5MTIwX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVu dCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBwbV9ydW50aW1lX2Rpc2FibGUoJmkyYy0+ ZGV2KTsKPiDCoMKgwqDCoMKgwqDCoMKgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKCZpMmMtPmRl dik7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQg X19tYXliZV91bnVzZWQgcnQ5MTIwX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvc2d0bDUwMDAuYwo+IGIvc291bmQvc29j L2NvZGVjcy9zZ3RsNTAwMC5jCj4gaW5kZXggMmFhNDhhZWY2YTk3Li5mMjliZDUwZmU0Y2QgMTAw NjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9zZ3RsNTAwMC5jCj4gKysrIGIvc291bmQvc29j L2NvZGVjcy9zZ3RsNTAwMC5jCj4gQEAgLTE3OTEsMTUgKzE3OTEsMTMgQEAgc3RhdGljIGludCBz Z3RsNTAwMF9pMmNfcHJvYmUoc3RydWN0Cj4gaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgc2d0bDUwMDBfaTJj X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBzZ3RsNTAw MF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBzZ3RsNTAwMF9wcml2ICpzZ3RsNTAwMCA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGNsa19kaXNhYmxlX3VucHJlcGFyZShz Z3RsNTAwMC0+bWNsayk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUo c2d0bDUwMDAtPm51bV9zdXBwbGllcywgc2d0bDUwMDAtCj4gPnN1cHBsaWVzKTsKPiDCoMKgwqDC oMKgwqDCoMKgcmVndWxhdG9yX2J1bGtfZnJlZShzZ3RsNTAwMC0+bnVtX3N1cHBsaWVzLCBzZ3Rs NTAwMC0KPiA+c3VwcGxpZXMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0K PiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHNndGw1MDAwX2lkW10g PSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvc3RhMzUwLmMgYi9zb3VuZC9zb2Mv Y29kZWNzL3N0YTM1MC5jCj4gaW5kZXggOTE4OWZiMzY0OGY3Li4wNjc2YzgyMjQ1OGYgMTAwNjQ0 Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9zdGEzNTAuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2Rl Y3Mvc3RhMzUwLmMKPiBAQCAtMTI0MywxMCArMTI0Myw4IEBAIHN0YXRpYyBpbnQgc3RhMzUwX2ky Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzdGEzNTBfaTJjX3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gLX0K PiArc3RhdGljIHZvaWQgc3RhMzUwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiAre30KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0YTM1 MF9pMmNfaWRbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgeyAic3RhMzUwIiwgMCB9LAo+IGRpZmYg LS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RhczI1NTIuYyBiL3NvdW5kL3NvYy9jb2RlY3MvdGFz MjU1Mi5jCj4gaW5kZXggYjVjOWM2MWZmNWE4Li4wMjU5YWU5NmQ5N2UgMTAwNjQ0Cj4gLS0tIGEv c291bmQvc29jL2NvZGVjcy90YXMyNTUyLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3RhczI1 NTIuYwo+IEBAIC03MzcsMTAgKzczNyw5IEBAIHN0YXRpYyBpbnQgdGFzMjU1Ml9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCB0YXMyNTUyX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGFzMjU1Ml9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRpbWVfZGlzYWJs ZSgmY2xpZW50LT5kZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgdGFzMjU1Ml9pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RhczUwODYuYyBiL3NvdW5kL3NvYy9jb2RlY3Mv dGFzNTA4Ni5jCj4gaW5kZXggNWMwZGYzY2Q0ODMyLi5iMGE3MzI0NGVlMzEgMTAwNjQ0Cj4gLS0t IGEvc291bmQvc29jL2NvZGVjcy90YXM1MDg2LmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3Rh czUwODYuYwo+IEBAIC05ODIsMTAgKzk4Miw4IEBAIHN0YXRpYyBpbnQgdGFzNTA4Nl9pMmNfcHJv YmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0 Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgdGFzNTA4Nl9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICppMmMpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiAtfQo+ICtzdGF0 aWMgdm9pZCB0YXM1MDg2X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiAre30K PiDCoAo+IMKgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRhczUwODZfaTJjX2RyaXZlciA9IHsK PiDCoMKgwqDCoMKgwqDCoMKgLmRyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2Nv ZGVjcy90YXM1NzF4LmMgYi9zb3VuZC9zb2MvY29kZWNzL3RhczU3MXguYwo+IGluZGV4IDdiNTk5 NjY0ZGIyMC4uMWEwNjBlODU2MjFmIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvdGFz NTcxeC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy90YXM1NzF4LmMKPiBAQCAtODg1LDEzICs4 ODUsMTEgQEAgc3RhdGljIGludCB0YXM1NzF4X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCB0YXM1NzF4X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAr c3RhdGljIHZvaWQgdGFzNTcxeF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0YXM1NzF4X3ByaXZhdGUgKnByaXYgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZWd1bGF0 b3JfYnVsa19kaXNhYmxlKHByaXYtPmNoaXAtPm51bV9zdXBwbHlfbmFtZXMsIHByaXYtCj4gPnN1 cHBsaWVzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRhczU3MXhfb2ZfbWF0Y2hbXSBfX21heWJl X3VudXNlZCA9Cj4gewo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RhczU4MDVtLmMK PiBiL3NvdW5kL3NvYy9jb2RlY3MvdGFzNTgwNW0uYwo+IGluZGV4IGZhMGU4MWVjODc1YS4uNDc4 MmQ5YzQ3OTkyIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvdGFzNTgwNW0uYwo+ICsr KyBiL3NvdW5kL3NvYy9jb2RlY3MvdGFzNTgwNW0uYwo+IEBAIC01MjMsNyArNTIzLDcgQEAgc3Rh dGljIGludCB0YXM1ODA1bV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHRhczU4MDVt X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgdGFzNTgw NW1faTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaTJjLT5kZXY7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB0YXM1ODA1bV9wcml2ICp0YXM1ODA1bSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+IEBA IC01MzIsNyArNTMyLDYgQEAgc3RhdGljIGludCB0YXM1ODA1bV9pMmNfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgZ3Bpb2Rfc2V0X3ZhbHVlKHRhczU4 MDVtLT5ncGlvX3Bkbl9uLCAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgdXNsZWVwX3JhbmdlKDEwMDAw LCAxNTAwMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9kaXNhYmxlKHRhczU4MDVtLT5w dmRkKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRhczU4MDVtX2kyY19pZFtdID0gewo+IGRpZmYgLS1n aXQgYS9zb3VuZC9zb2MvY29kZWNzL3RhczY0MjQuYyBiL3NvdW5kL3NvYy9jb2RlY3MvdGFzNjQy NC5jCj4gaW5kZXggMjJiNTM4NTZlNjkxLi5mZDFmMzdkNDg5ODIgMTAwNjQ0Cj4gLS0tIGEvc291 bmQvc29jL2NvZGVjcy90YXM2NDI0LmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3RhczY0MjQu Ywo+IEBAIC03NzUsNyArNzc1LDcgQEAgc3RhdGljIGludCB0YXM2NDI0X2kyY19wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCB0YXM2NDI0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgdGFzNjQyNF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkZXZpY2UgKmRl diA9ICZjbGllbnQtPmRldjsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHRhczY0MjRfZGF0YSAq dGFzNjQyNCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+IEBAIC03OTEsOCArNzkxLDYgQEAgc3Rh dGljIGludCB0YXM2NDI0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0YXM2NDI0LT5zdXBwbGllcyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlm IChyZXQgPCAwKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihkZXYs ICJ1bmFibGUgdG8gZGlzYWJsZSBzdXBwbGllczogJWRcbiIsCj4gcmV0KTsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJj X2RldmljZV9pZCB0YXM2NDI0X2kyY19pZHNbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29j L2NvZGVjcy90bHYzMjBhZGMzeHh4LmMKPiBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWRjM3h4 eC5jCj4gaW5kZXggODI1MzJhZDAwYzNjLi44MmQ3OGU3YzYxMGUgMTAwNjQ0Cj4gLS0tIGEvc291 bmQvc29jL2NvZGVjcy90bHYzMjBhZGMzeHh4LmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3Rs djMyMGFkYzN4eHguYwo+IEBAIC0xNDI3LDcgKzE0MjcsNyBAQCBzdGF0aWMgaW50IGFkYzN4eHhf aTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IF9fZXhpdCBhZGMzeHh4X2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgX19leGl0IGFkYzN4 eHhfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+IMKgewo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgYWRjM3h4eCAqYWRjM3h4eCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGll bnQpOwo+IMKgCj4gQEAgLTE0MzUsNyArMTQzNSw2IEBAIHN0YXRpYyBpbnQgX19leGl0IGFkYzN4 eHhfaTJjX3JlbW92ZShzdHJ1Y3QKPiBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfZGlzYWJsZV91bnByZXBhcmUoYWRjM3h4eC0+bWNsayk7 Cj4gwqDCoMKgwqDCoMKgwqDCoGFkYzN4eHhfZnJlZV9ncGlvKGFkYzN4eHgpOwo+IMKgwqDCoMKg wqDCoMKgwqBzbmRfc29jX3VucmVnaXN0ZXJfY29tcG9uZW50KCZjbGllbnQtPmRldik7Cj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIHRsdjMyMGFkYzN4eHhfb2ZfbWF0Y2hbXSA9IHsKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzMng0LWkyYy5jCj4gYi9zb3VuZC9zb2MvY29kZWNz L3RsdjMyMGFpYzMyeDQtaTJjLmMKPiBpbmRleCAwNjQ1MjM5OTAxYjEuLmQxZTU0M2NhMzUyMSAx MDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzMyeDQtaTJjLmMKPiArKysg Yi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzMyeDQtaTJjLmMKPiBAQCAtNDUsMTEgKzQ1LDkg QEAgc3RhdGljIGludCBhaWMzMng0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMp Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBhaWMzMng0X3Byb2JlKCZpMmMtPmRldiwgcmVnbWFw KTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGFpYzMyeDRfaTJjX3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBhaWMzMng0X2kyY19yZW1vdmUoc3RydWN0IGky Y19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgYWljMzJ4NF9yZW1vdmUoJmky Yy0+ZGV2KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiDCoHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhaWMzMng0X2kyY19pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LWkyYy5jCj4gYi9zb3VuZC9z b2MvY29kZWNzL3RsdjMyMGFpYzN4LWkyYy5jCj4gaW5kZXggN2JkOWNlMDhiYjdiLi5kN2U5NGQ1 NjRkYmYgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC1pMmMuYwo+ ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3gtaTJjLmMKPiBAQCAtNDEsMTEgKzQx LDkgQEAgc3RhdGljIGludCBhaWMzeF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykK PiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGFpYzN4X3Byb2JlKCZpMmMtPmRldiwgcmVnbWFwLCBp ZC0+ZHJpdmVyX2RhdGEpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYWljM3hfaTJjX3JlbW92 ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCBhaWMzeF9pMmNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGFpYzN4X3Jl bW92ZSgmaTJjLT5kZXYpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWljM3hfb2ZfaWRbXSA9IHsK PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBkYWMzMy5jCj4gYi9zb3VuZC9z b2MvY29kZWNzL3RsdjMyMGRhYzMzLmMKPiBpbmRleCA2NmYxZDFjZDZjZjAuLjhhODZiZmU4MjY2 YyAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGRhYzMzLmMKPiArKysgYi9z b3VuZC9zb2MvY29kZWNzL3RsdjMyMGRhYzMzLmMKPiBAQCAtMTUzOSw3ICsxNTM5LDcgQEAgc3Rh dGljIGludCBkYWMzM19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqY2xpZW50KQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZGFjMzNf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCBkYWMz M19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCB0bHYzMjBkYWMzM19wcml2ICpkYWMzMyA9IGkyY19nZXRfY2xpZW50ZGF0 YShjbGllbnQpOwo+IMKgCj4gQEAgLTE1NDgsOCArMTU0OCw2IEBAIHN0YXRpYyBpbnQgZGFjMzNf aTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqAKPiDCoMKgwqDCoMKg wqDCoMKgaWYgKGRhYzMzLT5wb3dlcl9ncGlvID49IDApCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBncGlvX2ZyZWUoZGFjMzMtPnBvd2VyX2dwaW8pOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2 aWNlX2lkIHRsdjMyMGRhYzMzX2kyY19pZFtdID0gewo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2Mv Y29kZWNzL3dtMTI1MC1ldjEuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd20xMjUwLQo+IGV2MS5jCj4g aW5kZXggYjYzNjZkZWExNWE2Li40OWRiZDE5ZDI2Y2MgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29j L2NvZGVjcy93bTEyNTAtZXYxLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtMTI1MC1ldjEu Ywo+IEBAIC0yMjksMTEgKzIyOSw5IEBAIHN0YXRpYyBpbnQgd20xMjUwX2V2MV9wcm9iZShzdHJ1 Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+ IMKgCj4gLXN0YXRpYyBpbnQgd20xMjUwX2V2MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmky YykKPiArc3RhdGljIHZvaWQgd20xMjUwX2V2MV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmky YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgd20xMjUwX2V2MV9mcmVlKGkyYyk7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0 IGkyY19kZXZpY2VfaWQgd20xMjUwX2V2MV9pMmNfaWRbXSA9IHsKPiBkaWZmIC0tZ2l0IGEvc291 bmQvc29jL2NvZGVjcy93bTIyMDAuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd20yMjAwLmMKPiBpbmRl eCAxY2Q1NDQ1ODBjODMuLjg1NTdjMzNlZWVlNyAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29k ZWNzL3dtMjIwMC5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy93bTIyMDAuYwo+IEBAIC0yNDE1 LDcgKzI0MTUsNyBAQCBzdGF0aWMgaW50IHdtMjIwMF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgd20yMjAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3Rh dGljIHZvaWQgd20yMjAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdtMjIwMF9wcml2ICp3bTIyMDAgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoaTJjKTsKPiDCoAo+IEBAIC0yNDI4LDggKzI0MjgsNiBAQCBzdGF0aWMgaW50IHdt MjIwMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKHdtMjIwMC0+cGRhdGEu bGRvX2VuYSwgMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJS QVlfU0laRSh3bTIyMDAtPmNvcmVfc3VwcGxpZXMpLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3bTIyMDAtPmNvcmVfc3VwcGxp ZXMpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IMKgI2lmZGVm IENPTkZJR19QTQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtNTEwMC5jIGIvc291 bmQvc29jL2NvZGVjcy93bTUxMDAuYwo+IGluZGV4IGE4OTg3MDkxODE3NC4uMjExZWY4MTkwYzYx IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd201MTAwLmMKPiArKysgYi9zb3VuZC9z b2MvY29kZWNzL3dtNTEwMC5jCj4gQEAgLTI2MzYsNyArMjYzNiw3IEBAIHN0YXRpYyBpbnQgd201 MTAwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDC oHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCB3bTUxMDBfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+ICtzdGF0aWMgdm9pZCB3bTUxMDBfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudCAqaTJjKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgd201 MTAwX3ByaXYgKndtNTEwMCA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+IMKgCj4gQEAgLTI2 NTIsOCArMjY1Miw2IEBAIHN0YXRpYyBpbnQgd201MTAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19j bGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Bpb19zZXRf dmFsdWVfY2Fuc2xlZXAod201MTAwLT5wZGF0YS5sZG9fZW5hLCAwKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdwaW9fZnJlZSh3bTUxMDAtPnBkYXRhLmxkb19lbmEpOwo+IMKg wqDCoMKgwqDCoMKgwqB9Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKg Cj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204 ODA0LWkyYy5jIGIvc291bmQvc29jL2NvZGVjcy93bTg4MDQtCj4gaTJjLmMKPiBpbmRleCAwNGRj OWZiNWFmYjQuLjNjZTFhMzlkNzZlYiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dt ODgwNC1pMmMuYwo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204ODA0LWkyYy5jCj4gQEAgLTI1 LDEwICsyNSw5IEBAIHN0YXRpYyBpbnQgd204ODA0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dAo+ICppMmMpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiB3bTg4MDRfcHJvYmUoJmkyYy0+ZGV2 LCByZWdtYXApOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgd204ODA0X2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQgd204ODA0X2kyY19yZW1vdmUoc3Ry dWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgd204ODA0X3JlbW92 ZSgmaTJjLT5kZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBz dGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgd204ODA0X2kyY19pZFtdID0gewo+IGRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODkwMC5jIGIvc291bmQvc29jL2NvZGVjcy93 bTg5MDAuYwo+IGluZGV4IDg0YTNkYWYwYzExZS4uMjhlMjk2ZjJmOTY5IDEwMDY0NAo+IC0tLSBh L3NvdW5kL3NvYy9jb2RlY3Mvd204OTAwLmMKPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODkw MC5jCj4gQEAgLTEyODMsMTAgKzEyODMsOCBAQCBzdGF0aWMgaW50IHdtODkwMF9pMmNfcHJvYmUo c3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgd204OTAwX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IC19Cj4gK3N0YXRp YyB2b2lkIHdtODkwMF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3t9 Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB3bTg5MDBfaTJjX2lk W10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoHsgIndtODkwMCIsIDAgfSwKPiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL2NvZGVjcy93bTg5MDMuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTAzLmMKPiBp bmRleCAzYzk1YzJhZWE1MTUuLjk2N2JlNjI5Yjg0NiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2Mv Y29kZWNzL3dtODkwMy5jCj4gKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5MDMuYwo+IEBAIC0y MTgzLDcgKzIxODMsNyBAQCBzdGF0aWMgaW50IHdtODkwM19pMmNfcHJvYmUoc3RydWN0IGkyY19j bGllbnQKPiAqaTJjKQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgd204OTAzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkK PiArc3RhdGljIHZvaWQgd204OTAzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHdtODkwM19wcml2ICp3bTg5MDMgPSBp MmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiDCoAo+IEBAIC0yMTkyLDggKzIxOTIsNiBAQCBz dGF0aWMgaW50IHdtODkwM19pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmNsaWVudCkK PiDCoMKgwqDCoMKgwqDCoMKgaWYgKGNsaWVudC0+aXJxKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZnJlZV9pcnEoY2xpZW50LT5pcnEsIHdtODkwMyk7Cj4gwqDCoMKgwqDCoMKg wqDCoHdtODkwM19mcmVlX2dwaW8od204OTAzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdtODkw M19vZl9tYXRjaFtdID0gewo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODk2MC5j IGIvc291bmQvc29jL2NvZGVjcy93bTg5NjAuYwo+IGluZGV4IDhjOGYzMmIyMzA4My4uM2M0Y2Q0 N2Y1YWQ5IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTYwLmMKPiArKysgYi9z b3VuZC9zb2MvY29kZWNzL3dtODk2MC5jCj4gQEAgLTE0ODcsMTAgKzE0ODcsOCBAQCBzdGF0aWMg aW50IHdtODk2MF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJjKQo+IMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgd204OTYwX2kyY19y ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IC19Cj4gK3N0YXRpYyB2b2lkIHdtODk2MF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQpCj4gK3t9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCB3bTg5NjBfaTJjX2lkW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoHsgIndtODk2MCIs IDAgfSwKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5NjIuYyBiL3NvdW5kL3Nv Yy9jb2RlY3Mvd204OTYyLmMKPiBpbmRleCA1Y2NhODkzNjQyODAuLjg1MDg5MzA0ZjVlNyAxMDA2 NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dtODk2Mi5jCj4gKysrIGIvc291bmQvc29jL2Nv ZGVjcy93bTg5NjIuYwo+IEBAIC0zNzc5LDEwICszNzc5LDkgQEAgc3RhdGljIGludCB3bTg5NjJf aTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHdtODk2Ml9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHdtODk2Ml9pMmNfcmVtb3ZlKHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHBtX3J1bnRp bWVfZGlzYWJsZSgmY2xpZW50LT5kZXYpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKg fQo+IMKgCj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2Rl Y3Mvd204OTkzLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk5My5jCj4gaW5kZXggZjRkYTc3ZWM5 ZDZjLi5mZTFjNWFhYjBhYjYgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5OTMu Ywo+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkzLmMKPiBAQCAtMTcyMywxNSArMTcyMywx MyBAQCBzdGF0aWMgaW50IHdtODk5M19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQKPiAqaTJj KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQg d204OTkzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiArc3RhdGljIHZvaWQg d204OTkzX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiDCoHsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IHdtODk5M19wcml2ICp3bTg5OTMgPSBpMmNfZ2V0X2NsaWVudGRhdGEo aTJjKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoaTJjLT5pcnEpCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlX2lycShpMmMtPmlycSwgd204OTkzKTsKPiDCoMKgwqDC oMKgwqDCoMKgcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKHdtODk5My0+c3VwcGxp ZXMpLCB3bTg5OTMtCj4gPnN1cHBsaWVzKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB3bTg5OTNf aTJjX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTk2LmMgYi9z b3VuZC9zb2MvY29kZWNzL3dtODk5Ni5jCj4gaW5kZXggZjdiYjI3ZDFjNzZkLi41ZjJiM2FmNDdj MTIgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5OTYuYwo+ICsrKyBiL3NvdW5k L3NvYy9jb2RlY3Mvd204OTk2LmMKPiBAQCAtMzA2Nyw3ICszMDY3LDcgQEAgc3RhdGljIGludCB3 bTg5OTZfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50Cj4gKmkyYykKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHdtODk5Nl9pMmNfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIHdtODk5Nl9pMmNfcmVt b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB3bTg5OTZfcHJpdiAqd204OTk2ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4g wqAKPiBAQCAtMzA3Niw4ICszMDc2LDYgQEAgc3RhdGljIGludCB3bTg5OTZfaTJjX3JlbW92ZShz dHJ1Y3QgaTJjX2NsaWVudAo+ICpjbGllbnQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBncGlvX3NldF92YWx1ZV9jYW5zbGVlcCh3bTg5OTYtPnBkYXRhLmxkb19lbmEsIDApOwo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3Bpb19mcmVlKHdtODk5Ni0+cGRhdGEu bGRvX2VuYSk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB3bTg5 OTZfaTJjX2lkW10gPSB7Cj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd205MDgxLmMg Yi9zb3VuZC9zb2MvY29kZWNzL3dtOTA4MS5jCj4gaW5kZXggODdiNTg0NDhjZWE3Li42MTg0ZDhj MDY1NjQgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTkwODEuYwo+ICsrKyBiL3Nv dW5kL3NvYy9jb2RlY3Mvd205MDgxLmMKPiBAQCAtMTM1NywxMCArMTM1Nyw4IEBAIHN0YXRpYyBp bnQgd205MDgxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudAo+ICppMmMpCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgd205MDgxX2kyY19yZW1v dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IC19Cj4gK3N0YXRpYyB2b2lkIHdtOTA4MV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gK3t9Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj ZV9pZCB3bTkwODFfaTJjX2lkW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoHsgIndtOTA4MSIsIDAg fSwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4F42AC433EF for ; Wed, 29 Jun 2022 22:15:38 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4LYG4S69Fvz3f7B for ; Thu, 30 Jun 2022 08:15:36 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=E/eHZl3l; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=linux.intel.com (client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=srinivas.pandruvada@linux.intel.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=E/eHZl3l; dkim-atps=neutral Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4LY3n42gFzz3bZN for ; Thu, 30 Jun 2022 00:31:35 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656513096; x=1688049096; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=ovERUMxy5cHPu6k6hYcCFHDSxfmFe62BgY6RoX75pBU=; b=E/eHZl3lGSa0bXfz/GHAZo0XDNY0nMmtZa3/7jYcwRmR8y0oFsHYzLmL iMdIKpazKjv2D5YORiOJxzikGQv9KgRQoZe2pSzVyVKjQXDkpbqIs/hTM qmq2ProvlcH+xot3oJ4JHNPC4fFIZwPps4ozK7HMEYWQQqIPJZn0+Prrb XjXiNI/DycMFMFCN0cKN45DSjIxTfn86+Wo1TexWME3oIsTp1GN0eanIg ZwaNfzdTBqDPh8UevBqblLwBpnCM9VSoU8TpXqWppFHDE7k0LZ4R7/q0R vG+lnSZu6TLtAo0B4rmSzaq8E/RwXknmRsv/Drg75vL02WJnwVmfNtIwN Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="280806605" X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="280806605" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP; 29 Jun 2022 07:31:24 -0700 X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="647415537" Received: from egolubev-mobl.amr.corp.intel.com (HELO spandruv-desk1.amr.corp.intel.com) ([10.209.68.9]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2022 07:31:09 -0700 Message-ID: Subject: Re: [PATCH 6/6] i2c: Make remove callback return void From: srinivas pandruvada To: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Wolfram Sang Date: Wed, 29 Jun 2022 07:31:08 -0700 In-Reply-To: <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> References: <20220628140313.74984-1-u.kleine-koenig@pengutronix.de> <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.4 (3.42.4-2.fc35) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Thu, 30 Jun 2022 08:13:02 +1000 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Ricardo Ribalda , Jimmy Su , Linus Walleij , Sekhar Nori , Gwendal Grignou , dri-devel@lists.freedesktop.org, Jaroslav Kysela , Benjamin Tissoires , Paul Mackerras , Moses Christopher Bollavarapu , Pavel Machek , Miquel Raynal , Heikki Krogerus , Evgeniy Polyakov , Matt Johnston , Olli Salonen , Angela Czubak , Robert Marko , Luka Perkov , Sean Young , Dave Stevenson , Zheyu Ma , Javier Martinez Canillas , Chanwoo Choi , linux-omap@vger.kernel.org, An tti Palosaari , Wenyou Yang , Dongchun Zhu , Miaoqian Lin , Steve Longerbeam , Bingbu Cao , Shunqian Zheng , lijian , Dan Carpenter , Bartlomiej Zolnierkiewicz , Viorel Suman , Petr Machata , Guido =?ISO-8859-1?Q?G=FCnther?= , Jean Delvare , linux-serial@vger.kernel.org, linux-pm@vger.kernel.org, Eddie James , Riku Voipio , James Schulman , Scott Wood , Cai Huoqing , Jonas Malaco , Hsin-Yi Wang , Haibo Chen , Petr Cvek , linux-leds@vger.kernel.org, Joe Tessler , Andrey Konovalov , Andy Shevchenko , Robert Jones , George Joseph , Vincent Knecht , Robin van der Gracht , Randy Dunlap , linux-stm32@st-md-mailman.stormreply.com, Michael Tretter , Geert Uytterhoeven , Phong LE , Daniel Beer , Krzysztof Opasiak , Bjorn Andersson , linux-crypto@vger.kernel.org, Pengutronix Kernel Team , Heungjun Kim , Hans Verkuil , David Lin , Vladimir Oltean , David Rhodes , Claudiu Beznea , Jean-Baptiste Maneyrol , Alexandre Belloni , Dan Robertson , Martyn Welch , Jiri Slaby , devicetree@vger.kernel.org, David Airlie , Jon Nettleton , Marco Felsch , Wim Van Sebroeck , Sebastian Reichel , Max Filippov , "Lad, Prabhakar" , Thierry Reding , linux-i2c@vger.kernel.org, Martiros Shakhzadyan , Guenter Roeck , Matthias Schwarzott , Sylwester Nawrocki , Eric Dumazet , Marek =?ISO-8859-1?Q?Beh=FAn?= , Saranya Gopal , Lars-Peter Clausen , Corey Minyard , Evgeny Novikov , Frank Rowand , Bartosz Golaszewski , Manivannan Sadhasivam , Pierre-Louis Bossart , Min ghao Chi , linux-clk@vger.ker nel.org, Nathan Chancellor , MyungJoo Ham , Charles Gorand , Jagan Teki , Vijendar Mukunda , Miguel Ojeda , Kyungmin Park , Tianshu Qiu , Martin Donnelly , Woojung Huh , Rudolf Marek , Charles Keepax , linux-watchdog@vger.kernel.org, Michael Hennerich , Ido Schimmel , acpi4asus-user@lists.sourceforge.net, Simon Trimmer , Ricard Wanderlof , Rikard Falkeborn , Alex Deucher , Jiri Valek - 2N , linux-rpi-kernel@lists.infradead.org, Biju Das , Wayne Chang , Chen-Yu Tsai , Sing-Han Chen , linux-arm-kernel@lists.infradead.org, Niklas =?ISO-8859-1?Q?S=F6derlund?= , Hans de Goede , Stephen Boyd , Maslov Dmitry , linux-gpio@vger.kernel.org, Jens Frederich , Douglas Anderson , linux-media@vger.kernel.org, "David S. Miller" , Paul Kocialkowski , Jarkko Sakkinen , linux-usb@vger.kernel.org, Jacopo Mondi , Maxime Coquelin , CGEL ZTE , Colin Leroy , platform-driver-x86@vger.kernel.org, linux-integrity@vger.kernel.org, Kevin Tsai , Pali =?ISO-8859-1?Q?Roh=E1r?= , Jonathan Cameron , Heiner Kallweit , Daniel Palmer , Arec Kao , Crt Mori , Jose Cazarin , Neil Armstrong , linux-iio@vger.kernel.org, Tom Rix , Michael Turquette , Peter Senna Tschudin , Benjamin Mugnier , Nuno =?ISO-8859-1?Q?S=E1?= , Jan-Simon Moeller , Wei Yongjun , Laurent Pinchart , Andrzej Hajda , Nikita Travkin , Jeremy Kerr , Jasmin Jessich , Sam Ravnborg , Kevin Cernekee , Alyssa Rosenzweig , linux-rtc@vger.kernel.org, Daniel Thompson , Florian Fainelli , Lucas Tanure , Stefan Mavrodiev , Masahiro Yamada , Sylvain Petinot , netdev@vg er.kernel.org, Kieran Bingham , Jernej Skrabec , Xin Ji , Seven Lee , Matt Ranostay , Broadcom internal kernel review list , Adrien Grassein , Yang Yingliang , chrome-platform@lists.linux.dev, Mats Randgaard , Paolo Abeni , Alexey Dobriyan , Joel Stanley , linux-input@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Lyude Paul , Kees Cook , Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Jonas Karlman , Yang Li , Tim Harvey , Jiri Kosina , Akinobu Mita , Mark Gross , Richard Fitzgerald , Mark Brown , wengjianfeng , Maxime Ripard , Sven Peter , Martin Kepplinger , openipmi-developer@lists.sourceforge.net, Mauro Carvalho Chehab , Benson Leung , "Daniel W. S. Almeida" , Chiranjeevi Rapolu , Alessandro Zummo , linux-hwmon@vger.kernel.org, Felipe Balbi , Stephan Gerhold , Support Opensource , Alexandru Ardelean , Dmitry Torokhov , Marc Hulsman , Corentin Chary , Stephen Kitt , Daniel Scally , linux-fbdev@vger.kernel.org, Andrey Ryabinin , Arnd Bergmann , Kirill Shilimanov , Sakari Ailus , patches@opensource. cirrus.com, Zheng Yongjun , Alejandro Tafalla , Peter Rosin , Arnaud Ferraris , Hector Martin , Vignesh Raghavendra , Nick Dyer , Greg Kroah-Hartman , Tony Lindgren , Alexandre Torgue , Takashi Iwai , Paul Cercueil , George McCollister , Mac Chiang , Antoniu Miclaus , Alexander Potapenko , linux-staging@lists.linux.dev, Adam Ford , Peter Huewe , UNGLinuxDriver@microchip.com, Lee Jones , linux-mtd@lists.infradead.org, Alexey Khoroshilov , Marek Vasut , Yizhuo , alsa-devel@alsa-project.org, Vincenzo Frascino , Eric Piel , Herbert Xu , Tobias Schrammm , Richard Weinberger , Tomasz Duszynski , Janusz Krzysztofik , Russell King , linux-pwm@vger.kernel.org, Jason Gunthorpe , Thomas Zimmermann , Bastien Nocera , Jingoo Han , Jakub Kicinski , Vivien Didelot , Shawn Tu , Leon Luo , Yan Lei , Akihiro Tsukada , Tudor Ambarus , Dmitry Rokosov , Oliver Graute , Alistair Francis , Dongliang Mu , Jonathan =?ISO-8859-1?Q?Neusch=E4fer?= , Eduardo Valentin , Rui Miguel Silva , Michael Srba , Rob Herring , linux-mediatek@lists.infradead.org, Fabio Estevam , Matthias Brugger , kasan-dev@googlegroups.com, "Paul J. Murphy" , Nicola Lunghi , Daniele Alessandrelli , Dmitry Vyukov , Ramesh Shanmugasundaram , Liam Girdwood , Juerg Haefliger , Oder Chiou , Shengjiu Wang , Nicolas Ferre , Robert Foss , Krzysztof Kozlowski , Daniel Vetter , Alvin =?UTF-8?Q?=C5=A0ipraga?= , Luca Ceresoli , =?ISO-8859-1?Q?Jos=E9_Exp=F3sito?= , Johannes Berg , Colin Ian King , Ma ximilian Luz , Helge Deller , Lucas Stach Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Tue, 2022-06-28 at 16:03 +0200, Uwe Kleine-König wrote: > From: Uwe Kleine-König > > The value returned by an i2c driver's remove function is mostly > ignored. > (Only an error message is printed if the value is non-zero that the > error is ignored.) > > So change the prototype of the remove function to return no value. > This > way driver authors are not tempted to assume that passing an error to > the upper layer is a good idea. All drivers are adapted accordingly. > There is no intended change of behaviour, all callbacks were prepared > to > return 0 before. > > Signed-off-by: Uwe Kleine-König For drivers/iio/accel/bmc150-accel-i2c.c | 4 +--- drivers/iio/accel/kxcjk-1013.c | 4 +--- Acked-by: Srinivas Pandruvada Thanks, Srinivas > --- >  Documentation/i2c/writing-clients.rst                     | 2 +- >  arch/arm/mach-davinci/board-dm644x-evm.c                  | 3 +-- >  arch/arm/mach-davinci/board-dm646x-evm.c                  | 3 +-- >  arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c            | 3 +-- >  drivers/auxdisplay/ht16k33.c                              | 4 +--- >  drivers/auxdisplay/lcd2s.c                                | 3 +-- >  drivers/char/ipmi/ipmb_dev_int.c                          | 4 +--- >  drivers/char/ipmi/ipmi_ipmb.c                             | 4 +--- >  drivers/char/ipmi/ipmi_ssif.c                             | 6 ++---- >  drivers/char/tpm/st33zp24/i2c.c                           | 4 +--- >  drivers/char/tpm/tpm_i2c_atmel.c                          | 3 +-- >  drivers/char/tpm/tpm_i2c_infineon.c                       | 4 +--- >  drivers/char/tpm/tpm_i2c_nuvoton.c                        | 3 +-- >  drivers/char/tpm/tpm_tis_i2c_cr50.c                       | 6 ++---- >  drivers/clk/clk-cdce706.c                                 | 3 +-- >  drivers/clk/clk-cs2000-cp.c                               | 4 +--- >  drivers/clk/clk-si514.c                                   | 3 +-- >  drivers/clk/clk-si5341.c                                  | 4 +--- >  drivers/clk/clk-si5351.c                                  | 4 +--- >  drivers/clk/clk-si570.c                                   | 3 +-- >  drivers/clk/clk-versaclock5.c                             | 4 +--- >  drivers/crypto/atmel-ecc.c                                | 6 ++---- >  drivers/crypto/atmel-sha204a.c                            | 6 ++---- >  drivers/extcon/extcon-rt8973a.c                           | 4 +--- >  drivers/gpio/gpio-adp5588.c                               | 4 +--- >  drivers/gpio/gpio-max7300.c                               | 4 +--- >  drivers/gpio/gpio-pca953x.c                               | 4 +--- >  drivers/gpio/gpio-pcf857x.c                               | 4 +--- >  drivers/gpio/gpio-tpic2810.c                              | 4 +--- >  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c              | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/anx7625.c                 | 4 +--- >  drivers/gpu/drm/bridge/chrontel-ch7033.c                  | 4 +--- >  drivers/gpu/drm/bridge/cros-ec-anx7688.c                  | 4 +--- >  drivers/gpu/drm/bridge/ite-it6505.c                       | 4 +--- >  drivers/gpu/drm/bridge/ite-it66121.c                      | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt8912b.c                  | 3 +-- >  drivers/gpu/drm/bridge/lontium-lt9211.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611uxc.c                | 4 +--- >  drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c  | 8 ++---- > -- >  drivers/gpu/drm/bridge/nxp-ptn3460.c                      | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8622.c                    | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8640.c                    | 4 +--- >  drivers/gpu/drm/bridge/sii902x.c                          | 4 +--- >  drivers/gpu/drm/bridge/sii9234.c                          | 4 +--- >  drivers/gpu/drm/bridge/sil-sii8620.c                      | 4 +--- >  drivers/gpu/drm/bridge/tc358767.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358768.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358775.c                         | 4 +--- >  drivers/gpu/drm/bridge/ti-sn65dsi83.c                     | 4 +--- >  drivers/gpu/drm/bridge/ti-tfp410.c                        | 4 +--- >  drivers/gpu/drm/i2c/ch7006_drv.c                          | 4 +--- >  drivers/gpu/drm/i2c/tda9950.c                             | 4 +--- >  drivers/gpu/drm/i2c/tda998x_drv.c                         | 3 +-- >  drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c        | 4 +--- >  drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c     | 4 +--- >  drivers/gpu/drm/solomon/ssd130x-i2c.c                     | 4 +--- >  drivers/hid/i2c-hid/i2c-hid-core.c                        | 4 +--- >  drivers/hid/i2c-hid/i2c-hid.h                             | 2 +- >  drivers/hwmon/adc128d818.c                                | 4 +--- >  drivers/hwmon/adt7470.c                                   | 3 +-- >  drivers/hwmon/asb100.c                                    | 6 ++---- >  drivers/hwmon/asc7621.c                                   | 4 +--- >  drivers/hwmon/dme1737.c                                   | 4 +--- >  drivers/hwmon/f75375s.c                                   | 5 ++--- >  drivers/hwmon/fschmd.c                                    | 6 ++---- >  drivers/hwmon/ftsteutates.c                               | 3 +-- >  drivers/hwmon/ina209.c                                    | 4 +--- >  drivers/hwmon/ina3221.c                                   | 4 +--- >  drivers/hwmon/jc42.c                                      | 3 +-- >  drivers/hwmon/mcp3021.c                                   | 4 +--- >  drivers/hwmon/occ/p8_i2c.c                                | 4 +--- >  drivers/hwmon/pcf8591.c                                   | 3 +-- >  drivers/hwmon/smm665.c                                    | 3 +-- >  drivers/hwmon/tps23861.c                                  | 4 +--- >  drivers/hwmon/w83781d.c                                   | 4 +--- >  drivers/hwmon/w83791d.c                                   | 6 ++---- >  drivers/hwmon/w83792d.c                                   | 6 ++---- >  drivers/hwmon/w83793.c                                    | 6 ++---- >  drivers/hwmon/w83795.c                                    | 4 +--- >  drivers/hwmon/w83l785ts.c                                 | 6 ++---- >  drivers/i2c/i2c-core-base.c                               | 6 +----- >  drivers/i2c/i2c-slave-eeprom.c                            | 4 +--- >  drivers/i2c/i2c-slave-testunit.c                          | 3 +-- >  drivers/i2c/i2c-smbus.c                                   | 3 +-- >  drivers/i2c/muxes/i2c-mux-ltc4306.c                       | 4 +--- >  drivers/i2c/muxes/i2c-mux-pca9541.c                       | 3 +-- >  drivers/i2c/muxes/i2c-mux-pca954x.c                       | 3 +-- >  drivers/iio/accel/bma180.c                                | 4 +--- >  drivers/iio/accel/bma400_i2c.c                            | 4 +--- >  drivers/iio/accel/bmc150-accel-i2c.c                      | 4 +--- >  drivers/iio/accel/kxcjk-1013.c                            | 4 +--- >  drivers/iio/accel/kxsd9-i2c.c                             | 4 +--- >  drivers/iio/accel/mc3230.c                                | 4 +--- >  drivers/iio/accel/mma7455_i2c.c                           | 4 +--- >  drivers/iio/accel/mma7660.c                               | 4 +--- >  drivers/iio/accel/mma8452.c                               | 4 +--- >  drivers/iio/accel/mma9551.c                               | 4 +--- >  drivers/iio/accel/mma9553.c                               | 4 +--- >  drivers/iio/accel/stk8312.c                               | 4 +--- >  drivers/iio/accel/stk8ba50.c                              | 4 +--- >  drivers/iio/adc/ad799x.c                                  | 4 +--- >  drivers/iio/adc/ina2xx-adc.c                              | 4 +--- >  drivers/iio/adc/ltc2497.c                                 | 4 +--- >  drivers/iio/adc/ti-ads1015.c                              | 4 +--- >  drivers/iio/chemical/atlas-sensor.c                       | 4 +--- >  drivers/iio/chemical/ccs811.c                             | 4 +--- >  drivers/iio/chemical/sgp30.c                              | 4 +--- >  drivers/iio/dac/ad5380.c                                  | 4 +--- >  drivers/iio/dac/ad5446.c                                  | 4 +--- >  drivers/iio/dac/ad5593r.c                                 | 4 +--- >  drivers/iio/dac/ad5696-i2c.c                              | 4 +--- >  drivers/iio/dac/ds4424.c                                  | 4 +--- >  drivers/iio/dac/m62332.c                                  | 4 +--- >  drivers/iio/dac/mcp4725.c                                 | 4 +--- >  drivers/iio/dac/ti-dac5571.c                              | 4 +--- >  drivers/iio/gyro/bmg160_i2c.c                             | 4 +--- >  drivers/iio/gyro/fxas21002c_i2c.c                         | 4 +--- >  drivers/iio/gyro/itg3200_core.c                           | 4 +--- >  drivers/iio/gyro/mpu3050-i2c.c                            | 4 +--- >  drivers/iio/health/afe4404.c                              | 4 +--- >  drivers/iio/health/max30100.c                             | 4 +--- >  drivers/iio/health/max30102.c                             | 4 +--- >  drivers/iio/humidity/hdc2010.c                            | 4 +--- >  drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 4 +--- >  drivers/iio/imu/kmx61.c                                   | 4 +--- >  drivers/iio/light/apds9300.c                              | 4 +--- >  drivers/iio/light/apds9960.c                              | 4 +--- >  drivers/iio/light/bh1750.c                                | 4 +--- >  drivers/iio/light/bh1780.c                                | 4 +--- >  drivers/iio/light/cm3232.c                                | 4 +--- >  drivers/iio/light/cm36651.c                               | 4 +--- >  drivers/iio/light/gp2ap002.c                              | 4 +--- >  drivers/iio/light/gp2ap020a00f.c                          | 4 +--- >  drivers/iio/light/isl29028.c                              | 4 +--- >  drivers/iio/light/isl29125.c                              | 4 +--- >  drivers/iio/light/jsa1212.c                               | 4 +--- >  drivers/iio/light/ltr501.c                                | 4 +--- >  drivers/iio/light/opt3001.c                               | 6 ++---- >  drivers/iio/light/pa12203001.c                            | 4 +--- >  drivers/iio/light/rpr0521.c                               | 4 +--- >  drivers/iio/light/stk3310.c                               | 4 +--- >  drivers/iio/light/tcs3472.c                               | 4 +--- >  drivers/iio/light/tsl2563.c                               | 4 +--- >  drivers/iio/light/tsl2583.c                               | 4 +--- >  drivers/iio/light/tsl4531.c                               | 4 +--- >  drivers/iio/light/us5182d.c                               | 4 +--- >  drivers/iio/light/vcnl4000.c                              | 4 +--- >  drivers/iio/light/vcnl4035.c                              | 4 +--- >  drivers/iio/light/veml6070.c                              | 4 +--- >  drivers/iio/magnetometer/ak8974.c                         | 4 +--- >  drivers/iio/magnetometer/ak8975.c                         | 4 +--- >  drivers/iio/magnetometer/bmc150_magn_i2c.c                | 4 +--- >  drivers/iio/magnetometer/hmc5843_i2c.c                    | 4 +--- >  drivers/iio/magnetometer/mag3110.c                        | 4 +--- >  drivers/iio/magnetometer/yamaha-yas530.c                  | 4 +--- >  drivers/iio/potentiostat/lmp91000.c                       | 4 +--- >  drivers/iio/pressure/mpl3115.c                            | 4 +--- >  drivers/iio/pressure/ms5611_i2c.c                         | 4 +--- >  drivers/iio/pressure/zpa2326_i2c.c                        | 4 +--- >  drivers/iio/proximity/pulsedlight-lidar-lite-v2.c         | 4 +--- >  drivers/iio/proximity/sx9500.c                            | 4 +--- >  drivers/iio/temperature/mlx90614.c                        | 4 +--- >  drivers/iio/temperature/mlx90632.c                        | 4 +--- >  drivers/input/joystick/as5011.c                           | 4 +--- >  drivers/input/keyboard/adp5588-keys.c                     | 4 +--- >  drivers/input/keyboard/lm8323.c                           | 4 +--- >  drivers/input/keyboard/lm8333.c                           | 4 +--- >  drivers/input/keyboard/mcs_touchkey.c                     | 4 +--- >  drivers/input/keyboard/qt1070.c                           | 4 +--- >  drivers/input/keyboard/qt2160.c                           | 4 +--- >  drivers/input/keyboard/tca6416-keypad.c                   | 4 +--- >  drivers/input/misc/adxl34x-i2c.c                          | 4 +--- >  drivers/input/misc/bma150.c                               | 4 +--- >  drivers/input/misc/cma3000_d0x_i2c.c                      | 4 +--- >  drivers/input/misc/pcf8574_keypad.c                       | 4 +--- >  drivers/input/mouse/synaptics_i2c.c                       | 4 +--- >  drivers/input/rmi4/rmi_smbus.c                            | 4 +--- >  drivers/input/touchscreen/atmel_mxt_ts.c                  | 4 +--- >  drivers/input/touchscreen/bu21013_ts.c                    | 4 +--- >  drivers/input/touchscreen/cyttsp4_i2c.c                   | 4 +--- >  drivers/input/touchscreen/edt-ft5x06.c                    | 4 +--- >  drivers/input/touchscreen/goodix.c                        | 4 +--- >  drivers/input/touchscreen/migor_ts.c                      | 4 +--- >  drivers/input/touchscreen/s6sy761.c                       | 4 +--- >  drivers/input/touchscreen/stmfts.c                        | 4 +--- >  drivers/input/touchscreen/tsc2004.c                       | 4 +--- >  drivers/leds/flash/leds-as3645a.c                         | 4 +--- >  drivers/leds/flash/leds-lm3601x.c                         | 4 +--- >  drivers/leds/flash/leds-rt4505.c                          | 3 +-- >  drivers/leds/leds-an30259a.c                              | 4 +--- >  drivers/leds/leds-aw2013.c                                | 4 +--- >  drivers/leds/leds-bd2802.c                                | 4 +--- >  drivers/leds/leds-blinkm.c                                | 3 +-- >  drivers/leds/leds-is31fl319x.c                            | 3 +-- >  drivers/leds/leds-is31fl32xx.c                            | 4 +--- >  drivers/leds/leds-lm3530.c                                | 3 +-- >  drivers/leds/leds-lm3532.c                                | 4 +--- >  drivers/leds/leds-lm355x.c                                | 4 +--- >  drivers/leds/leds-lm3642.c                                | 3 +-- >  drivers/leds/leds-lm3692x.c                               | 4 +--- >  drivers/leds/leds-lm3697.c                                | 4 +--- >  drivers/leds/leds-lp3944.c                                | 4 +--- >  drivers/leds/leds-lp3952.c                                | 4 +--- >  drivers/leds/leds-lp50xx.c                                | 4 +--- >  drivers/leds/leds-lp5521.c                                | 4 +--- >  drivers/leds/leds-lp5523.c                                | 4 +--- >  drivers/leds/leds-lp5562.c                                | 4 +--- >  drivers/leds/leds-lp8501.c                                | 4 +--- >  drivers/leds/leds-lp8860.c                                | 4 +--- >  drivers/leds/leds-pca9532.c                               | 6 ++---- >  drivers/leds/leds-tca6507.c                               | 4 +--- >  drivers/leds/leds-turris-omnia.c                          | 4 +--- >  drivers/macintosh/ams/ams-i2c.c                           | 4 +--- >  drivers/macintosh/therm_adt746x.c                         | 4 +--- >  drivers/macintosh/therm_windtunnel.c                      | 4 +--- >  drivers/macintosh/windfarm_ad7417_sensor.c                | 4 +--- >  drivers/macintosh/windfarm_fcu_controls.c                 | 3 +-- >  drivers/macintosh/windfarm_lm75_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_lm87_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_max6690_sensor.c               | 4 +--- >  drivers/macintosh/windfarm_smu_sat.c                      | 4 +--- >  drivers/media/cec/i2c/ch7322.c                            | 4 +--- >  drivers/media/dvb-frontends/a8293.c                       | 3 +-- >  drivers/media/dvb-frontends/af9013.c                      | 4 +--- >  drivers/media/dvb-frontends/af9033.c                      | 4 +--- >  drivers/media/dvb-frontends/au8522_decoder.c              | 3 +-- >  drivers/media/dvb-frontends/cxd2099.c                     | 4 +--- >  drivers/media/dvb-frontends/cxd2820r_core.c               | 4 +--- >  drivers/media/dvb-frontends/dvb-pll.c                     | 3 +-- >  drivers/media/dvb-frontends/lgdt3306a.c                   | 4 +--- >  drivers/media/dvb-frontends/lgdt330x.c                    | 4 +--- >  drivers/media/dvb-frontends/m88ds3103.c                   | 3 +-- >  drivers/media/dvb-frontends/mn88443x.c                    | 4 +--- >  drivers/media/dvb-frontends/mn88472.c                     | 4 +--- >  drivers/media/dvb-frontends/mn88473.c                     | 4 +--- >  drivers/media/dvb-frontends/mxl692.c                      | 4 +--- >  drivers/media/dvb-frontends/rtl2830.c                     | 4 +--- >  drivers/media/dvb-frontends/rtl2832.c                     | 4 +--- >  drivers/media/dvb-frontends/si2165.c                      | 3 +-- >  drivers/media/dvb-frontends/si2168.c                      | 4 +--- >  drivers/media/dvb-frontends/sp2.c                         | 3 +-- >  drivers/media/dvb-frontends/stv090x.c                     | 3 +-- >  drivers/media/dvb-frontends/stv6110x.c                    | 3 +-- >  drivers/media/dvb-frontends/tc90522.c                     | 3 +-- >  drivers/media/dvb-frontends/tda10071.c                    | 3 +-- >  drivers/media/dvb-frontends/ts2020.c                      | 3 +-- >  drivers/media/i2c/ad5820.c                                | 3 +-- >  drivers/media/i2c/ad9389b.c                               | 3 +-- >  drivers/media/i2c/adp1653.c                               | 4 +--- >  drivers/media/i2c/adv7170.c                               | 3 +-- >  drivers/media/i2c/adv7175.c                               | 3 +-- >  drivers/media/i2c/adv7180.c                               | 4 +--- >  drivers/media/i2c/adv7183.c                               | 3 +-- >  drivers/media/i2c/adv7343.c                               | 4 +--- >  drivers/media/i2c/adv7393.c                               | 4 +--- >  drivers/media/i2c/adv748x/adv748x-core.c                  | 4 +--- >  drivers/media/i2c/adv7511-v4l2.c                          | 3 +-- >  drivers/media/i2c/adv7604.c                               | 3 +-- >  drivers/media/i2c/adv7842.c                               | 3 +-- >  drivers/media/i2c/ak7375.c                                | 4 +--- >  drivers/media/i2c/ak881x.c                                | 4 +--- >  drivers/media/i2c/bt819.c                                 | 3 +-- >  drivers/media/i2c/bt856.c                                 | 3 +-- >  drivers/media/i2c/bt866.c                                 | 3 +-- >  drivers/media/i2c/ccs/ccs-core.c                          | 4 +--- >  drivers/media/i2c/cs3308.c                                | 3 +-- >  drivers/media/i2c/cs5345.c                                | 3 +-- >  drivers/media/i2c/cs53l32a.c                              | 3 +-- >  drivers/media/i2c/cx25840/cx25840-core.c                  | 3 +-- >  drivers/media/i2c/dw9714.c                                | 4 +--- >  drivers/media/i2c/dw9768.c                                | 4 +--- >  drivers/media/i2c/dw9807-vcm.c                            | 4 +--- >  drivers/media/i2c/et8ek8/et8ek8_driver.c                  | 4 +--- >  drivers/media/i2c/hi556.c                                 | 4 +--- >  drivers/media/i2c/hi846.c                                 | 4 +--- >  drivers/media/i2c/hi847.c                                 | 4 +--- >  drivers/media/i2c/imx208.c                                | 4 +--- >  drivers/media/i2c/imx214.c                                | 4 +--- >  drivers/media/i2c/imx219.c                                | 4 +--- >  drivers/media/i2c/imx258.c                                | 4 +--- >  drivers/media/i2c/imx274.c                                | 3 +-- >  drivers/media/i2c/imx290.c                                | 4 +--- >  drivers/media/i2c/imx319.c                                | 4 +--- >  drivers/media/i2c/imx334.c                                | 4 +--- >  drivers/media/i2c/imx335.c                                | 4 +--- >  drivers/media/i2c/imx355.c                                | 4 +--- >  drivers/media/i2c/imx412.c                                | 4 +--- >  drivers/media/i2c/ir-kbd-i2c.c                            | 4 +--- >  drivers/media/i2c/isl7998x.c                              | 4 +--- >  drivers/media/i2c/ks0127.c                                | 3 +-- >  drivers/media/i2c/lm3560.c                                | 4 +--- >  drivers/media/i2c/lm3646.c                                | 4 +--- >  drivers/media/i2c/m52790.c                                | 3 +-- >  drivers/media/i2c/m5mols/m5mols_core.c                    | 4 +--- >  drivers/media/i2c/max2175.c                               | 4 +--- >  drivers/media/i2c/max9286.c                               | 4 +--- >  drivers/media/i2c/ml86v7667.c                             | 4 +--- >  drivers/media/i2c/msp3400-driver.c                        | 3 +-- >  drivers/media/i2c/mt9m001.c                               | 4 +--- >  drivers/media/i2c/mt9m032.c                               | 3 +-- >  drivers/media/i2c/mt9m111.c                               | 4 +--- >  drivers/media/i2c/mt9p031.c                               | 4 +--- >  drivers/media/i2c/mt9t001.c                               | 3 +-- >  drivers/media/i2c/mt9t112.c                               | 4 +--- >  drivers/media/i2c/mt9v011.c                               | 4 +--- >  drivers/media/i2c/mt9v032.c                               | 4 +--- >  drivers/media/i2c/mt9v111.c                               | 4 +--- >  drivers/media/i2c/noon010pc30.c                           | 4 +--- >  drivers/media/i2c/og01a1b.c                               | 4 +--- >  drivers/media/i2c/ov02a10.c                               | 4 +--- >  drivers/media/i2c/ov08d10.c                               | 4 +--- >  drivers/media/i2c/ov13858.c                               | 4 +--- >  drivers/media/i2c/ov13b10.c                               | 4 +--- >  drivers/media/i2c/ov2640.c                                | 3 +-- >  drivers/media/i2c/ov2659.c                                | 4 +--- >  drivers/media/i2c/ov2680.c                                | 4 +--- >  drivers/media/i2c/ov2685.c                                | 4 +--- >  drivers/media/i2c/ov2740.c                                | 4 +--- >  drivers/media/i2c/ov5640.c                                | 4 +--- >  drivers/media/i2c/ov5645.c                                | 4 +--- >  drivers/media/i2c/ov5647.c                                | 4 +--- >  drivers/media/i2c/ov5648.c                                | 4 +--- >  drivers/media/i2c/ov5670.c                                | 4 +--- >  drivers/media/i2c/ov5675.c                                | 4 +--- >  drivers/media/i2c/ov5693.c                                | 4 +--- >  drivers/media/i2c/ov5695.c                                | 4 +--- >  drivers/media/i2c/ov6650.c                                | 3 +-- >  drivers/media/i2c/ov7251.c                                | 4 +--- >  drivers/media/i2c/ov7640.c                                | 4 +--- >  drivers/media/i2c/ov7670.c                                | 3 +-- >  drivers/media/i2c/ov772x.c                                | 4 +--- >  drivers/media/i2c/ov7740.c                                | 3 +-- >  drivers/media/i2c/ov8856.c                                | 4 +--- >  drivers/media/i2c/ov8865.c                                | 4 +--- >  drivers/media/i2c/ov9282.c                                | 4 +--- >  drivers/media/i2c/ov9640.c                                | 4 +--- >  drivers/media/i2c/ov9650.c                                | 4 +--- >  drivers/media/i2c/ov9734.c                                | 4 +--- >  drivers/media/i2c/rdacm20.c                               | 4 +--- >  drivers/media/i2c/rdacm21.c                               | 4 +--- >  drivers/media/i2c/rj54n1cb0c.c                            | 4 +--- >  drivers/media/i2c/s5c73m3/s5c73m3-core.c                  | 4 +--- >  drivers/media/i2c/s5k4ecgx.c                              | 4 +--- >  drivers/media/i2c/s5k5baf.c                               | 4 +--- >  drivers/media/i2c/s5k6a3.c                                | 3 +-- >  drivers/media/i2c/s5k6aa.c                                | 4 +--- >  drivers/media/i2c/saa6588.c                               | 4 +--- >  drivers/media/i2c/saa6752hs.c                             | 3 +-- >  drivers/media/i2c/saa7110.c                               | 3 +-- >  drivers/media/i2c/saa7115.c                               | 3 +-- >  drivers/media/i2c/saa7127.c                               | 3 +-- >  drivers/media/i2c/saa717x.c                               | 3 +-- >  drivers/media/i2c/saa7185.c                               | 3 +-- >  drivers/media/i2c/sony-btf-mpx.c                          | 4 +--- >  drivers/media/i2c/sr030pc30.c                             | 3 +-- >  drivers/media/i2c/st-mipid02.c                            | 4 +--- >  drivers/media/i2c/tc358743.c                              | 4 +--- >  drivers/media/i2c/tda1997x.c                              | 4 +--- >  drivers/media/i2c/tda7432.c                               | 3 +-- >  drivers/media/i2c/tda9840.c                               | 3 +-- >  drivers/media/i2c/tea6415c.c                              | 3 +-- >  drivers/media/i2c/tea6420.c                               | 3 +-- >  drivers/media/i2c/ths7303.c                               | 4 +--- >  drivers/media/i2c/ths8200.c                               | 4 +--- >  drivers/media/i2c/tlv320aic23b.c                          | 3 +-- >  drivers/media/i2c/tvaudio.c                               | 3 +-- >  drivers/media/i2c/tvp514x.c                               | 3 +-- >  drivers/media/i2c/tvp5150.c                               | 4 +--- >  drivers/media/i2c/tvp7002.c                               | 3 +-- >  drivers/media/i2c/tw2804.c                                | 3 +-- >  drivers/media/i2c/tw9903.c                                | 3 +-- >  drivers/media/i2c/tw9906.c                                | 3 +-- >  drivers/media/i2c/tw9910.c                                | 4 +--- >  drivers/media/i2c/uda1342.c                               | 3 +-- >  drivers/media/i2c/upd64031a.c                             | 3 +-- >  drivers/media/i2c/upd64083.c                              | 3 +-- >  drivers/media/i2c/video-i2c.c                             | 4 +--- >  drivers/media/i2c/vp27smpx.c                              | 3 +-- >  drivers/media/i2c/vpx3220.c                               | 4 +--- >  drivers/media/i2c/vs6624.c                                | 3 +-- >  drivers/media/i2c/wm8739.c                                | 3 +-- >  drivers/media/i2c/wm8775.c                                | 3 +-- >  drivers/media/radio/radio-tea5764.c                       | 3 +-- >  drivers/media/radio/saa7706h.c                            | 3 +-- >  drivers/media/radio/si470x/radio-si470x-i2c.c             | 3 +-- >  drivers/media/radio/si4713/si4713.c                       | 4 +--- >  drivers/media/radio/tef6862.c                             | 3 +-- >  drivers/media/test-drivers/vidtv/vidtv_demod.c            | 4 +--- >  drivers/media/test-drivers/vidtv/vidtv_tuner.c            | 4 +--- >  drivers/media/tuners/e4000.c                              | 4 +--- >  drivers/media/tuners/fc2580.c                             | 3 +-- >  drivers/media/tuners/m88rs6000t.c                         | 4 +--- >  drivers/media/tuners/mt2060.c                             | 4 +--- >  drivers/media/tuners/mxl301rf.c                           | 3 +-- >  drivers/media/tuners/qm1d1b0004.c                         | 3 +-- >  drivers/media/tuners/qm1d1c0042.c                         | 3 +-- >  drivers/media/tuners/si2157.c                             | 4 +--- >  drivers/media/tuners/tda18212.c                           | 4 +--- >  drivers/media/tuners/tda18250.c                           | 4 +--- >  drivers/media/tuners/tua9001.c                            | 3 +-- >  drivers/media/usb/go7007/s2250-board.c                    | 3 +-- >  drivers/media/v4l2-core/tuner-core.c                      | 3 +-- >  drivers/mfd/88pm800.c                                     | 4 +--- >  drivers/mfd/88pm805.c                                     | 4 +--- >  drivers/mfd/88pm860x-core.c                               | 3 +-- >  drivers/mfd/acer-ec-a500.c                                | 4 +--- >  drivers/mfd/arizona-i2c.c                                 | 4 +--- >  drivers/mfd/axp20x-i2c.c                                  | 4 +--- >  drivers/mfd/da903x.c                                      | 3 +-- >  drivers/mfd/da9052-i2c.c                                  | 3 +-- >  drivers/mfd/da9055-i2c.c                                  | 4 +--- >  drivers/mfd/da9062-core.c                                 | 4 +--- >  drivers/mfd/da9150-core.c                                 | 4 +--- >  drivers/mfd/dm355evm_msp.c                                | 3 +-- >  drivers/mfd/ene-kb3930.c                                  | 4 +--- >  drivers/mfd/gateworks-gsc.c                               | 4 +--- >  drivers/mfd/intel_soc_pmic_core.c                         | 4 +--- >  drivers/mfd/iqs62x.c                                      | 4 +--- >  drivers/mfd/lm3533-core.c                                 | 4 +--- >  drivers/mfd/lp8788.c                                      | 3 +-- >  drivers/mfd/madera-i2c.c                                  | 4 +--- >  drivers/mfd/max14577.c                                    | 4 +--- >  drivers/mfd/max77693.c                                    | 4 +--- >  drivers/mfd/max8907.c                                     | 4 +--- >  drivers/mfd/max8925-i2c.c                                 | 3 +-- >  drivers/mfd/mc13xxx-i2c.c                                 | 3 +-- >  drivers/mfd/menelaus.c                                    | 3 +-- >  drivers/mfd/ntxec.c                                       | 4 +--- >  drivers/mfd/palmas.c                                      | 4 +--- >  drivers/mfd/pcf50633-core.c                               | 4 +--- >  drivers/mfd/retu-mfd.c                                    | 4 +--- >  drivers/mfd/rk808.c                                       | 4 +--- >  drivers/mfd/rn5t618.c                                     | 4 +--- >  drivers/mfd/rsmu_i2c.c                                    | 4 +--- >  drivers/mfd/rt4831.c                                      | 4 +--- >  drivers/mfd/si476x-i2c.c                                  | 4 +--- >  drivers/mfd/stmfx.c                                       | 4 +--- >  drivers/mfd/stmpe-i2c.c                                   | 4 +--- >  drivers/mfd/tc3589x.c                                     | 4 +--- >  drivers/mfd/tps6105x.c                                    | 4 +--- >  drivers/mfd/tps65010.c                                    | 3 +-- >  drivers/mfd/tps65086.c                                    | 4 +--- >  drivers/mfd/tps65217.c                                    | 4 +--- >  drivers/mfd/tps6586x.c                                    | 3 +-- >  drivers/mfd/tps65912-i2c.c                                | 4 +--- >  drivers/mfd/twl-core.c                                    | 3 +-- >  drivers/mfd/twl6040.c                                     | 4 +--- >  drivers/mfd/wm8994-core.c                                 | 4 +--- >  drivers/misc/ad525x_dpot-i2c.c                            | 3 +-- >  drivers/misc/apds9802als.c                                | 3 +-- >  drivers/misc/apds990x.c                                   | 3 +-- >  drivers/misc/bh1770glc.c                                  | 4 +--- >  drivers/misc/ds1682.c                                     | 3 +-- >  drivers/misc/eeprom/at24.c                                | 4 +--- >  drivers/misc/eeprom/ee1004.c                              | 4 +--- >  drivers/misc/eeprom/eeprom.c                              | 4 +--- >  drivers/misc/eeprom/idt_89hpesx.c                         | 4 +--- >  drivers/misc/eeprom/max6875.c                             | 4 +--- >  drivers/misc/hmc6352.c                                    | 3 +-- >  drivers/misc/ics932s401.c                                 | 5 ++--- >  drivers/misc/isl29003.c                                   | 3 +-- >  drivers/misc/isl29020.c                                   | 3 +-- >  drivers/misc/lis3lv02d/lis3lv02d_i2c.c                    | 3 +-- >  drivers/misc/tsl2550.c                                    | 4 +--- >  drivers/mtd/maps/pismo.c                                  | 4 +--- >  drivers/net/dsa/lan9303_i2c.c                             | 6 ++---- >  drivers/net/dsa/microchip/ksz9477_i2c.c                   | 4 +--- >  drivers/net/dsa/xrs700x/xrs700x_i2c.c                     | 6 ++---- >  drivers/net/ethernet/mellanox/mlxsw/i2c.c                 | 4 +--- >  drivers/net/mctp/mctp-i2c.c                               | 3 +-- >  drivers/nfc/fdp/i2c.c                                     | 4 +--- >  drivers/nfc/microread/i2c.c                               | 4 +--- >  drivers/nfc/nfcmrvl/i2c.c                                 | 4 +--- >  drivers/nfc/nxp-nci/i2c.c                                 | 4 +--- >  drivers/nfc/pn533/i2c.c                                   | 4 +--- >  drivers/nfc/pn544/i2c.c                                   | 4 +--- >  drivers/nfc/s3fwrn5/i2c.c                                 | 4 +--- >  drivers/nfc/st-nci/i2c.c                                  | 4 +--- >  drivers/nfc/st21nfca/i2c.c                                | 4 +--- >  drivers/of/unittest.c                                     | 6 ++---- >  drivers/platform/chrome/cros_ec_i2c.c                     | 4 +--- >  drivers/platform/surface/surface3_power.c                 | 4 +--- >  drivers/platform/x86/asus-tf103c-dock.c                   | 4 +--- >  drivers/platform/x86/intel/int3472/tps68470.c             | 4 +--- >  drivers/power/supply/bq2415x_charger.c                    | 4 +--- >  drivers/power/supply/bq24190_charger.c                    | 4 +--- >  drivers/power/supply/bq24257_charger.c                    | 4 +--- >  drivers/power/supply/bq25890_charger.c                    | 4 +--- >  drivers/power/supply/bq27xxx_battery_i2c.c                | 4 +--- >  drivers/power/supply/cw2015_battery.c                     | 3 +-- >  drivers/power/supply/ds2782_battery.c                     | 4 +--- >  drivers/power/supply/lp8727_charger.c                     | 3 +-- >  drivers/power/supply/rt5033_battery.c                     | 4 +--- >  drivers/power/supply/rt9455_charger.c                     | 4 +--- >  drivers/power/supply/smb347-charger.c                     | 4 +--- >  drivers/power/supply/z2_battery.c                         | 4 +--- >  drivers/pwm/pwm-pca9685.c                                 | 4 +--- >  drivers/regulator/da9121-regulator.c                      | 3 +-- >  drivers/regulator/lp8755.c                                | 4 +--- >  drivers/regulator/rpi-panel-attiny-regulator.c            | 4 +--- >  drivers/rtc/rtc-bq32k.c                                   | 4 +--- >  drivers/rtc/rtc-ds1374.c                                  | 4 +--- >  drivers/rtc/rtc-isl12026.c                                | 3 +-- >  drivers/rtc/rtc-m41t80.c                                  | 4 +--- >  drivers/rtc/rtc-rs5c372.c                                 | 3 +-- >  drivers/rtc/rtc-x1205.c                                   | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-gc0310.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-gc2235.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-lm3554.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c       | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-ov2680.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-ov2722.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c | 4 +--- >  drivers/staging/media/max96712/max96712.c                 | 4 +--- >  drivers/staging/most/i2c/i2c.c                            | 4 +--- >  drivers/staging/olpc_dcon/olpc_dcon.c                     | 4 +--- >  drivers/tty/serial/sc16is7xx.c                            | 4 +--- >  drivers/usb/misc/usb3503.c                                | 4 +--- >  drivers/usb/phy/phy-isp1301-omap.c                        | 4 +--- >  drivers/usb/phy/phy-isp1301.c                             | 4 +--- >  drivers/usb/typec/hd3ss3220.c                             | 4 +--- >  drivers/usb/typec/mux/fsa4480.c                           | 4 +--- >  drivers/usb/typec/mux/pi3usb30532.c                       | 3 +-- >  drivers/usb/typec/rt1719.c                                | 4 +--- >  drivers/usb/typec/stusb160x.c                             | 4 +--- >  drivers/usb/typec/tcpm/fusb302.c                          | 4 +--- >  drivers/usb/typec/tcpm/tcpci.c                            | 4 +--- >  drivers/usb/typec/tcpm/tcpci_maxim.c                      | 4 +--- >  drivers/usb/typec/tcpm/tcpci_rt1711h.c                    | 3 +-- >  drivers/usb/typec/tipd/core.c                             | 4 +--- >  drivers/usb/typec/ucsi/ucsi_ccg.c                         | 4 +--- >  drivers/usb/typec/wusb3801.c                              | 4 +--- >  drivers/video/backlight/adp8860_bl.c                      | 4 +--- >  drivers/video/backlight/adp8870_bl.c                      | 4 +--- >  drivers/video/backlight/arcxcnn_bl.c                      | 4 +--- >  drivers/video/backlight/bd6107.c                          | 4 +--- >  drivers/video/backlight/lm3630a_bl.c                      | 3 +-- >  drivers/video/backlight/lm3639_bl.c                       | 3 +-- >  drivers/video/backlight/lp855x_bl.c                       | 4 +--- >  drivers/video/backlight/lv5207lp.c                        | 4 +--- >  drivers/video/backlight/tosa_bl.c                         | 3 +-- >  drivers/video/fbdev/matrox/matroxfb_maven.c               | 3 +-- >  drivers/video/fbdev/ssd1307fb.c                           | 4 +--- >  drivers/w1/masters/ds2482.c                               | 3 +-- >  drivers/watchdog/ziirave_wdt.c                            | 4 +--- >  include/linux/i2c.h                                       | 2 +- >  lib/Kconfig.kasan                                         | 1 + >  sound/aoa/codecs/onyx.c                                   | 3 +-- >  sound/aoa/codecs/tas.c                                    | 3 +-- >  sound/pci/hda/cs35l41_hda_i2c.c                           | 4 +--- >  sound/ppc/keywest.c                                       | 6 ++---- >  sound/soc/codecs/adau1761-i2c.c                           | 3 +-- >  sound/soc/codecs/adau1781-i2c.c                           | 3 +-- >  sound/soc/codecs/ak4375.c                                 | 4 +--- >  sound/soc/codecs/ak4458.c                                 | 4 +--- >  sound/soc/codecs/ak4641.c                                 | 4 +--- >  sound/soc/codecs/ak5558.c                                 | 4 +--- >  sound/soc/codecs/cs35l32.c                                | 4 +--- >  sound/soc/codecs/cs35l33.c                                | 4 +--- >  sound/soc/codecs/cs35l34.c                                | 4 +--- >  sound/soc/codecs/cs35l35.c                                | 4 +--- >  sound/soc/codecs/cs35l36.c                                | 4 +--- >  sound/soc/codecs/cs35l41-i2c.c                            | 4 +--- >  sound/soc/codecs/cs35l45-i2c.c                            | 4 +--- >  sound/soc/codecs/cs4234.c                                 | 4 +--- >  sound/soc/codecs/cs4265.c                                 | 4 +--- >  sound/soc/codecs/cs4270.c                                 | 4 +--- >  sound/soc/codecs/cs42l42.c                                | 4 +--- >  sound/soc/codecs/cs42l51-i2c.c                            | 4 +--- >  sound/soc/codecs/cs42l56.c                                | 3 +-- >  sound/soc/codecs/cs42xx8-i2c.c                            | 4 +--- >  sound/soc/codecs/cs43130.c                                | 4 +--- >  sound/soc/codecs/cs4349.c                                 | 4 +--- >  sound/soc/codecs/cs53l30.c                                | 4 +--- >  sound/soc/codecs/cx2072x.c                                | 3 +-- >  sound/soc/codecs/max98090.c                               | 4 +--- >  sound/soc/codecs/max9860.c                                | 3 +-- >  sound/soc/codecs/max98927.c                               | 4 +--- >  sound/soc/codecs/mt6660.c                                 | 3 +-- >  sound/soc/codecs/nau8821.c                                | 4 +--- >  sound/soc/codecs/nau8825.c                                | 6 ++---- >  sound/soc/codecs/pcm1789-i2c.c                            | 4 +--- >  sound/soc/codecs/pcm3168a-i2c.c                           | 4 +--- >  sound/soc/codecs/pcm512x-i2c.c                            | 3 +-- >  sound/soc/codecs/rt274.c                                  | 4 +--- >  sound/soc/codecs/rt286.c                                  | 4 +--- >  sound/soc/codecs/rt298.c                                  | 4 +--- >  sound/soc/codecs/rt5616.c                                 | 6 ++---- >  sound/soc/codecs/rt5631.c                                 | 6 ++---- >  sound/soc/codecs/rt5645.c                                 | 4 +--- >  sound/soc/codecs/rt5663.c                                 | 4 +--- >  sound/soc/codecs/rt5670.c                                 | 4 +--- >  sound/soc/codecs/rt5677.c                                 | 4 +--- >  sound/soc/codecs/rt5682-i2c.c                             | 4 +--- >  sound/soc/codecs/rt5682s.c                                | 4 +--- >  sound/soc/codecs/rt9120.c                                 | 3 +-- >  sound/soc/codecs/sgtl5000.c                               | 4 +--- >  sound/soc/codecs/sta350.c                                 | 6 ++---- >  sound/soc/codecs/tas2552.c                                | 3 +-- >  sound/soc/codecs/tas5086.c                                | 6 ++---- >  sound/soc/codecs/tas571x.c                                | 4 +--- >  sound/soc/codecs/tas5805m.c                               | 3 +-- >  sound/soc/codecs/tas6424.c                                | 4 +--- >  sound/soc/codecs/tlv320adc3xxx.c                          | 3 +-- >  sound/soc/codecs/tlv320aic32x4-i2c.c                      | 4 +--- >  sound/soc/codecs/tlv320aic3x-i2c.c                        | 4 +--- >  sound/soc/codecs/tlv320dac33.c                            | 4 +--- >  sound/soc/codecs/wm1250-ev1.c                             | 4 +--- >  sound/soc/codecs/wm2200.c                                 | 4 +--- >  sound/soc/codecs/wm5100.c                                 | 4 +--- >  sound/soc/codecs/wm8804-i2c.c                             | 3 +-- >  sound/soc/codecs/wm8900.c                                 | 6 ++---- >  sound/soc/codecs/wm8903.c                                 | 4 +--- >  sound/soc/codecs/wm8960.c                                 | 6 ++---- >  sound/soc/codecs/wm8962.c                                 | 3 +-- >  sound/soc/codecs/wm8993.c                                 | 4 +--- >  sound/soc/codecs/wm8996.c                                 | 4 +--- >  sound/soc/codecs/wm9081.c                                 | 6 ++---- >  621 files changed, 648 insertions(+), 1735 deletions(-) > > diff --git a/Documentation/i2c/writing-clients.rst > b/Documentation/i2c/writing-clients.rst > index e3b126cf4a3b..c1b46844b0fb 100644 > --- a/Documentation/i2c/writing-clients.rst > +++ b/Documentation/i2c/writing-clients.rst > @@ -156,7 +156,7 @@ those devices, and a remove() method to unbind. >  :: >   >         static int foo_probe(struct i2c_client *client); > -       static int foo_remove(struct i2c_client *client); > +       static void foo_remove(struct i2c_client *client); >   >  Remember that the i2c_driver does not create those client handles.  > The >  handle may be used during foo_probe().  If foo_probe() reports > success > diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c > b/arch/arm/mach-davinci/board-dm644x-evm.c > index 9f405af36a6f..9055da325a3f 100644 > --- a/arch/arm/mach-davinci/board-dm644x-evm.c > +++ b/arch/arm/mach-davinci/board-dm644x-evm.c > @@ -554,10 +554,9 @@ static int dm6446evm_msp_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int dm6446evm_msp_remove(struct i2c_client *client) > +static void dm6446evm_msp_remove(struct i2c_client *client) >  { >         dm6446evm_msp = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id dm6446evm_msp_ids[] = { > diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c > b/arch/arm/mach-davinci/board-dm646x-evm.c > index 84ad065e98c2..287bb5833ec0 100644 > --- a/arch/arm/mach-davinci/board-dm646x-evm.c > +++ b/arch/arm/mach-davinci/board-dm646x-evm.c > @@ -403,10 +403,9 @@ static int cpld_video_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int cpld_video_remove(struct i2c_client *client) > +static void cpld_video_remove(struct i2c_client *client) >  { >         cpld_client = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id cpld_video_id[] = { > diff --git a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > index abb62fa630ef..77ed61306a73 100644 > --- a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > +++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > @@ -178,7 +178,7 @@ static int mcu_probe(struct i2c_client *client) >         return ret; >  } >   > -static int mcu_remove(struct i2c_client *client) > +static void mcu_remove(struct i2c_client *client) >  { >         struct mcu *mcu = i2c_get_clientdata(client); >   > @@ -193,7 +193,6 @@ static int mcu_remove(struct i2c_client *client) >   >         mcu_gpiochip_remove(mcu); >         kfree(mcu); > -       return 0; >  } >   >  static const struct i2c_device_id mcu_ids[] = { > diff --git a/drivers/auxdisplay/ht16k33.c > b/drivers/auxdisplay/ht16k33.c > index 4fab3b2c7023..02425991c159 100644 > --- a/drivers/auxdisplay/ht16k33.c > +++ b/drivers/auxdisplay/ht16k33.c > @@ -775,7 +775,7 @@ static int ht16k33_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ht16k33_remove(struct i2c_client *client) > +static void ht16k33_remove(struct i2c_client *client) >  { >         struct ht16k33_priv *priv = i2c_get_clientdata(client); >         struct ht16k33_fbdev *fbdev = &priv->fbdev; > @@ -796,8 +796,6 @@ static int ht16k33_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, > &dev_attr_map_seg14); >                 break; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ht16k33_i2c_match[] = { > diff --git a/drivers/auxdisplay/lcd2s.c b/drivers/auxdisplay/lcd2s.c > index e465108d9998..135831a16514 100644 > --- a/drivers/auxdisplay/lcd2s.c > +++ b/drivers/auxdisplay/lcd2s.c > @@ -340,13 +340,12 @@ static int lcd2s_i2c_probe(struct i2c_client > *i2c) >         return err; >  } >   > -static int lcd2s_i2c_remove(struct i2c_client *i2c) > +static void lcd2s_i2c_remove(struct i2c_client *i2c) >  { >         struct lcd2s_data *lcd2s = i2c_get_clientdata(i2c); >   >         charlcd_unregister(lcd2s->charlcd); >         charlcd_free(lcd2s->charlcd); > -       return 0; >  } >   >  static const struct i2c_device_id lcd2s_i2c_id[] = { > diff --git a/drivers/char/ipmi/ipmb_dev_int.c > b/drivers/char/ipmi/ipmb_dev_int.c > index db40037eb347..a0e9e80d92ee 100644 > --- a/drivers/char/ipmi/ipmb_dev_int.c > +++ b/drivers/char/ipmi/ipmb_dev_int.c > @@ -341,14 +341,12 @@ static int ipmb_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ipmb_remove(struct i2c_client *client) > +static void ipmb_remove(struct i2c_client *client) >  { >         struct ipmb_dev *ipmb_dev = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         misc_deregister(&ipmb_dev->miscdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ipmb_id[] = { > diff --git a/drivers/char/ipmi/ipmi_ipmb.c > b/drivers/char/ipmi/ipmi_ipmb.c > index ab19b4b3317e..25c010c9ec25 100644 > --- a/drivers/char/ipmi/ipmi_ipmb.c > +++ b/drivers/char/ipmi/ipmi_ipmb.c > @@ -424,7 +424,7 @@ static void ipmi_ipmb_request_events(void > *send_info) >         /* We don't fetch events here. */ >  } >   > -static int ipmi_ipmb_remove(struct i2c_client *client) > +static void ipmi_ipmb_remove(struct i2c_client *client) >  { >         struct ipmi_ipmb_dev *iidev = i2c_get_clientdata(client); >   > @@ -438,8 +438,6 @@ static int ipmi_ipmb_remove(struct i2c_client > *client) >         ipmi_ipmb_stop_thread(iidev); >   >         ipmi_unregister_smi(iidev->intf); > - > -       return 0; >  } >   >  static int ipmi_ipmb_probe(struct i2c_client *client) > diff --git a/drivers/char/ipmi/ipmi_ssif.c > b/drivers/char/ipmi/ipmi_ssif.c > index fc742ee9c046..13da021e7c6b 100644 > --- a/drivers/char/ipmi/ipmi_ssif.c > +++ b/drivers/char/ipmi/ipmi_ssif.c > @@ -1281,13 +1281,13 @@ static void shutdown_ssif(void *send_info) >         } >  } >   > -static int ssif_remove(struct i2c_client *client) > +static void ssif_remove(struct i2c_client *client) >  { >         struct ssif_info *ssif_info = i2c_get_clientdata(client); >         struct ssif_addr_info *addr_info; >   >         if (!ssif_info) > -               return 0; > +               return; >   >         /* >          * After this point, we won't deliver anything asychronously > @@ -1303,8 +1303,6 @@ static int ssif_remove(struct i2c_client > *client) >         } >   >         kfree(ssif_info); > - > -       return 0; >  } >   >  static int read_response(struct i2c_client *client, unsigned char > *resp) > diff --git a/drivers/char/tpm/st33zp24/i2c.c > b/drivers/char/tpm/st33zp24/i2c.c > index 3170d59d660c..a3aa411389e7 100644 > --- a/drivers/char/tpm/st33zp24/i2c.c > +++ b/drivers/char/tpm/st33zp24/i2c.c > @@ -264,13 +264,11 @@ static int st33zp24_i2c_probe(struct i2c_client > *client, >   * @param: client, the i2c_client description (TPM I2C description). >   * @return: 0 in case of success. >   */ > -static int st33zp24_i2c_remove(struct i2c_client *client) > +static void st33zp24_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         st33zp24_remove(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id st33zp24_i2c_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_atmel.c > b/drivers/char/tpm/tpm_i2c_atmel.c > index d5ac85558214..4be3677c1463 100644 > --- a/drivers/char/tpm/tpm_i2c_atmel.c > +++ b/drivers/char/tpm/tpm_i2c_atmel.c > @@ -179,12 +179,11 @@ static int i2c_atmel_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_atmel_remove(struct i2c_client *client) > +static void i2c_atmel_remove(struct i2c_client *client) >  { >         struct device *dev = &(client->dev); >         struct tpm_chip *chip = dev_get_drvdata(dev); >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_atmel_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_infineon.c > b/drivers/char/tpm/tpm_i2c_infineon.c > index a19d32cb4e94..fd3c3661e646 100644 > --- a/drivers/char/tpm/tpm_i2c_infineon.c > +++ b/drivers/char/tpm/tpm_i2c_infineon.c > @@ -706,15 +706,13 @@ static int tpm_tis_i2c_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int tpm_tis_i2c_remove(struct i2c_client *client) > +static void tpm_tis_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = tpm_dev.chip; >   >         tpm_chip_unregister(chip); >         release_locality(chip, tpm_dev.locality, 1); >         tpm_dev.client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver tpm_tis_i2c_driver = { > diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c > b/drivers/char/tpm/tpm_i2c_nuvoton.c > index b77c18e38662..95c37350cc8e 100644 > --- a/drivers/char/tpm/tpm_i2c_nuvoton.c > +++ b/drivers/char/tpm/tpm_i2c_nuvoton.c > @@ -622,12 +622,11 @@ static int i2c_nuvoton_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_nuvoton_remove(struct i2c_client *client) > +static void i2c_nuvoton_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_nuvoton_id[] = { > diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c > b/drivers/char/tpm/tpm_tis_i2c_cr50.c > index 974479a1ec5a..77cea5b31c6e 100644 > --- a/drivers/char/tpm/tpm_tis_i2c_cr50.c > +++ b/drivers/char/tpm/tpm_tis_i2c_cr50.c > @@ -763,20 +763,18 @@ static int tpm_cr50_i2c_probe(struct i2c_client > *client) >   * - 0:                Success. >   * - -errno:   A POSIX error code. >   */ > -static int tpm_cr50_i2c_remove(struct i2c_client *client) > +static void tpm_cr50_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >         struct device *dev = &client->dev; >   >         if (!chip) { >                 dev_crit(dev, "Could not get client data at remove, > memory corruption ahead\n"); > -               return 0; > +               return; >         } >   >         tpm_chip_unregister(chip); >         tpm_cr50_release_locality(chip, true); > - > -       return 0; >  } >   >  static SIMPLE_DEV_PM_OPS(cr50_i2c_pm, tpm_pm_suspend, > tpm_pm_resume); > diff --git a/drivers/clk/clk-cdce706.c b/drivers/clk/clk-cdce706.c > index 5467d941ddfd..1449d0537674 100644 > --- a/drivers/clk/clk-cdce706.c > +++ b/drivers/clk/clk-cdce706.c > @@ -665,10 +665,9 @@ static int cdce706_probe(struct i2c_client > *client) >                                       cdce); >  } >   > -static int cdce706_remove(struct i2c_client *client) > +static void cdce706_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >   > diff --git a/drivers/clk/clk-cs2000-cp.c b/drivers/clk/clk-cs2000- > cp.c > index aa5c72bab83e..320d39922206 100644 > --- a/drivers/clk/clk-cs2000-cp.c > +++ b/drivers/clk/clk-cs2000-cp.c > @@ -557,7 +557,7 @@ static int cs2000_version_print(struct > cs2000_priv *priv) >         return 0; >  } >   > -static int cs2000_remove(struct i2c_client *client) > +static void cs2000_remove(struct i2c_client *client) >  { >         struct cs2000_priv *priv = i2c_get_clientdata(client); >         struct device *dev = priv_to_dev(priv); > @@ -566,8 +566,6 @@ static int cs2000_remove(struct i2c_client > *client) >         of_clk_del_provider(np); >   >         clk_hw_unregister(&priv->hw); > - > -       return 0; >  } >   >  static int cs2000_probe(struct i2c_client *client) > diff --git a/drivers/clk/clk-si514.c b/drivers/clk/clk-si514.c > index 4481c4303534..c028fa103bed 100644 > --- a/drivers/clk/clk-si514.c > +++ b/drivers/clk/clk-si514.c > @@ -370,10 +370,9 @@ static int si514_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si514_remove(struct i2c_client *client) > +static void si514_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct i2c_device_id si514_id[] = { > diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c > index 4bca73212662..0e528d7ba656 100644 > --- a/drivers/clk/clk-si5341.c > +++ b/drivers/clk/clk-si5341.c > @@ -1796,7 +1796,7 @@ static int si5341_probe(struct i2c_client > *client) >         return err; >  } >   > -static int si5341_remove(struct i2c_client *client) > +static void si5341_remove(struct i2c_client *client) >  { >         struct clk_si5341 *data = i2c_get_clientdata(client); >         int i; > @@ -1807,8 +1807,6 @@ static int si5341_remove(struct i2c_client > *client) >                 if (data->clk[i].vddo_reg) >                         regulator_disable(data->clk[i].vddo_reg); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id si5341_id[] = { > diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c > index b9f088c4ba2f..9e939c98a455 100644 > --- a/drivers/clk/clk-si5351.c > +++ b/drivers/clk/clk-si5351.c > @@ -1651,11 +1651,9 @@ static int si5351_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si5351_i2c_remove(struct i2c_client *client) > +static void si5351_i2c_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > - > -       return 0; >  } >   >  static struct i2c_driver si5351_driver = { > diff --git a/drivers/clk/clk-si570.c b/drivers/clk/clk-si570.c > index 1ff8f32f734d..0a6d70c49726 100644 > --- a/drivers/clk/clk-si570.c > +++ b/drivers/clk/clk-si570.c > @@ -498,10 +498,9 @@ static int si570_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si570_remove(struct i2c_client *client) > +static void si570_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct of_device_id clk_si570_of_match[] = { > diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk- > versaclock5.c > index e7be3e54b9be..657493ecce4c 100644 > --- a/drivers/clk/clk-versaclock5.c > +++ b/drivers/clk/clk-versaclock5.c > @@ -1138,7 +1138,7 @@ static int vc5_probe(struct i2c_client *client) >         return ret; >  } >   > -static int vc5_remove(struct i2c_client *client) > +static void vc5_remove(struct i2c_client *client) >  { >         struct vc5_driver_data *vc5 = i2c_get_clientdata(client); >   > @@ -1146,8 +1146,6 @@ static int vc5_remove(struct i2c_client > *client) >   >         if (vc5->chip_info->flags & VC5_HAS_INTERNAL_XTAL) >                 clk_unregister_fixed_rate(vc5->pin_xin); > - > -       return 0; >  } >   >  static int __maybe_unused vc5_suspend(struct device *dev) > diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c > index a4b13d326cfc..82bf15d49561 100644 > --- a/drivers/crypto/atmel-ecc.c > +++ b/drivers/crypto/atmel-ecc.c > @@ -343,7 +343,7 @@ static int atmel_ecc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int atmel_ecc_remove(struct i2c_client *client) > +static void atmel_ecc_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   > @@ -358,7 +358,7 @@ static int atmel_ecc_remove(struct i2c_client > *client) >                  * accessing the freed memory. >                  */ >                 dev_emerg(&client->dev, "Device is busy, expect > memory corruption.\n"); > -               return 0; > +               return; >         } >   >         crypto_unregister_kpp(&atmel_ecdh_nist_p256); > @@ -366,8 +366,6 @@ static int atmel_ecc_remove(struct i2c_client > *client) >         spin_lock(&driver_data.i2c_list_lock); >         list_del(&i2c_priv->i2c_client_list_node); >         spin_unlock(&driver_data.i2c_list_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel- > sha204a.c > index e4087bdd2475..a84b657598c6 100644 > --- a/drivers/crypto/atmel-sha204a.c > +++ b/drivers/crypto/atmel-sha204a.c > @@ -116,18 +116,16 @@ static int atmel_sha204a_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int atmel_sha204a_remove(struct i2c_client *client) > +static void atmel_sha204a_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   >         if (atomic_read(&i2c_priv->tfm_count)) { >                 dev_emerg(&client->dev, "Device is busy, will remove > it anyhow\n"); > -               return 0; > +               return; >         } >   >         kfree((void *)i2c_priv->hwrng.priv); > - > -       return 0; >  } >   >  static const struct of_device_id atmel_sha204a_dt_ids[] = { > diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon- > rt8973a.c > index 40c07f4d656e..d1c674f3f2b9 100644 > --- a/drivers/extcon/extcon-rt8973a.c > +++ b/drivers/extcon/extcon-rt8973a.c > @@ -647,13 +647,11 @@ static int rt8973a_muic_i2c_probe(struct > i2c_client *i2c, >         return 0; >  } >   > -static int rt8973a_muic_i2c_remove(struct i2c_client *i2c) > +static void rt8973a_muic_i2c_remove(struct i2c_client *i2c) >  { >         struct rt8973a_muic_info *info = i2c_get_clientdata(i2c); >   >         regmap_del_irq_chip(info->irq, info->irq_data); > - > -       return 0; >  } >   >  static const struct of_device_id rt8973a_dt_match[] = { > diff --git a/drivers/gpio/gpio-adp5588.c b/drivers/gpio/gpio- > adp5588.c > index e388e75103f4..acb673dc9005 100644 > --- a/drivers/gpio/gpio-adp5588.c > +++ b/drivers/gpio/gpio-adp5588.c > @@ -411,14 +411,12 @@ static int adp5588_gpio_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adp5588_gpio_remove(struct i2c_client *client) > +static void adp5588_gpio_remove(struct i2c_client *client) >  { >         struct adp5588_gpio *dev = i2c_get_clientdata(client); >   >         if (dev->client->irq) >                 free_irq(dev->client->irq, dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp5588_gpio_id[] = { > diff --git a/drivers/gpio/gpio-max7300.c b/drivers/gpio/gpio- > max7300.c > index b2b547dd6e84..43da381a4d7e 100644 > --- a/drivers/gpio/gpio-max7300.c > +++ b/drivers/gpio/gpio-max7300.c > @@ -48,11 +48,9 @@ static int max7300_probe(struct i2c_client > *client, >         return __max730x_probe(ts); >  } >   > -static int max7300_remove(struct i2c_client *client) > +static void max7300_remove(struct i2c_client *client) >  { >         __max730x_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id max7300_id[] = { > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio- > pca953x.c > index 3eedeac9ec8d..fc5f037aaf64 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -1095,7 +1095,7 @@ static int pca953x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca953x_remove(struct i2c_client *client) > +static void pca953x_remove(struct i2c_client *client) >  { >         struct pca953x_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct pca953x_chip *chip = i2c_get_clientdata(client); > @@ -1106,8 +1106,6 @@ static int pca953x_remove(struct i2c_client > *client) >         } >   >         regulator_disable(chip->regulator); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio- > pcf857x.c > index 59cc27e4de51..e98ea47d7237 100644 > --- a/drivers/gpio/gpio-pcf857x.c > +++ b/drivers/gpio/gpio-pcf857x.c > @@ -399,7 +399,7 @@ static int pcf857x_probe(struct i2c_client > *client, >         return status; >  } >   > -static int pcf857x_remove(struct i2c_client *client) > +static void pcf857x_remove(struct i2c_client *client) >  { >         struct pcf857x_platform_data    *pdata = > dev_get_platdata(&client->dev); >         struct pcf857x                  *gpio = > i2c_get_clientdata(client); > @@ -407,8 +407,6 @@ static int pcf857x_remove(struct i2c_client > *client) >         if (pdata && pdata->teardown) >                 pdata->teardown(client, gpio->chip.base, gpio- > >chip.ngpio, >                                 pdata->context); > - > -       return 0; >  } >   >  static void pcf857x_shutdown(struct i2c_client *client) > diff --git a/drivers/gpio/gpio-tpic2810.c b/drivers/gpio/gpio- > tpic2810.c > index 99d5a84a9129..8d8290f36c8a 100644 > --- a/drivers/gpio/gpio-tpic2810.c > +++ b/drivers/gpio/gpio-tpic2810.c > @@ -134,13 +134,11 @@ static int tpic2810_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tpic2810_remove(struct i2c_client *client) > +static void tpic2810_remove(struct i2c_client *client) >  { >         struct tpic2810 *gpio = i2c_get_clientdata(client); >   >         gpiochip_remove(&gpio->chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id tpic2810_id_table[] = { > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 5bb9300040dd..06107b01e169 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -1335,7 +1335,7 @@ static int adv7511_probe(struct i2c_client > *i2c, const struct i2c_device_id *id) >         return ret; >  } >   > -static int adv7511_remove(struct i2c_client *i2c) > +static void adv7511_remove(struct i2c_client *i2c) >  { >         struct adv7511 *adv7511 = i2c_get_clientdata(i2c); >   > @@ -1352,8 +1352,6 @@ static int adv7511_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(adv7511->i2c_packet); >         i2c_unregister_device(adv7511->i2c_edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7511_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > index ae3d6e9a606c..660a54857929 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > @@ -787,7 +787,7 @@ static int anx6345_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx6345_i2c_remove(struct i2c_client *client) > +static void anx6345_i2c_remove(struct i2c_client *client) >  { >         struct anx6345 *anx6345 = i2c_get_clientdata(client); >   > @@ -798,8 +798,6 @@ static int anx6345_i2c_remove(struct i2c_client > *client) >         kfree(anx6345->edid); >   >         mutex_destroy(&anx6345->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx6345_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > index d2fc8676fab6..5997049fde5b 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > @@ -1357,7 +1357,7 @@ static int anx78xx_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx78xx_i2c_remove(struct i2c_client *client) > +static void anx78xx_i2c_remove(struct i2c_client *client) >  { >         struct anx78xx *anx78xx = i2c_get_clientdata(client); >   > @@ -1366,8 +1366,6 @@ static int anx78xx_i2c_remove(struct i2c_client > *client) >         unregister_i2c_dummy_clients(anx78xx); >   >         kfree(anx78xx->edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx78xx_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c > b/drivers/gpu/drm/bridge/analogix/anx7625.c > index 53a5da6c49dd..73f1d3338c81 100644 > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c > @@ -2733,7 +2733,7 @@ static int anx7625_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int anx7625_i2c_remove(struct i2c_client *client) > +static void anx7625_i2c_remove(struct i2c_client *client) >  { >         struct anx7625_data *platform = i2c_get_clientdata(client); >   > @@ -2755,8 +2755,6 @@ static int anx7625_i2c_remove(struct i2c_client > *client) >   >         if (platform->pdata.audio_en) >                 anx7625_unregister_audio(platform); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx7625_id[] = { > diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c > b/drivers/gpu/drm/bridge/chrontel-ch7033.c > index 486f405c2e16..efd587d2075f 100644 > --- a/drivers/gpu/drm/bridge/chrontel-ch7033.c > +++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c > @@ -582,14 +582,12 @@ static int ch7033_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ch7033_remove(struct i2c_client *client) > +static void ch7033_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct ch7033_priv *priv = dev_get_drvdata(dev); >   >         drm_bridge_remove(&priv->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ch7033_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > index 0f6d907432e3..fa91bdeddef0 100644 > --- a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > +++ b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > @@ -159,13 +159,11 @@ static int cros_ec_anx7688_bridge_probe(struct > i2c_client *client) >         return 0; >  } >   > -static int cros_ec_anx7688_bridge_remove(struct i2c_client *client) > +static void cros_ec_anx7688_bridge_remove(struct i2c_client *client) >  { >         struct cros_ec_anx7688 *anx7688 = i2c_get_clientdata(client); >   >         drm_bridge_remove(&anx7688->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id > cros_ec_anx7688_bridge_match_table[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it6505.c > b/drivers/gpu/drm/bridge/ite-it6505.c > index 4b673c4792d7..547e0c9d3bdc 100644 > --- a/drivers/gpu/drm/bridge/ite-it6505.c > +++ b/drivers/gpu/drm/bridge/ite-it6505.c > @@ -3316,7 +3316,7 @@ static int it6505_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it6505_i2c_remove(struct i2c_client *client) > +static void it6505_i2c_remove(struct i2c_client *client) >  { >         struct it6505 *it6505 = i2c_get_clientdata(client); >   > @@ -3324,8 +3324,6 @@ static int it6505_i2c_remove(struct i2c_client > *client) >         drm_dp_aux_unregister(&it6505->aux); >         it6505_debugfs_remove(it6505); >         it6505_poweroff(it6505); > - > -       return 0; >  } >   >  static const struct i2c_device_id it6505_id[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it66121.c > b/drivers/gpu/drm/bridge/ite-it66121.c > index 448c58e60c11..8d05ac2192f2 100644 > --- a/drivers/gpu/drm/bridge/ite-it66121.c > +++ b/drivers/gpu/drm/bridge/ite-it66121.c > @@ -1622,15 +1622,13 @@ static int it66121_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it66121_remove(struct i2c_client *client) > +static void it66121_remove(struct i2c_client *client) >  { >         struct it66121_ctx *ctx = i2c_get_clientdata(client); >   >         ite66121_power_off(ctx); >         drm_bridge_remove(&ctx->bridge); >         mutex_destroy(&ctx->lock); > - > -       return 0; >  } >   >  static const struct of_device_id it66121_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c > b/drivers/gpu/drm/bridge/lontium-lt8912b.c > index c642d1e02b2f..2f5c9ea46e93 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt8912b.c > +++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c > @@ -717,7 +717,7 @@ static int lt8912_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt8912_remove(struct i2c_client *client) > +static void lt8912_remove(struct i2c_client *client) >  { >         struct lt8912 *lt = i2c_get_clientdata(client); >   > @@ -725,7 +725,6 @@ static int lt8912_remove(struct i2c_client > *client) >         drm_bridge_remove(<->bridge); >         lt8912_free_i2c(lt); >         lt8912_put_dt(lt); > -       return 0; >  } >   >  static const struct of_device_id lt8912_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c > b/drivers/gpu/drm/bridge/lontium-lt9211.c > index e92821fbc639..0646ec28ad17 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9211.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c > @@ -765,13 +765,11 @@ static int lt9211_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9211_remove(struct i2c_client *client) > +static void lt9211_remove(struct i2c_client *client) >  { >         struct lt9211 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9211_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c > b/drivers/gpu/drm/bridge/lontium-lt9611.c > index 7ef8fe5abc12..492e948d624f 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c > @@ -1220,7 +1220,7 @@ static int lt9611_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611_remove(struct i2c_client *client) > +static void lt9611_remove(struct i2c_client *client) >  { >         struct lt9611 *lt9611 = i2c_get_clientdata(client); >   > @@ -1232,8 +1232,6 @@ static int lt9611_remove(struct i2c_client > *client) >   >         of_node_put(lt9611->dsi1_node); >         of_node_put(lt9611->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > index 3d62e6bf6892..b5a58106c328 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > @@ -977,7 +977,7 @@ static int lt9611uxc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611uxc_remove(struct i2c_client *client) > +static void lt9611uxc_remove(struct i2c_client *client) >  { >         struct lt9611uxc *lt9611uxc = i2c_get_clientdata(client); >   > @@ -992,8 +992,6 @@ static int lt9611uxc_remove(struct i2c_client > *client) >   >         of_node_put(lt9611uxc->dsi1_node); >         of_node_put(lt9611uxc->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611uxc_id[] = { > diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > index cce98bf2a4e7..9f175df11581 100644 > --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > @@ -355,11 +355,9 @@ static int stdp4028_ge_b850v3_fw_probe(struct > i2c_client *stdp4028_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) > +static void stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp4028_ge_b850v3_fw_i2c_table[] > = { > @@ -405,11 +403,9 @@ static int stdp2690_ge_b850v3_fw_probe(struct > i2c_client *stdp2690_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) > +static void stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp2690_ge_b850v3_fw_i2c_table[] > = { > diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c > b/drivers/gpu/drm/bridge/nxp-ptn3460.c > index 1ab91f4e057b..0851101a8c72 100644 > --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c > +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c > @@ -315,13 +315,11 @@ static int ptn3460_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ptn3460_remove(struct i2c_client *client) > +static void ptn3460_remove(struct i2c_client *client) >  { >         struct ptn3460_bridge *ptn_bridge = > i2c_get_clientdata(client); >   >         drm_bridge_remove(&ptn_bridge->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ptn3460_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c > b/drivers/gpu/drm/bridge/parade-ps8622.c > index 37b308850b4e..b54f418d2b7b 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8622.c > +++ b/drivers/gpu/drm/bridge/parade-ps8622.c > @@ -524,14 +524,12 @@ static int ps8622_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ps8622_remove(struct i2c_client *client) > +static void ps8622_remove(struct i2c_client *client) >  { >         struct ps8622_bridge *ps8622 = i2c_get_clientdata(client); >   >         backlight_device_unregister(ps8622->bl); >         drm_bridge_remove(&ps8622->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ps8622_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c > b/drivers/gpu/drm/bridge/parade-ps8640.c > index edb939b14c04..a09d1828d8e1 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -690,13 +690,11 @@ static int ps8640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ps8640_remove(struct i2c_client *client) > +static void ps8640_remove(struct i2c_client *client) >  { >         struct ps8640 *ps_bridge = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ps_bridge->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ps8640_match[] = { > diff --git a/drivers/gpu/drm/bridge/sii902x.c > b/drivers/gpu/drm/bridge/sii902x.c > index 65549fbfdc87..c5e5f83b97ce 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -1143,7 +1143,7 @@ static int sii902x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sii902x_remove(struct i2c_client *client) > +static void sii902x_remove(struct i2c_client *client) >   >  { >         struct sii902x *sii902x = i2c_get_clientdata(client); > @@ -1152,8 +1152,6 @@ static int sii902x_remove(struct i2c_client > *client) >         drm_bridge_remove(&sii902x->bridge); >         regulator_bulk_disable(ARRAY_SIZE(sii902x->supplies), >                                sii902x->supplies); > - > -       return 0; >  } >   >  static const struct of_device_id sii902x_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/sii9234.c > b/drivers/gpu/drm/bridge/sii9234.c > index 15c98a7bd81c..5b3061d4b5c3 100644 > --- a/drivers/gpu/drm/bridge/sii9234.c > +++ b/drivers/gpu/drm/bridge/sii9234.c > @@ -936,14 +936,12 @@ static int sii9234_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii9234_remove(struct i2c_client *client) > +static void sii9234_remove(struct i2c_client *client) >  { >         struct sii9234 *ctx = i2c_get_clientdata(client); >   >         sii9234_cable_out(ctx); >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii9234_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c > b/drivers/gpu/drm/bridge/sil-sii8620.c > index ec7745c31da0..eabd3e09adfa 100644 > --- a/drivers/gpu/drm/bridge/sil-sii8620.c > +++ b/drivers/gpu/drm/bridge/sil-sii8620.c > @@ -2346,7 +2346,7 @@ static int sii8620_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii8620_remove(struct i2c_client *client) > +static void sii8620_remove(struct i2c_client *client) >  { >         struct sii8620 *ctx = i2c_get_clientdata(client); >   > @@ -2360,8 +2360,6 @@ static int sii8620_remove(struct i2c_client > *client) >                 sii8620_cable_out(ctx); >         } >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii8620_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/tc358767.c > b/drivers/gpu/drm/bridge/tc358767.c > index 485717c8f0b4..a50316538a9b 100644 > --- a/drivers/gpu/drm/bridge/tc358767.c > +++ b/drivers/gpu/drm/bridge/tc358767.c > @@ -2148,13 +2148,11 @@ static int tc_probe(struct i2c_client > *client, const struct i2c_device_id *id) >         return 0; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358767_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/tc358768.c > b/drivers/gpu/drm/bridge/tc358768.c > index fd585bf925fe..4c4b77ce8aba 100644 > --- a/drivers/gpu/drm/bridge/tc358768.c > +++ b/drivers/gpu/drm/bridge/tc358768.c > @@ -1072,13 +1072,11 @@ static int tc358768_i2c_probe(struct > i2c_client *client, >         return mipi_dsi_host_register(&priv->dsi_host); >  } >   > -static int tc358768_i2c_remove(struct i2c_client *client) > +static void tc358768_i2c_remove(struct i2c_client *client) >  { >         struct tc358768_priv *priv = i2c_get_clientdata(client); >   >         mipi_dsi_host_unregister(&priv->dsi_host); > - > -       return 0; >  } >   >  static struct i2c_driver tc358768_driver = { > diff --git a/drivers/gpu/drm/bridge/tc358775.c > b/drivers/gpu/drm/bridge/tc358775.c > index 62a7ef352daa..1d097717b47b 100644 > --- a/drivers/gpu/drm/bridge/tc358775.c > +++ b/drivers/gpu/drm/bridge/tc358775.c > @@ -713,13 +713,11 @@ static int tc_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358775_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > index ac66f408b40c..8f93e374848c 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > @@ -726,14 +726,12 @@ static int sn65dsi83_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sn65dsi83_remove(struct i2c_client *client) > +static void sn65dsi83_remove(struct i2c_client *client) >  { >         struct sn65dsi83 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); >         of_node_put(ctx->host_node); > - > -       return 0; >  } >   >  static struct i2c_device_id sn65dsi83_id[] = { > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c > b/drivers/gpu/drm/bridge/ti-tfp410.c > index 756b3e6e776b..281ceb7b9840 100644 > --- a/drivers/gpu/drm/bridge/ti-tfp410.c > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c > @@ -392,11 +392,9 @@ static int tfp410_i2c_probe(struct i2c_client > *client, >         return tfp410_init(&client->dev, true); >  } >   > -static int tfp410_i2c_remove(struct i2c_client *client) > +static void tfp410_i2c_remove(struct i2c_client *client) >  { >         tfp410_fini(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tfp410_i2c_ids[] = { > diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c > b/drivers/gpu/drm/i2c/ch7006_drv.c > index b91e48d2190d..578b738859b9 100644 > --- a/drivers/gpu/drm/i2c/ch7006_drv.c > +++ b/drivers/gpu/drm/i2c/ch7006_drv.c > @@ -417,11 +417,9 @@ static int ch7006_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return -ENODEV; >  } >   > -static int ch7006_remove(struct i2c_client *client) > +static void ch7006_remove(struct i2c_client *client) >  { >         ch7006_dbg(client, "\n"); > - > -       return 0; >  } >   >  static int ch7006_resume(struct device *dev) > diff --git a/drivers/gpu/drm/i2c/tda9950.c > b/drivers/gpu/drm/i2c/tda9950.c > index 5b03fdd1eaa4..9ed54e7ccff2 100644 > --- a/drivers/gpu/drm/i2c/tda9950.c > +++ b/drivers/gpu/drm/i2c/tda9950.c > @@ -478,14 +478,12 @@ static int tda9950_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9950_remove(struct i2c_client *client) > +static void tda9950_remove(struct i2c_client *client) >  { >         struct tda9950_priv *priv = i2c_get_clientdata(client); >   >         cec_notifier_cec_adap_unregister(priv->notify, priv->adap); >         cec_unregister_adapter(priv->adap); > - > -       return 0; >  } >   >  static struct i2c_device_id tda9950_ids[] = { > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c > b/drivers/gpu/drm/i2c/tda998x_drv.c > index b7ec6c374fbd..1f5ce292f5b1 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -2075,11 +2075,10 @@ tda998x_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tda998x_remove(struct i2c_client *client) > +static void tda998x_remove(struct i2c_client *client) >  { >         component_del(&client->dev, &tda998x_ops); >         tda998x_destroy(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > index cb5cb27462df..36a46cb7fe1c 100644 > --- a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > +++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > @@ -288,7 +288,7 @@ static int lcd_olinuxino_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lcd_olinuxino_remove(struct i2c_client *client) > +static void lcd_olinuxino_remove(struct i2c_client *client) >  { >         struct lcd_olinuxino *panel = i2c_get_clientdata(client); >   > @@ -296,8 +296,6 @@ static int lcd_olinuxino_remove(struct i2c_client > *client) >   >         drm_panel_disable(&panel->panel); >         drm_panel_unprepare(&panel->panel); > - > -       return 0; >  } >   >  static const struct of_device_id lcd_olinuxino_of_ids[] = { > diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > index 145047e19394..6dc67b609873 100644 > --- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > +++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > @@ -445,7 +445,7 @@ static int rpi_touchscreen_probe(struct > i2c_client *i2c, >         return -ENODEV; >  } >   > -static int rpi_touchscreen_remove(struct i2c_client *i2c) > +static void rpi_touchscreen_remove(struct i2c_client *i2c) >  { >         struct rpi_touchscreen *ts = i2c_get_clientdata(i2c); >   > @@ -454,8 +454,6 @@ static int rpi_touchscreen_remove(struct > i2c_client *i2c) >         drm_panel_remove(&ts->base); >   >         mipi_dsi_device_unregister(ts->dsi); > - > -       return 0; >  } >   >  static int rpi_touchscreen_dsi_probe(struct mipi_dsi_device *dsi) > diff --git a/drivers/gpu/drm/solomon/ssd130x-i2c.c > b/drivers/gpu/drm/solomon/ssd130x-i2c.c > index 1e0fcec7be47..ddfa0bb5d9c9 100644 > --- a/drivers/gpu/drm/solomon/ssd130x-i2c.c > +++ b/drivers/gpu/drm/solomon/ssd130x-i2c.c > @@ -39,13 +39,11 @@ static int ssd130x_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ssd130x_i2c_remove(struct i2c_client *client) > +static void ssd130x_i2c_remove(struct i2c_client *client) >  { >         struct ssd130x_device *ssd130x = i2c_get_clientdata(client); >   >         ssd130x_remove(ssd130x); > - > -       return 0; >  } >   >  static void ssd130x_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c- > hid/i2c-hid-core.c > index c078f09a2318..95cefae47adf 100644 > --- a/drivers/hid/i2c-hid/i2c-hid-core.c > +++ b/drivers/hid/i2c-hid/i2c-hid-core.c > @@ -1064,7 +1064,7 @@ int i2c_hid_core_probe(struct i2c_client > *client, struct i2chid_ops *ops, >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_probe); >   > -int i2c_hid_core_remove(struct i2c_client *client) > +void i2c_hid_core_remove(struct i2c_client *client) >  { >         struct i2c_hid *ihid = i2c_get_clientdata(client); >         struct hid_device *hid; > @@ -1078,8 +1078,6 @@ int i2c_hid_core_remove(struct i2c_client > *client) >                 i2c_hid_free_buffers(ihid); >   >         i2c_hid_core_power_down(ihid); > - > -       return 0; >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_remove); >   > diff --git a/drivers/hid/i2c-hid/i2c-hid.h b/drivers/hid/i2c-hid/i2c- > hid.h > index 236cc062d5ef..96c75510ad3f 100644 > --- a/drivers/hid/i2c-hid/i2c-hid.h > +++ b/drivers/hid/i2c-hid/i2c-hid.h > @@ -33,7 +33,7 @@ struct i2chid_ops { >   >  int i2c_hid_core_probe(struct i2c_client *client, struct i2chid_ops > *ops, >                        u16 hid_descriptor_address, u32 quirks); > -int i2c_hid_core_remove(struct i2c_client *client); > +void i2c_hid_core_remove(struct i2c_client *client); >   >  void i2c_hid_core_shutdown(struct i2c_client *client); >   > diff --git a/drivers/hwmon/adc128d818.c b/drivers/hwmon/adc128d818.c > index fd938c70293f..299160543b35 100644 > --- a/drivers/hwmon/adc128d818.c > +++ b/drivers/hwmon/adc128d818.c > @@ -495,14 +495,12 @@ static int adc128_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adc128_remove(struct i2c_client *client) > +static void adc128_remove(struct i2c_client *client) >  { >         struct adc128_data *data = i2c_get_clientdata(client); >   >         if (data->regulator) >                 regulator_disable(data->regulator); > - > -       return 0; >  } >   >  static const struct i2c_device_id adc128_id[] = { > diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c > index c67cd037a93f..927f8df05b7c 100644 > --- a/drivers/hwmon/adt7470.c > +++ b/drivers/hwmon/adt7470.c > @@ -1296,12 +1296,11 @@ static int adt7470_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adt7470_remove(struct i2c_client *client) > +static void adt7470_remove(struct i2c_client *client) >  { >         struct adt7470_data *data = i2c_get_clientdata(client); >   >         kthread_stop(data->auto_update); > -       return 0; >  } >   >  static const struct i2c_device_id adt7470_id[] = { > diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c > index 8cf0bcb85eb4..a9166c8555c5 100644 > --- a/drivers/hwmon/asb100.c > +++ b/drivers/hwmon/asb100.c > @@ -208,7 +208,7 @@ static void asb100_write_value(struct i2c_client > *client, u16 reg, u16 val); >  static int asb100_probe(struct i2c_client *client); >  static int asb100_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int asb100_remove(struct i2c_client *client); > +static void asb100_remove(struct i2c_client *client); >  static struct asb100_data *asb100_update_device(struct device *dev); >  static void asb100_init_client(struct i2c_client *client); >   > @@ -822,7 +822,7 @@ static int asb100_probe(struct i2c_client > *client) >         return err; >  } >   > -static int asb100_remove(struct i2c_client *client) > +static void asb100_remove(struct i2c_client *client) >  { >         struct asb100_data *data = i2c_get_clientdata(client); >   > @@ -831,8 +831,6 @@ static int asb100_remove(struct i2c_client > *client) >   >         i2c_unregister_device(data->lm75[1]); >         i2c_unregister_device(data->lm75[0]); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/hwmon/asc7621.c b/drivers/hwmon/asc7621.c > index e835605a7456..4f90fdee9cc7 100644 > --- a/drivers/hwmon/asc7621.c > +++ b/drivers/hwmon/asc7621.c > @@ -1165,7 +1165,7 @@ static int asc7621_detect(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int asc7621_remove(struct i2c_client *client) > +static void asc7621_remove(struct i2c_client *client) >  { >         struct asc7621_data *data = i2c_get_clientdata(client); >         int i; > @@ -1176,8 +1176,6 @@ static int asc7621_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, >                                    > &(asc7621_params[i].sda.dev_attr)); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id asc7621_id[] = { > diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c > index e3ad4c2d0038..b1cd028c8277 100644 > --- a/drivers/hwmon/dme1737.c > +++ b/drivers/hwmon/dme1737.c > @@ -2508,14 +2508,12 @@ static int dme1737_i2c_probe(struct > i2c_client *client) >         return err; >  } >   > -static int dme1737_i2c_remove(struct i2c_client *client) > +static void dme1737_i2c_remove(struct i2c_client *client) >  { >         struct dme1737_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         dme1737_remove_files(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id dme1737_id[] = { > diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c > index 57c8a473698d..ffeed6c1e20b 100644 > --- a/drivers/hwmon/f75375s.c > +++ b/drivers/hwmon/f75375s.c > @@ -114,7 +114,7 @@ struct f75375_data { >  static int f75375_detect(struct i2c_client *client, >                          struct i2c_board_info *info); >  static int f75375_probe(struct i2c_client *client); > -static int f75375_remove(struct i2c_client *client); > +static void f75375_remove(struct i2c_client *client); >   >  static const struct i2c_device_id f75375_id[] = { >         { "f75373", f75373 }, > @@ -864,12 +864,11 @@ static int f75375_probe(struct i2c_client > *client) >         return err; >  } >   > -static int f75375_remove(struct i2c_client *client) > +static void f75375_remove(struct i2c_client *client) >  { >         struct f75375_data *data = i2c_get_clientdata(client); >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &f75375_group); > -       return 0; >  } >   >  /* Return 0 if detection is successful, -ENODEV otherwise */ > diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c > index c26195e3aad7..343e227ca38a 100644 > --- a/drivers/hwmon/fschmd.c > +++ b/drivers/hwmon/fschmd.c > @@ -217,7 +217,7 @@ static const int FSCHMD_NO_TEMP_SENSORS[7] = { 3, > 3, 4, 3, 5, 5, 11 }; >  static int fschmd_probe(struct i2c_client *client); >  static int fschmd_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int fschmd_remove(struct i2c_client *client); > +static void fschmd_remove(struct i2c_client *client); >  static struct fschmd_data *fschmd_update_device(struct device *dev); >   >  /* > @@ -1248,7 +1248,7 @@ static int fschmd_probe(struct i2c_client > *client) >         return err; >  } >   > -static int fschmd_remove(struct i2c_client *client) > +static void fschmd_remove(struct i2c_client *client) >  { >         struct fschmd_data *data = i2c_get_clientdata(client); >         int i; > @@ -1291,8 +1291,6 @@ static int fschmd_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, fschmd_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static struct fschmd_data *fschmd_update_device(struct device *dev) > diff --git a/drivers/hwmon/ftsteutates.c > b/drivers/hwmon/ftsteutates.c > index ceffc76a0c51..918763832432 100644 > --- a/drivers/hwmon/ftsteutates.c > +++ b/drivers/hwmon/ftsteutates.c > @@ -744,12 +744,11 @@ static int fts_detect(struct i2c_client > *client, >         return 0; >  } >   > -static int fts_remove(struct i2c_client *client) > +static void fts_remove(struct i2c_client *client) >  { >         struct fts_data *data = dev_get_drvdata(&client->dev); >   >         watchdog_unregister_device(&data->wdd); > -       return 0; >  } >   >  static int fts_probe(struct i2c_client *client) > diff --git a/drivers/hwmon/ina209.c b/drivers/hwmon/ina209.c > index fc3007c3e85c..9b58655d2de4 100644 > --- a/drivers/hwmon/ina209.c > +++ b/drivers/hwmon/ina209.c > @@ -568,13 +568,11 @@ static int ina209_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina209_remove(struct i2c_client *client) > +static void ina209_remove(struct i2c_client *client) >  { >         struct ina209_data *data = i2c_get_clientdata(client); >   >         ina209_restore_conf(client, data); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina209_id[] = { > diff --git a/drivers/hwmon/ina3221.c b/drivers/hwmon/ina3221.c > index 58d3828e2ec0..f89bac19bd73 100644 > --- a/drivers/hwmon/ina3221.c > +++ b/drivers/hwmon/ina3221.c > @@ -913,7 +913,7 @@ static int ina3221_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina3221_remove(struct i2c_client *client) > +static void ina3221_remove(struct i2c_client *client) >  { >         struct ina3221_data *ina = dev_get_drvdata(&client->dev); >         int i; > @@ -926,8 +926,6 @@ static int ina3221_remove(struct i2c_client > *client) >                 pm_runtime_put_noidle(ina->pm_dev); >   >         mutex_destroy(&ina->lock); > - > -       return 0; >  } >   >  static int __maybe_unused ina3221_suspend(struct device *dev) > diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c > index 07f7f8b5b73d..7b3c190959d3 100644 > --- a/drivers/hwmon/jc42.c > +++ b/drivers/hwmon/jc42.c > @@ -524,7 +524,7 @@ static int jc42_probe(struct i2c_client *client) >         return PTR_ERR_OR_ZERO(hwmon_dev); >  } >   > -static int jc42_remove(struct i2c_client *client) > +static void jc42_remove(struct i2c_client *client) >  { >         struct jc42_data *data = i2c_get_clientdata(client); >   > @@ -537,7 +537,6 @@ static int jc42_remove(struct i2c_client *client) >                   | (data->config & JC42_CFG_HYST_MASK); >                 i2c_smbus_write_word_swapped(client, JC42_REG_CONFIG, > config); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/hwmon/mcp3021.c b/drivers/hwmon/mcp3021.c > index ce2780768074..99c29ced084c 100644 > --- a/drivers/hwmon/mcp3021.c > +++ b/drivers/hwmon/mcp3021.c > @@ -167,14 +167,12 @@ static int mcp3021_probe(struct i2c_client > *client) >         return err; >  } >   > -static int mcp3021_remove(struct i2c_client *client) > +static void mcp3021_remove(struct i2c_client *client) >  { >         struct mcp3021_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_file(&client->dev.kobj, > &dev_attr_in0_input.attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp3021_id[] = { > diff --git a/drivers/hwmon/occ/p8_i2c.c b/drivers/hwmon/occ/p8_i2c.c > index da39ea28df31..d82a4873a0c6 100644 > --- a/drivers/hwmon/occ/p8_i2c.c > +++ b/drivers/hwmon/occ/p8_i2c.c > @@ -226,13 +226,11 @@ static int p8_i2c_occ_probe(struct i2c_client > *client) >         return occ_setup(occ); >  } >   > -static int p8_i2c_occ_remove(struct i2c_client *client) > +static void p8_i2c_occ_remove(struct i2c_client *client) >  { >         struct occ *occ = dev_get_drvdata(&client->dev); >   >         occ_shutdown(occ); > - > -       return 0; >  } >   >  static const struct of_device_id p8_i2c_occ_of_match[] = { > diff --git a/drivers/hwmon/pcf8591.c b/drivers/hwmon/pcf8591.c > index a97a51005c61..af9614e918a4 100644 > --- a/drivers/hwmon/pcf8591.c > +++ b/drivers/hwmon/pcf8591.c > @@ -228,14 +228,13 @@ static int pcf8591_probe(struct i2c_client > *client) >         return err; >  } >   > -static int pcf8591_remove(struct i2c_client *client) > +static void pcf8591_remove(struct i2c_client *client) >  { >         struct pcf8591_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, > &pcf8591_attr_group_opt); >         sysfs_remove_group(&client->dev.kobj, &pcf8591_attr_group); > -       return 0; >  } >   >  /* Called when we have found a new PCF8591. */ > diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c > index 8c4ed72e5d68..c36bdbe423de 100644 > --- a/drivers/hwmon/smm665.c > +++ b/drivers/hwmon/smm665.c > @@ -671,12 +671,11 @@ static int smm665_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int smm665_remove(struct i2c_client *client) > +static void smm665_remove(struct i2c_client *client) >  { >         struct smm665_data *data = i2c_get_clientdata(client); >   >         i2c_unregister_device(data->cmdreg); > -       return 0; >  } >   >  static const struct i2c_device_id smm665_id[] = { > diff --git a/drivers/hwmon/tps23861.c b/drivers/hwmon/tps23861.c > index 8bd6435c13e8..9cf693287235 100644 > --- a/drivers/hwmon/tps23861.c > +++ b/drivers/hwmon/tps23861.c > @@ -584,13 +584,11 @@ static int tps23861_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps23861_remove(struct i2c_client *client) > +static void tps23861_remove(struct i2c_client *client) >  { >         struct tps23861_data *data = i2c_get_clientdata(client); >   >         debugfs_remove_recursive(data->debugfs_dir); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused tps23861_of_match[] > = { > diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c > index b3579721265f..55c78e12bbbe 100644 > --- a/drivers/hwmon/w83781d.c > +++ b/drivers/hwmon/w83781d.c > @@ -1239,7 +1239,7 @@ static int w83781d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int > +static void >  w83781d_remove(struct i2c_client *client) >  { >         struct w83781d_data *data = i2c_get_clientdata(client); > @@ -1250,8 +1250,6 @@ w83781d_remove(struct i2c_client *client) >   >         i2c_unregister_device(data->lm75[0]); >         i2c_unregister_device(data->lm75[1]); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c > index 80a9a78d7ce9..5fe5c93856af 100644 > --- a/drivers/hwmon/w83791d.c > +++ b/drivers/hwmon/w83791d.c > @@ -315,7 +315,7 @@ struct w83791d_data { >  static int w83791d_probe(struct i2c_client *client); >  static int w83791d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83791d_remove(struct i2c_client *client); > +static void w83791d_remove(struct i2c_client *client); >   >  static int w83791d_read(struct i2c_client *client, u8 reg); >  static int w83791d_write(struct i2c_client *client, u8 reg, u8 > value); > @@ -1405,14 +1405,12 @@ static int w83791d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83791d_remove(struct i2c_client *client) > +static void w83791d_remove(struct i2c_client *client) >  { >         struct w83791d_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &w83791d_group); > - > -       return 0; >  } >   >  static void w83791d_init_client(struct i2c_client *client) > diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c > index 31a1cdc30877..2ee8ee4f0f1c 100644 > --- a/drivers/hwmon/w83792d.c > +++ b/drivers/hwmon/w83792d.c > @@ -286,7 +286,7 @@ struct w83792d_data { >  static int w83792d_probe(struct i2c_client *client); >  static int w83792d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83792d_remove(struct i2c_client *client); > +static void w83792d_remove(struct i2c_client *client); >  static struct w83792d_data *w83792d_update_device(struct device > *dev); >   >  #ifdef DEBUG > @@ -1429,7 +1429,7 @@ w83792d_probe(struct i2c_client *client) >         return err; >  } >   > -static int > +static void >  w83792d_remove(struct i2c_client *client) >  { >         struct w83792d_data *data = i2c_get_clientdata(client); > @@ -1440,8 +1440,6 @@ w83792d_remove(struct i2c_client *client) >         for (i = 0; i < ARRAY_SIZE(w83792d_group_fan); i++) >                 sysfs_remove_group(&client->dev.kobj, >                                    &w83792d_group_fan[i]); > - > -       return 0; >  } >   >  static void > diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c > index 0a65d164c8f0..daeaaded6b76 100644 > --- a/drivers/hwmon/w83793.c > +++ b/drivers/hwmon/w83793.c > @@ -285,7 +285,7 @@ static int w83793_write_value(struct i2c_client > *client, u16 reg, u8 value); >  static int w83793_probe(struct i2c_client *client); >  static int w83793_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int w83793_remove(struct i2c_client *client); > +static void w83793_remove(struct i2c_client *client); >  static void w83793_init_client(struct i2c_client *client); >  static void w83793_update_nonvolatile(struct device *dev); >  static struct w83793_data *w83793_update_device(struct device *dev); > @@ -1495,7 +1495,7 @@ static struct notifier_block watchdog_notifier > = { >   * Init / remove routines >   */ >   > -static int w83793_remove(struct i2c_client *client) > +static void w83793_remove(struct i2c_client *client) >  { >         struct w83793_data *data = i2c_get_clientdata(client); >         struct device *dev = &client->dev; > @@ -1554,8 +1554,6 @@ static int w83793_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, w83793_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c > index 45b12c4287df..b170cdf3c2be 100644 > --- a/drivers/hwmon/w83795.c > +++ b/drivers/hwmon/w83795.c > @@ -2235,14 +2235,12 @@ static int w83795_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83795_remove(struct i2c_client *client) > +static void w83795_remove(struct i2c_client *client) >  { >         struct w83795_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         w83795_handle_files(&client->dev, > device_remove_file_wrapper); > - > -       return 0; >  } >   >   > diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c > index a41f989d66e2..99f68358378b 100644 > --- a/drivers/hwmon/w83l785ts.c > +++ b/drivers/hwmon/w83l785ts.c > @@ -65,7 +65,7 @@ static const unsigned short normal_i2c[] = { 0x2e, > I2C_CLIENT_END }; >  static int w83l785ts_probe(struct i2c_client *client); >  static int w83l785ts_detect(struct i2c_client *client, >                             struct i2c_board_info *info); > -static int w83l785ts_remove(struct i2c_client *client); > +static void w83l785ts_remove(struct i2c_client *client); >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval); >  static struct w83l785ts_data *w83l785ts_update_device(struct device > *dev); >   > @@ -203,7 +203,7 @@ static int w83l785ts_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83l785ts_remove(struct i2c_client *client) > +static void w83l785ts_remove(struct i2c_client *client) >  { >         struct w83l785ts_data *data = i2c_get_clientdata(client); >   > @@ -212,8 +212,6 @@ static int w83l785ts_remove(struct i2c_client > *client) >                            &sensor_dev_attr_temp1_input.dev_attr); >         device_remove_file(&client->dev, >                            &sensor_dev_attr_temp1_max.dev_attr); > - > -       return 0; >  } >   >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval) > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core- > base.c > index 8ae47e0bbd67..68fc66a424ef 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -599,13 +599,9 @@ static void i2c_device_remove(struct device > *dev) >   >         driver = to_i2c_driver(dev->driver); >         if (driver->remove) { > -               int status; > - >                 dev_dbg(dev, "remove\n"); >   > -               status = driver->remove(client); > -               if (status) > -                       dev_warn(dev, "remove failed (%pe), will be > ignored\n", ERR_PTR(status)); > +               driver->remove(client); >         } >   >         devres_release_group(&client->dev, client->devres_group_id); > diff --git a/drivers/i2c/i2c-slave-eeprom.c b/drivers/i2c/i2c-slave- > eeprom.c > index 5c7ae421cacf..4abc2d919881 100644 > --- a/drivers/i2c/i2c-slave-eeprom.c > +++ b/drivers/i2c/i2c-slave-eeprom.c > @@ -181,14 +181,12 @@ static int i2c_slave_eeprom_probe(struct > i2c_client *client, const struct i2c_de >         return 0; >  }; >   > -static int i2c_slave_eeprom_remove(struct i2c_client *client) > +static void i2c_slave_eeprom_remove(struct i2c_client *client) >  { >         struct eeprom_data *eeprom = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_eeprom_id[] = { > diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c- > slave-testunit.c > index 56dae08dfd48..75ee7ebdb614 100644 > --- a/drivers/i2c/i2c-slave-testunit.c > +++ b/drivers/i2c/i2c-slave-testunit.c > @@ -153,13 +153,12 @@ static int i2c_slave_testunit_probe(struct > i2c_client *client) >         return i2c_slave_register(client, > i2c_slave_testunit_slave_cb); >  }; >   > -static int i2c_slave_testunit_remove(struct i2c_client *client) > +static void i2c_slave_testunit_remove(struct i2c_client *client) >  { >         struct testunit_data *tu = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&tu->worker); >         i2c_slave_unregister(client); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_testunit_id[] = { > diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c > index 775332945ad0..b0f1da7ec0f2 100644 > --- a/drivers/i2c/i2c-smbus.c > +++ b/drivers/i2c/i2c-smbus.c > @@ -153,12 +153,11 @@ static int smbalert_probe(struct i2c_client > *ara, >  } >   >  /* IRQ and memory resources are managed so they are freed > automatically */ > -static int smbalert_remove(struct i2c_client *ara) > +static void smbalert_remove(struct i2c_client *ara) >  { >         struct i2c_smbus_alert *alert = i2c_get_clientdata(ara); >   >         cancel_work_sync(&alert->alert); > -       return 0; >  } >   >  static const struct i2c_device_id smbalert_ids[] = { > diff --git a/drivers/i2c/muxes/i2c-mux-ltc4306.c > b/drivers/i2c/muxes/i2c-mux-ltc4306.c > index 704f1e50f6f4..70835825083f 100644 > --- a/drivers/i2c/muxes/i2c-mux-ltc4306.c > +++ b/drivers/i2c/muxes/i2c-mux-ltc4306.c > @@ -294,13 +294,11 @@ static int ltc4306_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ltc4306_remove(struct i2c_client *client) > +static void ltc4306_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > - > -       return 0; >  } >   >  static struct i2c_driver ltc4306_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca9541.c > b/drivers/i2c/muxes/i2c-mux-pca9541.c > index 6daec8d3d331..ea83de78f52d 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca9541.c > +++ b/drivers/i2c/muxes/i2c-mux-pca9541.c > @@ -325,12 +325,11 @@ static int pca9541_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9541_remove(struct i2c_client *client) > +static void pca9541_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static struct i2c_driver pca9541_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c > b/drivers/i2c/muxes/i2c-mux-pca954x.c > index 4ad665757dd8..a5f458b635df 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca954x.c > +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c > @@ -521,14 +521,13 @@ static int pca954x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca954x_remove(struct i2c_client *client) > +static void pca954x_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         device_remove_file(&client->dev, &dev_attr_idle_state); >   >         pca954x_cleanup(muxc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c > index 9c9e98578667..d03fc3400f94 100644 > --- a/drivers/iio/accel/bma180.c > +++ b/drivers/iio/accel/bma180.c > @@ -1045,7 +1045,7 @@ static int bma180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bma180_remove(struct i2c_client *client) > +static void bma180_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bma180_data *data = iio_priv(indio_dev); > @@ -1062,8 +1062,6 @@ static int bma180_remove(struct i2c_client > *client) >         mutex_unlock(&data->mutex); >         regulator_disable(data->vddio_supply); >         regulator_disable(data->vdd_supply); > - > -       return 0; >  } >   >  static int bma180_suspend(struct device *dev) > diff --git a/drivers/iio/accel/bma400_i2c.c > b/drivers/iio/accel/bma400_i2c.c > index da104ffd3fe0..90c99ab8c8f2 100644 > --- a/drivers/iio/accel/bma400_i2c.c > +++ b/drivers/iio/accel/bma400_i2c.c > @@ -27,11 +27,9 @@ static int bma400_i2c_probe(struct i2c_client > *client, >         return bma400_probe(&client->dev, regmap, id->name); >  } >   > -static int bma400_i2c_remove(struct i2c_client *client) > +static void bma400_i2c_remove(struct i2c_client *client) >  { >         bma400_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bma400_i2c_ids[] = { > diff --git a/drivers/iio/accel/bmc150-accel-i2c.c > b/drivers/iio/accel/bmc150-accel-i2c.c > index dff4d7dd101c..be8cc598b88e 100644 > --- a/drivers/iio/accel/bmc150-accel-i2c.c > +++ b/drivers/iio/accel/bmc150-accel-i2c.c > @@ -209,13 +209,11 @@ static int bmc150_accel_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bmc150_accel_remove(struct i2c_client *client) > +static void bmc150_accel_remove(struct i2c_client *client) >  { >         bmc150_acpi_dual_accel_remove(client); >   >         bmc150_accel_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_accel_acpi_match[] = { > diff --git a/drivers/iio/accel/kxcjk-1013.c > b/drivers/iio/accel/kxcjk-1013.c > index 748b35c2f0c3..94f7b6ac5c87 100644 > --- a/drivers/iio/accel/kxcjk-1013.c > +++ b/drivers/iio/accel/kxcjk-1013.c > @@ -1611,7 +1611,7 @@ static int kxcjk1013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kxcjk1013_remove(struct i2c_client *client) > +static void kxcjk1013_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct kxcjk1013_data *data = iio_priv(indio_dev); > @@ -1630,8 +1630,6 @@ static int kxcjk1013_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         kxcjk1013_set_mode(data, STANDBY); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9- > i2c.c > index c8dc52f11037..86c0d70d0da7 100644 > --- a/drivers/iio/accel/kxsd9-i2c.c > +++ b/drivers/iio/accel/kxsd9-i2c.c > @@ -32,11 +32,9 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c, >                                   i2c->name); >  } >   > -static int kxsd9_i2c_remove(struct i2c_client *client) > +static void kxsd9_i2c_remove(struct i2c_client *client) >  { >         kxsd9_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id kxsd9_of_match[] = { > diff --git a/drivers/iio/accel/mc3230.c b/drivers/iio/accel/mc3230.c > index c15d16e7f1da..2462000e0519 100644 > --- a/drivers/iio/accel/mc3230.c > +++ b/drivers/iio/accel/mc3230.c > @@ -151,15 +151,13 @@ static int mc3230_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mc3230_remove(struct i2c_client *client) > +static void mc3230_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >   >         mc3230_set_opcon(iio_priv(indio_dev), > MC3230_MODE_OPCON_STANDBY); > - > -       return 0; >  } >   >  static int mc3230_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma7455_i2c.c > b/drivers/iio/accel/mma7455_i2c.c > index a3b84e8a3ea8..c63b321b01cd 100644 > --- a/drivers/iio/accel/mma7455_i2c.c > +++ b/drivers/iio/accel/mma7455_i2c.c > @@ -26,11 +26,9 @@ static int mma7455_i2c_probe(struct i2c_client > *i2c, >         return mma7455_core_probe(&i2c->dev, regmap, name); >  } >   > -static int mma7455_i2c_remove(struct i2c_client *i2c) > +static void mma7455_i2c_remove(struct i2c_client *i2c) >  { >         mma7455_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mma7455_i2c_ids[] = { > diff --git a/drivers/iio/accel/mma7660.c > b/drivers/iio/accel/mma7660.c > index 112a5a33c29f..ad2aac0ec1d4 100644 > --- a/drivers/iio/accel/mma7660.c > +++ b/drivers/iio/accel/mma7660.c > @@ -207,7 +207,7 @@ static int mma7660_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma7660_remove(struct i2c_client *client) > +static void mma7660_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -218,8 +218,6 @@ static int mma7660_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device in > stand-by mode (%pe), ignoring\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int mma7660_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma8452.c > b/drivers/iio/accel/mma8452.c > index c7d9ca96dbaa..3ba28c2ff68a 100644 > --- a/drivers/iio/accel/mma8452.c > +++ b/drivers/iio/accel/mma8452.c > @@ -1735,7 +1735,7 @@ static int mma8452_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma8452_remove(struct i2c_client *client) > +static void mma8452_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma8452_data *data = iio_priv(indio_dev); > @@ -1751,8 +1751,6 @@ static int mma8452_remove(struct i2c_client > *client) >   >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/accel/mma9551.c > b/drivers/iio/accel/mma9551.c > index 123cdbbb265c..f7a793f4a8e3 100644 > --- a/drivers/iio/accel/mma9551.c > +++ b/drivers/iio/accel/mma9551.c > @@ -509,7 +509,7 @@ static int mma9551_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9551_remove(struct i2c_client *client) > +static void mma9551_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9551_data *data = iio_priv(indio_dev); > @@ -522,8 +522,6 @@ static int mma9551_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9551_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma9553.c > b/drivers/iio/accel/mma9553.c > index 09df58d4be33..2da0e005b13e 100644 > --- a/drivers/iio/accel/mma9553.c > +++ b/drivers/iio/accel/mma9553.c > @@ -1148,7 +1148,7 @@ static int mma9553_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9553_remove(struct i2c_client *client) > +static void mma9553_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9553_data *data = iio_priv(indio_dev); > @@ -1161,8 +1161,6 @@ static int mma9553_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9553_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8312.c > b/drivers/iio/accel/stk8312.c > index ceca28913355..7b1d6fb692b3 100644 > --- a/drivers/iio/accel/stk8312.c > +++ b/drivers/iio/accel/stk8312.c > @@ -597,7 +597,7 @@ static int stk8312_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8312_remove(struct i2c_client *client) > +static void stk8312_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8312_data *data = iio_priv(indio_dev); > @@ -609,8 +609,6 @@ static int stk8312_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8312_set_mode(data, STK8312_MODE_STANDBY); > - > -       return 0; >  } >   >  static int stk8312_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8ba50.c > b/drivers/iio/accel/stk8ba50.c > index 7d59efb41e22..2f5e4ab2a6e7 100644 > --- a/drivers/iio/accel/stk8ba50.c > +++ b/drivers/iio/accel/stk8ba50.c > @@ -490,7 +490,7 @@ static int stk8ba50_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8ba50_remove(struct i2c_client *client) > +static void stk8ba50_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8ba50_data *data = iio_priv(indio_dev); > @@ -502,8 +502,6 @@ static int stk8ba50_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8ba50_set_power(data, STK8BA50_MODE_SUSPEND); > - > -       return 0; >  } >   >  static int stk8ba50_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c > index 220228c375d3..746bf9a01c25 100644 > --- a/drivers/iio/adc/ad799x.c > +++ b/drivers/iio/adc/ad799x.c > @@ -880,7 +880,7 @@ static int ad799x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad799x_remove(struct i2c_client *client) > +static void ad799x_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ad799x_state *st = iio_priv(indio_dev); > @@ -892,8 +892,6 @@ static int ad799x_remove(struct i2c_client > *client) >                 regulator_disable(st->vref); >         regulator_disable(st->reg); >         kfree(st->rx_buf); > - > -       return 0; >  } >   >  static int __maybe_unused ad799x_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx- > adc.c > index 240e6c420701..910e7e965fc4 100644 > --- a/drivers/iio/adc/ina2xx-adc.c > +++ b/drivers/iio/adc/ina2xx-adc.c > @@ -1034,7 +1034,7 @@ static int ina2xx_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int ina2xx_remove(struct i2c_client *client) > +static void ina2xx_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ina2xx_chip_info *chip = iio_priv(indio_dev); > @@ -1048,8 +1048,6 @@ static int ina2xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina2xx_id[] = { > diff --git a/drivers/iio/adc/ltc2497.c b/drivers/iio/adc/ltc2497.c > index 1adddf5a88a9..be57f1157796 100644 > --- a/drivers/iio/adc/ltc2497.c > +++ b/drivers/iio/adc/ltc2497.c > @@ -74,13 +74,11 @@ static int ltc2497_probe(struct i2c_client > *client, >         return ltc2497core_probe(dev, indio_dev); >  } >   > -static int ltc2497_remove(struct i2c_client *client) > +static void ltc2497_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         ltc2497core_remove(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ltc2497_id[] = { > diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti- > ads1015.c > index e3dfc155fbe2..8bceba694026 100644 > --- a/drivers/iio/adc/ti-ads1015.c > +++ b/drivers/iio/adc/ti-ads1015.c > @@ -1094,7 +1094,7 @@ static int ads1015_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ads1015_remove(struct i2c_client *client) > +static void ads1015_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ads1015_data *data = iio_priv(indio_dev); > @@ -1110,8 +1110,6 @@ static int ads1015_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/chemical/atlas-sensor.c > b/drivers/iio/chemical/atlas-sensor.c > index 8378c00fa2ff..7cac77a931c7 100644 > --- a/drivers/iio/chemical/atlas-sensor.c > +++ b/drivers/iio/chemical/atlas-sensor.c > @@ -722,7 +722,7 @@ static int atlas_probe(struct i2c_client *client, >         return ret; >  } >   > -static int atlas_remove(struct i2c_client *client) > +static void atlas_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct atlas_data *data = iio_priv(indio_dev); > @@ -739,8 +739,6 @@ static int atlas_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to power down device > (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int atlas_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/chemical/ccs811.c > b/drivers/iio/chemical/ccs811.c > index 560183efb36f..ba4045e20303 100644 > --- a/drivers/iio/chemical/ccs811.c > +++ b/drivers/iio/chemical/ccs811.c > @@ -532,7 +532,7 @@ static int ccs811_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ccs811_remove(struct i2c_client *client) > +static void ccs811_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ccs811_data *data = iio_priv(indio_dev); > @@ -548,8 +548,6 @@ static int ccs811_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ccs811_id[] = { > diff --git a/drivers/iio/chemical/sgp30.c > b/drivers/iio/chemical/sgp30.c > index 2343d444604d..e2c13c78c7e0 100644 > --- a/drivers/iio/chemical/sgp30.c > +++ b/drivers/iio/chemical/sgp30.c > @@ -552,15 +552,13 @@ static int sgp_probe(struct i2c_client *client, >         return 0; >  } >   > -static int sgp_remove(struct i2c_client *client) > +static void sgp_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sgp_data *data = iio_priv(indio_dev); >   >         if (data->iaq_thread) >                 kthread_stop(data->iaq_thread); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgp_id[] = { > diff --git a/drivers/iio/dac/ad5380.c b/drivers/iio/dac/ad5380.c > index a44c83242fb1..62d7fc53c7f4 100644 > --- a/drivers/iio/dac/ad5380.c > +++ b/drivers/iio/dac/ad5380.c > @@ -561,11 +561,9 @@ static int ad5380_i2c_probe(struct i2c_client > *i2c, >         return ad5380_probe(&i2c->dev, regmap, id->driver_data, id- > >name); >  } >   > -static int ad5380_i2c_remove(struct i2c_client *i2c) > +static void ad5380_i2c_remove(struct i2c_client *i2c) >  { >         ad5380_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5380_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c > index 09e242949cd0..7324065d3782 100644 > --- a/drivers/iio/dac/ad5446.c > +++ b/drivers/iio/dac/ad5446.c > @@ -575,11 +575,9 @@ static int ad5446_i2c_probe(struct i2c_client > *i2c, >                 &ad5446_i2c_chip_info[id->driver_data]); >  } >   > -static int ad5446_i2c_remove(struct i2c_client *i2c) > +static void ad5446_i2c_remove(struct i2c_client *i2c) >  { >         ad5446_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5446_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5593r.c b/drivers/iio/dac/ad5593r.c > index 34e1319a9712..92be661034a6 100644 > --- a/drivers/iio/dac/ad5593r.c > +++ b/drivers/iio/dac/ad5593r.c > @@ -97,11 +97,9 @@ static int ad5593r_i2c_probe(struct i2c_client > *i2c, >         return ad5592r_probe(&i2c->dev, id->name, &ad5593r_rw_ops); >  } >   > -static int ad5593r_i2c_remove(struct i2c_client *i2c) > +static void ad5593r_i2c_remove(struct i2c_client *i2c) >  { >         ad5592r_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5593r_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696- > i2c.c > index 762503c1901b..aa36cbf0137c 100644 > --- a/drivers/iio/dac/ad5696-i2c.c > +++ b/drivers/iio/dac/ad5696-i2c.c > @@ -65,11 +65,9 @@ static int ad5686_i2c_probe(struct i2c_client > *i2c, >                             ad5686_i2c_write, ad5686_i2c_read); >  } >   > -static int ad5686_i2c_remove(struct i2c_client *i2c) > +static void ad5686_i2c_remove(struct i2c_client *i2c) >  { >         ad5686_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5686_i2c_id[] = { > diff --git a/drivers/iio/dac/ds4424.c b/drivers/iio/dac/ds4424.c > index 5a5e967b0be4..e3dcf1efb7fa 100644 > --- a/drivers/iio/dac/ds4424.c > +++ b/drivers/iio/dac/ds4424.c > @@ -281,15 +281,13 @@ static int ds4424_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ds4424_remove(struct i2c_client *client) > +static void ds4424_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ds4424_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vcc_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id ds4424_id[] = { > diff --git a/drivers/iio/dac/m62332.c b/drivers/iio/dac/m62332.c > index 22b02f50fe41..5a812f87970c 100644 > --- a/drivers/iio/dac/m62332.c > +++ b/drivers/iio/dac/m62332.c > @@ -218,7 +218,7 @@ static int m62332_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m62332_remove(struct i2c_client *client) > +static void m62332_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -226,8 +226,6 @@ static int m62332_remove(struct i2c_client > *client) >         iio_map_array_unregister(indio_dev); >         m62332_set_value(indio_dev, 0, 0); >         m62332_set_value(indio_dev, 0, 1); > - > -       return 0; >  } >   >  static const struct i2c_device_id m62332_id[] = { > diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c > index 7fcb86288823..29ab21904aca 100644 > --- a/drivers/iio/dac/mcp4725.c > +++ b/drivers/iio/dac/mcp4725.c > @@ -485,7 +485,7 @@ static int mcp4725_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mcp4725_remove(struct i2c_client *client) > +static void mcp4725_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mcp4725_data *data = iio_priv(indio_dev); > @@ -495,8 +495,6 @@ static int mcp4725_remove(struct i2c_client > *client) >         if (data->vref_reg) >                 regulator_disable(data->vref_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp4725_id[] = { > diff --git a/drivers/iio/dac/ti-dac5571.c b/drivers/iio/dac/ti- > dac5571.c > index 4b6b04038e94..96b8d80b72a0 100644 > --- a/drivers/iio/dac/ti-dac5571.c > +++ b/drivers/iio/dac/ti-dac5571.c > @@ -381,15 +381,13 @@ static int dac5571_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int dac5571_remove(struct i2c_client *i2c) > +static void dac5571_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct dac5571_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vref); > - > -       return 0; >  } >   >  static const struct of_device_id dac5571_of_id[] = { > diff --git a/drivers/iio/gyro/bmg160_i2c.c > b/drivers/iio/gyro/bmg160_i2c.c > index b3fa46bd02cb..908ccc385254 100644 > --- a/drivers/iio/gyro/bmg160_i2c.c > +++ b/drivers/iio/gyro/bmg160_i2c.c > @@ -32,11 +32,9 @@ static int bmg160_i2c_probe(struct i2c_client > *client, >         return bmg160_core_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmg160_i2c_remove(struct i2c_client *client) > +static void bmg160_i2c_remove(struct i2c_client *client) >  { >         bmg160_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmg160_acpi_match[] = { > diff --git a/drivers/iio/gyro/fxas21002c_i2c.c > b/drivers/iio/gyro/fxas21002c_i2c.c > index a7807fd97483..13bb52c594d1 100644 > --- a/drivers/iio/gyro/fxas21002c_i2c.c > +++ b/drivers/iio/gyro/fxas21002c_i2c.c > @@ -33,11 +33,9 @@ static int fxas21002c_i2c_probe(struct i2c_client > *i2c) >         return fxas21002c_core_probe(&i2c->dev, regmap, i2c->irq, > i2c->name); >  } >   > -static int fxas21002c_i2c_remove(struct i2c_client *i2c) > +static void fxas21002c_i2c_remove(struct i2c_client *i2c) >  { >         fxas21002c_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id fxas21002c_i2c_id[] = { > diff --git a/drivers/iio/gyro/itg3200_core.c > b/drivers/iio/gyro/itg3200_core.c > index a7f1bbb5f289..8b3758e3b9e8 100644 > --- a/drivers/iio/gyro/itg3200_core.c > +++ b/drivers/iio/gyro/itg3200_core.c > @@ -350,7 +350,7 @@ static int itg3200_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int itg3200_remove(struct i2c_client *client) > +static void itg3200_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -360,8 +360,6 @@ static int itg3200_remove(struct i2c_client > *client) >                 itg3200_remove_trigger(indio_dev); >   >         itg3200_buffer_unconfigure(indio_dev); > - > -       return 0; >  } >   >  static int __maybe_unused itg3200_suspend(struct device *dev) > diff --git a/drivers/iio/gyro/mpu3050-i2c.c > b/drivers/iio/gyro/mpu3050-i2c.c > index 5b5f58baaf7f..4d5e4b04745d 100644 > --- a/drivers/iio/gyro/mpu3050-i2c.c > +++ b/drivers/iio/gyro/mpu3050-i2c.c > @@ -78,7 +78,7 @@ static int mpu3050_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mpu3050_i2c_remove(struct i2c_client *client) > +static void mpu3050_i2c_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = dev_get_drvdata(&client->dev); >         struct mpu3050 *mpu3050 = iio_priv(indio_dev); > @@ -87,8 +87,6 @@ static int mpu3050_i2c_remove(struct i2c_client > *client) >                 i2c_mux_del_adapters(mpu3050->i2cmux); >   >         mpu3050_common_remove(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/health/afe4404.c > b/drivers/iio/health/afe4404.c > index 1bb7de60f8ca..a87337453824 100644 > --- a/drivers/iio/health/afe4404.c > +++ b/drivers/iio/health/afe4404.c > @@ -577,7 +577,7 @@ static int afe4404_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int afe4404_remove(struct i2c_client *client) > +static void afe4404_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct afe4404_data *afe = iio_priv(indio_dev); > @@ -593,8 +593,6 @@ static int afe4404_remove(struct i2c_client > *client) >         ret = regulator_disable(afe->regulator); >         if (ret) >                 dev_err(afe->dev, "Unable to disable regulator\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id afe4404_ids[] = { > diff --git a/drivers/iio/health/max30100.c > b/drivers/iio/health/max30100.c > index ad5717965223..2cca5e0519f8 100644 > --- a/drivers/iio/health/max30100.c > +++ b/drivers/iio/health/max30100.c > @@ -471,15 +471,13 @@ static int max30100_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30100_remove(struct i2c_client *client) > +static void max30100_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30100_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30100_set_powermode(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30100_id[] = { > diff --git a/drivers/iio/health/max30102.c > b/drivers/iio/health/max30102.c > index abbcef563807..437298a29f2d 100644 > --- a/drivers/iio/health/max30102.c > +++ b/drivers/iio/health/max30102.c > @@ -592,15 +592,13 @@ static int max30102_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30102_remove(struct i2c_client *client) > +static void max30102_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30102_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30102_set_power(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30102_id[] = { > diff --git a/drivers/iio/humidity/hdc2010.c > b/drivers/iio/humidity/hdc2010.c > index 1381df46187c..d6858ccb056e 100644 > --- a/drivers/iio/humidity/hdc2010.c > +++ b/drivers/iio/humidity/hdc2010.c > @@ -308,7 +308,7 @@ static int hdc2010_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int hdc2010_remove(struct i2c_client *client) > +static void hdc2010_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct hdc2010_data *data = iio_priv(indio_dev); > @@ -318,8 +318,6 @@ static int hdc2010_remove(struct i2c_client > *client) >         /* Disable Automatic Measurement Mode */ >         if (hdc2010_update_drdy_config(data, HDC2010_AMM, 0)) >                 dev_warn(&client->dev, "Unable to restore default > AMM\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id hdc2010_id[] = { > diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > index 2aa647704a79..14255a918eb1 100644 > --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > @@ -157,7 +157,7 @@ static int inv_mpu_probe(struct i2c_client > *client, >         return result; >  } >   > -static int inv_mpu_remove(struct i2c_client *client) > +static void inv_mpu_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct inv_mpu6050_state *st = iio_priv(indio_dev); > @@ -166,8 +166,6 @@ static int inv_mpu_remove(struct i2c_client > *client) >                 inv_mpu_acpi_delete_mux_client(client); >                 i2c_mux_del_adapters(st->muxc); >         } > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c > index ec23b1ee472b..b10c0dcac0bb 100644 > --- a/drivers/iio/imu/kmx61.c > +++ b/drivers/iio/imu/kmx61.c > @@ -1418,7 +1418,7 @@ static int kmx61_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kmx61_remove(struct i2c_client *client) > +static void kmx61_remove(struct i2c_client *client) >  { >         struct kmx61_data *data = i2c_get_clientdata(client); >   > @@ -1439,8 +1439,6 @@ static int kmx61_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, > true); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int kmx61_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9300.c > b/drivers/iio/light/apds9300.c > index 0f9d77598997..b70f2681bcb3 100644 > --- a/drivers/iio/light/apds9300.c > +++ b/drivers/iio/light/apds9300.c > @@ -452,7 +452,7 @@ static int apds9300_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9300_remove(struct i2c_client *client) > +static void apds9300_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9300_data *data = iio_priv(indio_dev); > @@ -462,8 +462,6 @@ static int apds9300_remove(struct i2c_client > *client) >         /* Ensure that power off and interrupts are disabled */ >         apds9300_set_intr_state(data, 0); >         apds9300_set_power_state(data, 0); > - > -       return 0; >  } >   >  static int apds9300_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9960.c > b/drivers/iio/light/apds9960.c > index 09b831f9f40b..b62c139baf41 100644 > --- a/drivers/iio/light/apds9960.c > +++ b/drivers/iio/light/apds9960.c > @@ -1067,7 +1067,7 @@ static int apds9960_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9960_remove(struct i2c_client *client) > +static void apds9960_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9960_data *data = iio_priv(indio_dev); > @@ -1076,8 +1076,6 @@ static int apds9960_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         apds9960_set_powermode(data, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/light/bh1750.c b/drivers/iio/light/bh1750.c > index 48484b9401b9..034c47ef6e33 100644 > --- a/drivers/iio/light/bh1750.c > +++ b/drivers/iio/light/bh1750.c > @@ -263,7 +263,7 @@ static int bh1750_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int bh1750_remove(struct i2c_client *client) > +static void bh1750_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1750_data *data = iio_priv(indio_dev); > @@ -273,8 +273,6 @@ static int bh1750_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         i2c_smbus_write_byte(client, BH1750_POWER_DOWN); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int __maybe_unused bh1750_suspend(struct device *dev) > diff --git a/drivers/iio/light/bh1780.c b/drivers/iio/light/bh1780.c > index fc7141390117..90bca392b262 100644 > --- a/drivers/iio/light/bh1780.c > +++ b/drivers/iio/light/bh1780.c > @@ -202,7 +202,7 @@ static int bh1780_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bh1780_remove(struct i2c_client *client) > +static void bh1780_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1780_data *bh1780 = iio_priv(indio_dev); > @@ -216,8 +216,6 @@ static int bh1780_remove(struct i2c_client > *client) >         if (ret < 0) >                 dev_err(&client->dev, "failed to power off (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int bh1780_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/cm3232.c b/drivers/iio/light/cm3232.c > index 2c80a0535d2c..5214cd014cf8 100644 > --- a/drivers/iio/light/cm3232.c > +++ b/drivers/iio/light/cm3232.c > @@ -357,7 +357,7 @@ static int cm3232_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int cm3232_remove(struct i2c_client *client) > +static void cm3232_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -365,8 +365,6 @@ static int cm3232_remove(struct i2c_client > *client) >                 CM3232_CMD_ALS_DISABLE); >   >         iio_device_unregister(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm3232_id[] = { > diff --git a/drivers/iio/light/cm36651.c > b/drivers/iio/light/cm36651.c > index 89f5e48a6642..6615c98b601c 100644 > --- a/drivers/iio/light/cm36651.c > +++ b/drivers/iio/light/cm36651.c > @@ -700,7 +700,7 @@ static int cm36651_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cm36651_remove(struct i2c_client *client) > +static void cm36651_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct cm36651_data *cm36651 = iio_priv(indio_dev); > @@ -710,8 +710,6 @@ static int cm36651_remove(struct i2c_client > *client) >         free_irq(client->irq, indio_dev); >         i2c_unregister_device(cm36651->ps_client); >         i2c_unregister_device(cm36651->ara_client); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm36651_id[] = { > diff --git a/drivers/iio/light/gp2ap002.c > b/drivers/iio/light/gp2ap002.c > index c6d1d88d3775..855dc63fb0a5 100644 > --- a/drivers/iio/light/gp2ap002.c > +++ b/drivers/iio/light/gp2ap002.c > @@ -619,7 +619,7 @@ static int gp2ap002_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int gp2ap002_remove(struct i2c_client *client) > +static void gp2ap002_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap002 *gp2ap002 = iio_priv(indio_dev); > @@ -631,8 +631,6 @@ static int gp2ap002_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >         regulator_disable(gp2ap002->vio); >         regulator_disable(gp2ap002->vdd); > - > -       return 0; >  } >   >  static int __maybe_unused gp2ap002_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/gp2ap020a00f.c > b/drivers/iio/light/gp2ap020a00f.c > index b820041159f7..826439299e8b 100644 > --- a/drivers/iio/light/gp2ap020a00f.c > +++ b/drivers/iio/light/gp2ap020a00f.c > @@ -1573,7 +1573,7 @@ static int gp2ap020a00f_probe(struct i2c_client > *client, >         return err; >  } >   > -static int gp2ap020a00f_remove(struct i2c_client *client) > +static void gp2ap020a00f_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap020a00f_data *data = iio_priv(indio_dev); > @@ -1589,8 +1589,6 @@ static int gp2ap020a00f_remove(struct > i2c_client *client) >         free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         regulator_disable(data->vled_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id gp2ap020a00f_id[] = { > diff --git a/drivers/iio/light/isl29028.c > b/drivers/iio/light/isl29028.c > index 720fa83d44e0..6c344875c791 100644 > --- a/drivers/iio/light/isl29028.c > +++ b/drivers/iio/light/isl29028.c > @@ -636,7 +636,7 @@ static int isl29028_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isl29028_remove(struct i2c_client *client) > +static void isl29028_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct isl29028_chip *chip = iio_priv(indio_dev); > @@ -647,8 +647,6 @@ static int isl29028_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         isl29028_clear_configure_reg(chip); > - > -       return 0; >  } >   >  static int __maybe_unused isl29028_suspend(struct device *dev) > diff --git a/drivers/iio/light/isl29125.c > b/drivers/iio/light/isl29125.c > index eb68a52aab82..c199e63cce82 100644 > --- a/drivers/iio/light/isl29125.c > +++ b/drivers/iio/light/isl29125.c > @@ -300,15 +300,13 @@ static int isl29125_powerdown(struct > isl29125_data *data) >                 (data->conf1 & ~ISL29125_MODE_MASK) | > ISL29125_MODE_PD); >  } >   > -static int isl29125_remove(struct i2c_client *client) > +static void isl29125_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         isl29125_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int isl29125_suspend(struct device *dev) > diff --git a/drivers/iio/light/jsa1212.c > b/drivers/iio/light/jsa1212.c > index 5387c12231cf..57ce6d75966c 100644 > --- a/drivers/iio/light/jsa1212.c > +++ b/drivers/iio/light/jsa1212.c > @@ -373,7 +373,7 @@ static int jsa1212_power_off(struct jsa1212_data > *data) >         return ret; >  } >   > -static int jsa1212_remove(struct i2c_client *client) > +static void jsa1212_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct jsa1212_data *data = iio_priv(indio_dev); > @@ -381,8 +381,6 @@ static int jsa1212_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >   >         jsa1212_power_off(data); > - > -       return 0; >  } >   >  static int jsa1212_suspend(struct device *dev) > diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c > index 679a1e1086ae..74a1ccda8b9c 100644 > --- a/drivers/iio/light/ltr501.c > +++ b/drivers/iio/light/ltr501.c > @@ -1600,15 +1600,13 @@ static int ltr501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ltr501_remove(struct i2c_client *client) > +static void ltr501_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         ltr501_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int ltr501_suspend(struct device *dev) > diff --git a/drivers/iio/light/opt3001.c > b/drivers/iio/light/opt3001.c > index a326d47afc9b..a26d1c3f9543 100644 > --- a/drivers/iio/light/opt3001.c > +++ b/drivers/iio/light/opt3001.c > @@ -794,7 +794,7 @@ static int opt3001_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int opt3001_remove(struct i2c_client *client) > +static void opt3001_remove(struct i2c_client *client) >  { >         struct iio_dev *iio = i2c_get_clientdata(client); >         struct opt3001 *opt = iio_priv(iio); > @@ -808,7 +808,7 @@ static int opt3001_remove(struct i2c_client > *client) >         if (ret < 0) { >                 dev_err(opt->dev, "failed to read register %02x\n", >                                 OPT3001_CONFIGURATION); > -               return 0; > +               return; >         } >   >         reg = ret; > @@ -820,8 +820,6 @@ static int opt3001_remove(struct i2c_client > *client) >                 dev_err(opt->dev, "failed to write register %02x\n", >                                 OPT3001_CONFIGURATION); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id opt3001_id[] = { > diff --git a/drivers/iio/light/pa12203001.c > b/drivers/iio/light/pa12203001.c > index 772874e707ae..3cb2de51f4aa 100644 > --- a/drivers/iio/light/pa12203001.c > +++ b/drivers/iio/light/pa12203001.c > @@ -394,7 +394,7 @@ static int pa12203001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pa12203001_remove(struct i2c_client *client) > +static void pa12203001_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -408,8 +408,6 @@ static int pa12203001_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/rpr0521.c > b/drivers/iio/light/rpr0521.c > index dabdd05f0e2c..d1c16dd76058 100644 > --- a/drivers/iio/light/rpr0521.c > +++ b/drivers/iio/light/rpr0521.c > @@ -1041,7 +1041,7 @@ static int rpr0521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rpr0521_remove(struct i2c_client *client) > +static void rpr0521_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -1051,8 +1051,6 @@ static int rpr0521_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         rpr0521_poweroff(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int rpr0521_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/stk3310.c > b/drivers/iio/light/stk3310.c > index f7cc7a6c0c8d..7b8e0da6aabc 100644 > --- a/drivers/iio/light/stk3310.c > +++ b/drivers/iio/light/stk3310.c > @@ -649,14 +649,12 @@ static int stk3310_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk3310_remove(struct i2c_client *client) > +static void stk3310_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         stk3310_set_state(iio_priv(indio_dev), > STK3310_STATE_STANDBY); > - > -       return 0; >  } >   >  static int stk3310_suspend(struct device *dev) > diff --git a/drivers/iio/light/tcs3472.c > b/drivers/iio/light/tcs3472.c > index 823435f59bb6..db17fec634be 100644 > --- a/drivers/iio/light/tcs3472.c > +++ b/drivers/iio/light/tcs3472.c > @@ -559,7 +559,7 @@ static int tcs3472_powerdown(struct tcs3472_data > *data) >         return ret; >  } >   > -static int tcs3472_remove(struct i2c_client *client) > +static void tcs3472_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -568,8 +568,6 @@ static int tcs3472_remove(struct i2c_client > *client) >                 free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         tcs3472_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int tcs3472_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2563.c > b/drivers/iio/light/tsl2563.c > index 0a278eea36ca..1fa189fe6eb6 100644 > --- a/drivers/iio/light/tsl2563.c > +++ b/drivers/iio/light/tsl2563.c > @@ -796,7 +796,7 @@ static int tsl2563_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2563_remove(struct i2c_client *client) > +static void tsl2563_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2563_chip *chip = iio_priv(indio_dev); > @@ -810,8 +810,6 @@ static int tsl2563_remove(struct i2c_client > *client) >                                   chip->intr); >         flush_scheduled_work(); >         tsl2563_set_power(chip, 0); > - > -       return 0; >  } >   >  static int tsl2563_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2583.c > b/drivers/iio/light/tsl2583.c > index efb3c13cfc87..59e7ef624283 100644 > --- a/drivers/iio/light/tsl2583.c > +++ b/drivers/iio/light/tsl2583.c > @@ -873,7 +873,7 @@ static int tsl2583_probe(struct i2c_client > *clientp, >         return 0; >  } >   > -static int tsl2583_remove(struct i2c_client *client) > +static void tsl2583_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2583_chip *chip = iio_priv(indio_dev); > @@ -884,8 +884,6 @@ static int tsl2583_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF); > - > -       return 0; >  } >   >  static int __maybe_unused tsl2583_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl4531.c > b/drivers/iio/light/tsl4531.c > index 6ae1b27e50b6..090038fed889 100644 > --- a/drivers/iio/light/tsl4531.c > +++ b/drivers/iio/light/tsl4531.c > @@ -207,12 +207,10 @@ static int tsl4531_powerdown(struct i2c_client > *client) >                 TSL4531_MODE_POWERDOWN); >  } >   > -static int tsl4531_remove(struct i2c_client *client) > +static void tsl4531_remove(struct i2c_client *client) >  { >         iio_device_unregister(i2c_get_clientdata(client)); >         tsl4531_powerdown(client); > - > -       return 0; >  } >   >  static int tsl4531_suspend(struct device *dev) > diff --git a/drivers/iio/light/us5182d.c > b/drivers/iio/light/us5182d.c > index cbd9978540fa..ca6a03933e2e 100644 > --- a/drivers/iio/light/us5182d.c > +++ b/drivers/iio/light/us5182d.c > @@ -904,7 +904,7 @@ static int us5182d_probe(struct i2c_client > *client, >   >  } >   > -static int us5182d_remove(struct i2c_client *client) > +static void us5182d_remove(struct i2c_client *client) >  { >         struct us5182d_data *data = > iio_priv(i2c_get_clientdata(client)); >         int ret; > @@ -918,8 +918,6 @@ static int us5182d_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to shut down (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/vcnl4000.c > b/drivers/iio/light/vcnl4000.c > index 947a41b86173..9c492f9024e2 100644 > --- a/drivers/iio/light/vcnl4000.c > +++ b/drivers/iio/light/vcnl4000.c > @@ -1111,7 +1111,7 @@ static const struct of_device_id > vcnl_4000_of_match[] = { >  }; >  MODULE_DEVICE_TABLE(of, vcnl_4000_of_match); >   > -static int vcnl4000_remove(struct i2c_client *client) > +static void vcnl4000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct vcnl4000_data *data = iio_priv(indio_dev); > @@ -1126,8 +1126,6 @@ static int vcnl4000_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4000_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/vcnl4035.c > b/drivers/iio/light/vcnl4035.c > index 2aaec6bef64c..8282f19c9de7 100644 > --- a/drivers/iio/light/vcnl4035.c > +++ b/drivers/iio/light/vcnl4035.c > @@ -601,7 +601,7 @@ static int vcnl4035_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vcnl4035_remove(struct i2c_client *client) > +static void vcnl4035_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -616,8 +616,6 @@ static int vcnl4035_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device into > standby (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4035_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/veml6070.c > b/drivers/iio/light/veml6070.c > index 1e55e09a8d16..cfa4e9e7c803 100644 > --- a/drivers/iio/light/veml6070.c > +++ b/drivers/iio/light/veml6070.c > @@ -180,15 +180,13 @@ static int veml6070_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int veml6070_remove(struct i2c_client *client) > +static void veml6070_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct veml6070_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         i2c_unregister_device(data->client2); > - > -       return 0; >  } >   >  static const struct i2c_device_id veml6070_id[] = { > diff --git a/drivers/iio/magnetometer/ak8974.c > b/drivers/iio/magnetometer/ak8974.c > index e54feacfb980..1064859fbf83 100644 > --- a/drivers/iio/magnetometer/ak8974.c > +++ b/drivers/iio/magnetometer/ak8974.c > @@ -969,7 +969,7 @@ static int ak8974_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int ak8974_remove(struct i2c_client *i2c) > +static void ak8974_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct ak8974 *ak8974 = iio_priv(indio_dev); > @@ -981,8 +981,6 @@ static int ak8974_remove(struct i2c_client *i2c) >         pm_runtime_disable(&i2c->dev); >         ak8974_set_power(ak8974, AK8974_PWR_OFF); >         regulator_bulk_disable(ARRAY_SIZE(ak8974->regs), ak8974- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused ak8974_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/ak8975.c > b/drivers/iio/magnetometer/ak8975.c > index 2432e697150c..caf03a2a98a5 100644 > --- a/drivers/iio/magnetometer/ak8975.c > +++ b/drivers/iio/magnetometer/ak8975.c > @@ -1018,7 +1018,7 @@ static int ak8975_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ak8975_remove(struct i2c_client *client) > +static void ak8975_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ak8975_data *data = iio_priv(indio_dev); > @@ -1030,8 +1030,6 @@ static int ak8975_remove(struct i2c_client > *client) >         iio_triggered_buffer_cleanup(indio_dev); >         ak8975_set_mode(data, POWER_DOWN); >         ak8975_power_off(data); > - > -       return 0; >  } >   >  static int ak8975_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c > b/drivers/iio/magnetometer/bmc150_magn_i2c.c > index 65c004411d0f..570deaa87836 100644 > --- a/drivers/iio/magnetometer/bmc150_magn_i2c.c > +++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c > @@ -34,11 +34,9 @@ static int bmc150_magn_i2c_probe(struct i2c_client > *client, >         return bmc150_magn_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmc150_magn_i2c_remove(struct i2c_client *client) > +static void bmc150_magn_i2c_remove(struct i2c_client *client) >  { >         bmc150_magn_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_magn_acpi_match[] = { > diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c > b/drivers/iio/magnetometer/hmc5843_i2c.c > index 8d2ff8fc204d..fe5e8415b2f2 100644 > --- a/drivers/iio/magnetometer/hmc5843_i2c.c > +++ b/drivers/iio/magnetometer/hmc5843_i2c.c > @@ -65,11 +65,9 @@ static int hmc5843_i2c_probe(struct i2c_client > *cli, >                         id->driver_data, id->name); >  } >   > -static int hmc5843_i2c_remove(struct i2c_client *client) > +static void hmc5843_i2c_remove(struct i2c_client *client) >  { >         hmc5843_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id hmc5843_id[] = { > diff --git a/drivers/iio/magnetometer/mag3110.c > b/drivers/iio/magnetometer/mag3110.c > index 226439d0bfb5..b870ad803862 100644 > --- a/drivers/iio/magnetometer/mag3110.c > +++ b/drivers/iio/magnetometer/mag3110.c > @@ -559,7 +559,7 @@ static int mag3110_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mag3110_remove(struct i2c_client *client) > +static void mag3110_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mag3110_data *data = iio_priv(indio_dev); > @@ -569,8 +569,6 @@ static int mag3110_remove(struct i2c_client > *client) >         mag3110_standby(iio_priv(indio_dev)); >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static int mag3110_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/yamaha-yas530.c > b/drivers/iio/magnetometer/yamaha-yas530.c > index b2bc637150bf..8c16178d4820 100644 > --- a/drivers/iio/magnetometer/yamaha-yas530.c > +++ b/drivers/iio/magnetometer/yamaha-yas530.c > @@ -943,7 +943,7 @@ static int yas5xx_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int yas5xx_remove(struct i2c_client *i2c) > +static void yas5xx_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct yas5xx *yas5xx = iio_priv(indio_dev); > @@ -961,8 +961,6 @@ static int yas5xx_remove(struct i2c_client *i2c) >         pm_runtime_disable(dev); >         gpiod_set_value_cansleep(yas5xx->reset, 1); >         regulator_bulk_disable(ARRAY_SIZE(yas5xx->regs), yas5xx- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused yas5xx_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/potentiostat/lmp91000.c > b/drivers/iio/potentiostat/lmp91000.c > index fe514f0b5506..5ec7060d31d9 100644 > --- a/drivers/iio/potentiostat/lmp91000.c > +++ b/drivers/iio/potentiostat/lmp91000.c > @@ -384,7 +384,7 @@ static int lmp91000_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lmp91000_remove(struct i2c_client *client) > +static void lmp91000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct lmp91000_data *data = iio_priv(indio_dev); > @@ -396,8 +396,6 @@ static int lmp91000_remove(struct i2c_client > *client) >   >         iio_triggered_buffer_cleanup(indio_dev); >         iio_trigger_unregister(data->trig); > - > -       return 0; >  } >   >  static const struct of_device_id lmp91000_of_match[] = { > diff --git a/drivers/iio/pressure/mpl3115.c > b/drivers/iio/pressure/mpl3115.c > index d4f89e4babed..2f22aba61e4d 100644 > --- a/drivers/iio/pressure/mpl3115.c > +++ b/drivers/iio/pressure/mpl3115.c > @@ -290,15 +290,13 @@ static int mpl3115_standby(struct mpl3115_data > *data) >                 data->ctrl_reg1 & ~MPL3115_CTRL_ACTIVE); >  } >   > -static int mpl3115_remove(struct i2c_client *client) > +static void mpl3115_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         mpl3115_standby(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int mpl3115_suspend(struct device *dev) > diff --git a/drivers/iio/pressure/ms5611_i2c.c > b/drivers/iio/pressure/ms5611_i2c.c > index 3b1de71e0d15..b681a4183909 100644 > --- a/drivers/iio/pressure/ms5611_i2c.c > +++ b/drivers/iio/pressure/ms5611_i2c.c > @@ -105,11 +105,9 @@ static int ms5611_i2c_probe(struct i2c_client > *client, >         return ms5611_probe(indio_dev, &client->dev, id->name, id- > >driver_data); >  } >   > -static int ms5611_i2c_remove(struct i2c_client *client) > +static void ms5611_i2c_remove(struct i2c_client *client) >  { >         ms5611_remove(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  static const struct of_device_id ms5611_i2c_matches[] = { > diff --git a/drivers/iio/pressure/zpa2326_i2c.c > b/drivers/iio/pressure/zpa2326_i2c.c > index 0db0860d386b..f26dd8cbb387 100644 > --- a/drivers/iio/pressure/zpa2326_i2c.c > +++ b/drivers/iio/pressure/zpa2326_i2c.c > @@ -53,11 +53,9 @@ static int zpa2326_probe_i2c(struct > i2c_client          *client, >                              zpa2326_i2c_hwid(client), regmap); >  } >   > -static int zpa2326_remove_i2c(struct i2c_client *client) > +static void zpa2326_remove_i2c(struct i2c_client *client) >  { >         zpa2326_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id zpa2326_i2c_ids[] = { > diff --git a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > index 648ae576d6fa..791a33d5286c 100644 > --- a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > +++ b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > @@ -311,7 +311,7 @@ static int lidar_probe(struct i2c_client *client, >         return ret; >  } >   > -static int lidar_remove(struct i2c_client *client) > +static void lidar_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -320,8 +320,6 @@ static int lidar_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id lidar_id[] = { > diff --git a/drivers/iio/proximity/sx9500.c > b/drivers/iio/proximity/sx9500.c > index 42589d6200ad..d4670864ddc7 100644 > --- a/drivers/iio/proximity/sx9500.c > +++ b/drivers/iio/proximity/sx9500.c > @@ -979,7 +979,7 @@ static int sx9500_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sx9500_remove(struct i2c_client *client) > +static void sx9500_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sx9500_data *data = iio_priv(indio_dev); > @@ -989,8 +989,6 @@ static int sx9500_remove(struct i2c_client > *client) >         if (client->irq > 0) >                 iio_trigger_unregister(data->trig); >         kfree(data->buffer); > - > -       return 0; >  } >   >  static int sx9500_suspend(struct device *dev) > diff --git a/drivers/iio/temperature/mlx90614.c > b/drivers/iio/temperature/mlx90614.c > index c253a5315988..0808bb865928 100644 > --- a/drivers/iio/temperature/mlx90614.c > +++ b/drivers/iio/temperature/mlx90614.c > @@ -571,7 +571,7 @@ static int mlx90614_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90614_remove(struct i2c_client *client) > +static void mlx90614_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90614_data *data = iio_priv(indio_dev); > @@ -584,8 +584,6 @@ static int mlx90614_remove(struct i2c_client > *client) >                         mlx90614_sleep(data); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90614_id[] = { > diff --git a/drivers/iio/temperature/mlx90632.c > b/drivers/iio/temperature/mlx90632.c > index 7ee7ff8047a4..e8ef47147e2b 100644 > --- a/drivers/iio/temperature/mlx90632.c > +++ b/drivers/iio/temperature/mlx90632.c > @@ -924,7 +924,7 @@ static int mlx90632_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90632_remove(struct i2c_client *client) > +static void mlx90632_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90632_data *data = iio_priv(indio_dev); > @@ -936,8 +936,6 @@ static int mlx90632_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         mlx90632_sleep(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90632_id[] = { > diff --git a/drivers/input/joystick/as5011.c > b/drivers/input/joystick/as5011.c > index 34bcd99a46f5..2beda29021a3 100644 > --- a/drivers/input/joystick/as5011.c > +++ b/drivers/input/joystick/as5011.c > @@ -327,7 +327,7 @@ static int as5011_probe(struct i2c_client > *client, >         return error; >  } >   > -static int as5011_remove(struct i2c_client *client) > +static void as5011_remove(struct i2c_client *client) >  { >         struct as5011_device *as5011 = i2c_get_clientdata(client); >   > @@ -337,8 +337,6 @@ static int as5011_remove(struct i2c_client > *client) >   >         input_unregister_device(as5011->input_dev); >         kfree(as5011); > - > -       return 0; >  } >   >  static const struct i2c_device_id as5011_id[] = { > diff --git a/drivers/input/keyboard/adp5588-keys.c > b/drivers/input/keyboard/adp5588-keys.c > index 1592da4de336..b5666d650994 100644 > --- a/drivers/input/keyboard/adp5588-keys.c > +++ b/drivers/input/keyboard/adp5588-keys.c > @@ -598,7 +598,7 @@ static int adp5588_probe(struct i2c_client > *client, >         return error; >  } >   > -static int adp5588_remove(struct i2c_client *client) > +static void adp5588_remove(struct i2c_client *client) >  { >         struct adp5588_kpad *kpad = i2c_get_clientdata(client); >   > @@ -608,8 +608,6 @@ static int adp5588_remove(struct i2c_client > *client) >         input_unregister_device(kpad->input); >         adp5588_gpio_remove(kpad); >         kfree(kpad); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/keyboard/lm8323.c > b/drivers/input/keyboard/lm8323.c > index 6c38d034ec6e..407dd2ad6302 100644 > --- a/drivers/input/keyboard/lm8323.c > +++ b/drivers/input/keyboard/lm8323.c > @@ -752,7 +752,7 @@ static int lm8323_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8323_remove(struct i2c_client *client) > +static void lm8323_remove(struct i2c_client *client) >  { >         struct lm8323_chip *lm = i2c_get_clientdata(client); >         int i; > @@ -769,8 +769,6 @@ static int lm8323_remove(struct i2c_client > *client) >                         led_classdev_unregister(&lm->pwm[i].cdev); >   >         kfree(lm); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/lm8333.c > b/drivers/input/keyboard/lm8333.c > index 7c5f8c6bb957..9dac22c14125 100644 > --- a/drivers/input/keyboard/lm8333.c > +++ b/drivers/input/keyboard/lm8333.c > @@ -200,15 +200,13 @@ static int lm8333_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8333_remove(struct i2c_client *client) > +static void lm8333_remove(struct i2c_client *client) >  { >         struct lm8333 *lm8333 = i2c_get_clientdata(client); >   >         free_irq(client->irq, lm8333); >         input_unregister_device(lm8333->input); >         kfree(lm8333); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm8333_id[] = { > diff --git a/drivers/input/keyboard/mcs_touchkey.c > b/drivers/input/keyboard/mcs_touchkey.c > index 8cb0062b98e4..ac1637a3389e 100644 > --- a/drivers/input/keyboard/mcs_touchkey.c > +++ b/drivers/input/keyboard/mcs_touchkey.c > @@ -194,7 +194,7 @@ static int mcs_touchkey_probe(struct i2c_client > *client, >         return error; >  } >   > -static int mcs_touchkey_remove(struct i2c_client *client) > +static void mcs_touchkey_remove(struct i2c_client *client) >  { >         struct mcs_touchkey_data *data = i2c_get_clientdata(client); >   > @@ -203,8 +203,6 @@ static int mcs_touchkey_remove(struct i2c_client > *client) >                 data->poweron(false); >         input_unregister_device(data->input_dev); >         kfree(data); > - > -       return 0; >  } >   >  static void mcs_touchkey_shutdown(struct i2c_client *client) > diff --git a/drivers/input/keyboard/qt1070.c > b/drivers/input/keyboard/qt1070.c > index 7174e1df1ee3..9fcce18b1d65 100644 > --- a/drivers/input/keyboard/qt1070.c > +++ b/drivers/input/keyboard/qt1070.c > @@ -216,7 +216,7 @@ static int qt1070_probe(struct i2c_client > *client, >         return err; >  } >   > -static int qt1070_remove(struct i2c_client *client) > +static void qt1070_remove(struct i2c_client *client) >  { >         struct qt1070_data *data = i2c_get_clientdata(client); >   > @@ -225,8 +225,6 @@ static int qt1070_remove(struct i2c_client > *client) >   >         input_unregister_device(data->input); >         kfree(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/qt2160.c > b/drivers/input/keyboard/qt2160.c > index 32d4a076eaa3..382b1519218c 100644 > --- a/drivers/input/keyboard/qt2160.c > +++ b/drivers/input/keyboard/qt2160.c > @@ -432,7 +432,7 @@ static int qt2160_probe(struct i2c_client > *client, >         return error; >  } >   > -static int qt2160_remove(struct i2c_client *client) > +static void qt2160_remove(struct i2c_client *client) >  { >         struct qt2160_data *qt2160 = i2c_get_clientdata(client); >   > @@ -446,8 +446,6 @@ static int qt2160_remove(struct i2c_client > *client) >   >         input_unregister_device(qt2160->input); >         kfree(qt2160); > - > -       return 0; >  } >   >  static const struct i2c_device_id qt2160_idtable[] = { > diff --git a/drivers/input/keyboard/tca6416-keypad.c > b/drivers/input/keyboard/tca6416-keypad.c > index 2a9755910065..afcdfbb002ff 100644 > --- a/drivers/input/keyboard/tca6416-keypad.c > +++ b/drivers/input/keyboard/tca6416-keypad.c > @@ -307,7 +307,7 @@ static int tca6416_keypad_probe(struct i2c_client > *client, >         return error; >  } >   > -static int tca6416_keypad_remove(struct i2c_client *client) > +static void tca6416_keypad_remove(struct i2c_client *client) >  { >         struct tca6416_keypad_chip *chip = > i2c_get_clientdata(client); >   > @@ -318,8 +318,6 @@ static int tca6416_keypad_remove(struct > i2c_client *client) >   >         input_unregister_device(chip->input); >         kfree(chip); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/misc/adxl34x-i2c.c > b/drivers/input/misc/adxl34x-i2c.c > index a3b5f88d2bd1..5be636aaa94f 100644 > --- a/drivers/input/misc/adxl34x-i2c.c > +++ b/drivers/input/misc/adxl34x-i2c.c > @@ -99,13 +99,11 @@ static int adxl34x_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adxl34x_i2c_remove(struct i2c_client *client) > +static void adxl34x_i2c_remove(struct i2c_client *client) >  { >         struct adxl34x *ac = i2c_get_clientdata(client); >   >         adxl34x_remove(ac); > - > -       return 0; >  } >   >  static int __maybe_unused adxl34x_i2c_suspend(struct device *dev) > diff --git a/drivers/input/misc/bma150.c > b/drivers/input/misc/bma150.c > index a9d984da95f3..84fe394da7a6 100644 > --- a/drivers/input/misc/bma150.c > +++ b/drivers/input/misc/bma150.c > @@ -513,11 +513,9 @@ static int bma150_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bma150_remove(struct i2c_client *client) > +static void bma150_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused bma150_suspend(struct device *dev) > diff --git a/drivers/input/misc/cma3000_d0x_i2c.c > b/drivers/input/misc/cma3000_d0x_i2c.c > index 03fb49127c3a..3b23210c46b7 100644 > --- a/drivers/input/misc/cma3000_d0x_i2c.c > +++ b/drivers/input/misc/cma3000_d0x_i2c.c > @@ -58,13 +58,11 @@ static int cma3000_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cma3000_i2c_remove(struct i2c_client *client) > +static void cma3000_i2c_remove(struct i2c_client *client) >  { >         struct cma3000_accl_data *data = i2c_get_clientdata(client); >   >         cma3000_exit(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/misc/pcf8574_keypad.c > b/drivers/input/misc/pcf8574_keypad.c > index abc423165522..cfd6640e4f82 100644 > --- a/drivers/input/misc/pcf8574_keypad.c > +++ b/drivers/input/misc/pcf8574_keypad.c > @@ -157,7 +157,7 @@ static int pcf8574_kp_probe(struct i2c_client > *client, const struct i2c_device_i >         return ret; >  } >   > -static int pcf8574_kp_remove(struct i2c_client *client) > +static void pcf8574_kp_remove(struct i2c_client *client) >  { >         struct kp_data *lp = i2c_get_clientdata(client); >   > @@ -165,8 +165,6 @@ static int pcf8574_kp_remove(struct i2c_client > *client) >   >         input_unregister_device(lp->idev); >         kfree(lp); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/mouse/synaptics_i2c.c > b/drivers/input/mouse/synaptics_i2c.c > index fa304648d611..987ee67a1045 100644 > --- a/drivers/input/mouse/synaptics_i2c.c > +++ b/drivers/input/mouse/synaptics_i2c.c > @@ -587,7 +587,7 @@ static int synaptics_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int synaptics_i2c_remove(struct i2c_client *client) > +static void synaptics_i2c_remove(struct i2c_client *client) >  { >         struct synaptics_i2c *touch = i2c_get_clientdata(client); >   > @@ -596,8 +596,6 @@ static int synaptics_i2c_remove(struct i2c_client > *client) >   >         input_unregister_device(touch->input); >         kfree(touch); > - > -       return 0; >  } >   >  static int __maybe_unused synaptics_i2c_suspend(struct device *dev) > diff --git a/drivers/input/rmi4/rmi_smbus.c > b/drivers/input/rmi4/rmi_smbus.c > index 2407ea43de59..c130468541b7 100644 > --- a/drivers/input/rmi4/rmi_smbus.c > +++ b/drivers/input/rmi4/rmi_smbus.c > @@ -338,13 +338,11 @@ static int rmi_smb_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rmi_smb_remove(struct i2c_client *client) > +static void rmi_smb_remove(struct i2c_client *client) >  { >         struct rmi_smb_xport *rmi_smb = i2c_get_clientdata(client); >   >         rmi_unregister_transport_device(&rmi_smb->xport); > - > -       return 0; >  } >   >  static int __maybe_unused rmi_smb_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c > b/drivers/input/touchscreen/atmel_mxt_ts.c > index eb66cd2689b7..4eedea08b0b5 100644 > --- a/drivers/input/touchscreen/atmel_mxt_ts.c > +++ b/drivers/input/touchscreen/atmel_mxt_ts.c > @@ -3284,7 +3284,7 @@ static int mxt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return error; >  } >   > -static int mxt_remove(struct i2c_client *client) > +static void mxt_remove(struct i2c_client *client) >  { >         struct mxt_data *data = i2c_get_clientdata(client); >   > @@ -3294,8 +3294,6 @@ static int mxt_remove(struct i2c_client > *client) >         mxt_free_object_table(data); >         regulator_bulk_disable(ARRAY_SIZE(data->regulators), >                                data->regulators); > - > -       return 0; >  } >   >  static int __maybe_unused mxt_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/bu21013_ts.c > b/drivers/input/touchscreen/bu21013_ts.c > index 2f1f0d7607f8..34f422e246ef 100644 > --- a/drivers/input/touchscreen/bu21013_ts.c > +++ b/drivers/input/touchscreen/bu21013_ts.c > @@ -552,15 +552,13 @@ static int bu21013_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bu21013_remove(struct i2c_client *client) > +static void bu21013_remove(struct i2c_client *client) >  { >         struct bu21013_ts *ts = i2c_get_clientdata(client); >   >         /* Make sure IRQ will exit quickly even if there is contact > */ >         ts->touch_stopped = true; >         /* The resources will be freed by devm */ > - > -       return 0; >  } >   >  static int __maybe_unused bu21013_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/cyttsp4_i2c.c > b/drivers/input/touchscreen/cyttsp4_i2c.c > index c65ccb2f4716..28ae7c15397a 100644 > --- a/drivers/input/touchscreen/cyttsp4_i2c.c > +++ b/drivers/input/touchscreen/cyttsp4_i2c.c > @@ -43,13 +43,11 @@ static int cyttsp4_i2c_probe(struct i2c_client > *client, >         return PTR_ERR_OR_ZERO(ts); >  } >   > -static int cyttsp4_i2c_remove(struct i2c_client *client) > +static void cyttsp4_i2c_remove(struct i2c_client *client) >  { >         struct cyttsp4 *ts = i2c_get_clientdata(client); >   >         cyttsp4_remove(ts); > - > -       return 0; >  } >   >  static const struct i2c_device_id cyttsp4_i2c_id[] = { > diff --git a/drivers/input/touchscreen/edt-ft5x06.c > b/drivers/input/touchscreen/edt-ft5x06.c > index bb2e1cbffba7..0c325132a955 100644 > --- a/drivers/input/touchscreen/edt-ft5x06.c > +++ b/drivers/input/touchscreen/edt-ft5x06.c > @@ -1266,13 +1266,11 @@ static int edt_ft5x06_ts_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int edt_ft5x06_ts_remove(struct i2c_client *client) > +static void edt_ft5x06_ts_remove(struct i2c_client *client) >  { >         struct edt_ft5x06_ts_data *tsdata = > i2c_get_clientdata(client); >   >         edt_ft5x06_ts_teardown_debugfs(tsdata); > - > -       return 0; >  } >   >  static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/goodix.c > b/drivers/input/touchscreen/goodix.c > index 3ad9870db108..1617dd931876 100644 > --- a/drivers/input/touchscreen/goodix.c > +++ b/drivers/input/touchscreen/goodix.c > @@ -1383,14 +1383,12 @@ static int goodix_ts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int goodix_ts_remove(struct i2c_client *client) > +static void goodix_ts_remove(struct i2c_client *client) >  { >         struct goodix_ts_data *ts = i2c_get_clientdata(client); >   >         if (ts->load_cfg_from_disk) >                 wait_for_completion(&ts->firmware_loading_complete); > - > -       return 0; >  } >   >  static int __maybe_unused goodix_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/migor_ts.c > b/drivers/input/touchscreen/migor_ts.c > index 42d3fd7e04d7..79cd660d879e 100644 > --- a/drivers/input/touchscreen/migor_ts.c > +++ b/drivers/input/touchscreen/migor_ts.c > @@ -176,7 +176,7 @@ static int migor_ts_probe(struct i2c_client > *client, >         return error; >  } >   > -static int migor_ts_remove(struct i2c_client *client) > +static void migor_ts_remove(struct i2c_client *client) >  { >         struct migor_ts_priv *priv = i2c_get_clientdata(client); >   > @@ -185,8 +185,6 @@ static int migor_ts_remove(struct i2c_client > *client) >         kfree(priv); >   >         dev_set_drvdata(&client->dev, NULL); > - > -       return 0; >  } >   >  static int __maybe_unused migor_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/s6sy761.c > b/drivers/input/touchscreen/s6sy761.c > index 85a1f465c097..1a7d00289b4c 100644 > --- a/drivers/input/touchscreen/s6sy761.c > +++ b/drivers/input/touchscreen/s6sy761.c > @@ -475,11 +475,9 @@ static int s6sy761_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int s6sy761_remove(struct i2c_client *client) > +static void s6sy761_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused s6sy761_runtime_suspend(struct device > *dev) > diff --git a/drivers/input/touchscreen/stmfts.c > b/drivers/input/touchscreen/stmfts.c > index c175d44c52f3..d5bd170808fb 100644 > --- a/drivers/input/touchscreen/stmfts.c > +++ b/drivers/input/touchscreen/stmfts.c > @@ -738,11 +738,9 @@ static int stmfts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stmfts_remove(struct i2c_client *client) > +static void stmfts_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused stmfts_runtime_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/tsc2004.c > b/drivers/input/touchscreen/tsc2004.c > index 9fdd870c4c0b..a9565353ee98 100644 > --- a/drivers/input/touchscreen/tsc2004.c > +++ b/drivers/input/touchscreen/tsc2004.c > @@ -43,11 +43,9 @@ static int tsc2004_probe(struct i2c_client *i2c, >                              tsc2004_cmd); >  } >   > -static int tsc2004_remove(struct i2c_client *i2c) > +static void tsc2004_remove(struct i2c_client *i2c) >  { >         tsc200x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tsc2004_idtable[] = { > diff --git a/drivers/leds/flash/leds-as3645a.c > b/drivers/leds/flash/leds-as3645a.c > index aa3f82be0a9c..bb2249771acb 100644 > --- a/drivers/leds/flash/leds-as3645a.c > +++ b/drivers/leds/flash/leds-as3645a.c > @@ -724,7 +724,7 @@ static int as3645a_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int as3645a_remove(struct i2c_client *client) > +static void as3645a_remove(struct i2c_client *client) >  { >         struct as3645a *flash = i2c_get_clientdata(client); >   > @@ -740,8 +740,6 @@ static int as3645a_remove(struct i2c_client > *client) >   >         fwnode_handle_put(flash->flash_node); >         fwnode_handle_put(flash->indicator_node); > - > -       return 0; >  } >   >  static const struct i2c_device_id as3645a_id_table[] = { > diff --git a/drivers/leds/flash/leds-lm3601x.c > b/drivers/leds/flash/leds-lm3601x.c > index 37e1d6e68687..78730e066a73 100644 > --- a/drivers/leds/flash/leds-lm3601x.c > +++ b/drivers/leds/flash/leds-lm3601x.c > @@ -440,7 +440,7 @@ static int lm3601x_probe(struct i2c_client > *client) >         return lm3601x_register_leds(led, fwnode); >  } >   > -static int lm3601x_remove(struct i2c_client *client) > +static void lm3601x_remove(struct i2c_client *client) >  { >         struct lm3601x_led *led = i2c_get_clientdata(client); >         int ret; > @@ -450,8 +450,6 @@ static int lm3601x_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, >                          "Failed to put into standby (%pe)\n", > ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3601x_id[] = { > diff --git a/drivers/leds/flash/leds-rt4505.c > b/drivers/leds/flash/leds-rt4505.c > index ee129ab7255d..e404fe8b0314 100644 > --- a/drivers/leds/flash/leds-rt4505.c > +++ b/drivers/leds/flash/leds-rt4505.c > @@ -393,12 +393,11 @@ static int rt4505_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int rt4505_remove(struct i2c_client *client) > +static void rt4505_remove(struct i2c_client *client) >  { >         struct rt4505_priv *priv = i2c_get_clientdata(client); >   >         v4l2_flash_release(priv->v4l2_flash); > -       return 0; >  } >   >  static void rt4505_shutdown(struct i2c_client *client) > diff --git a/drivers/leds/leds-an30259a.c b/drivers/leds/leds- > an30259a.c > index a0df1fb28774..e072ee5409f7 100644 > --- a/drivers/leds/leds-an30259a.c > +++ b/drivers/leds/leds-an30259a.c > @@ -334,13 +334,11 @@ static int an30259a_probe(struct i2c_client > *client) >         return err; >  } >   > -static int an30259a_remove(struct i2c_client *client) > +static void an30259a_remove(struct i2c_client *client) >  { >         struct an30259a *chip = i2c_get_clientdata(client); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id an30259a_match_table[] = { > diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c > index 80d937454aee..0b52fc9097c6 100644 > --- a/drivers/leds/leds-aw2013.c > +++ b/drivers/leds/leds-aw2013.c > @@ -401,15 +401,13 @@ static int aw2013_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int aw2013_remove(struct i2c_client *client) > +static void aw2013_remove(struct i2c_client *client) >  { >         struct aw2013 *chip = i2c_get_clientdata(client); >   >         aw2013_chip_disable(chip); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id aw2013_match_table[] = { > diff --git a/drivers/leds/leds-bd2802.c b/drivers/leds/leds-bd2802.c > index 8bbaef5a2986..2b6678f6bd56 100644 > --- a/drivers/leds/leds-bd2802.c > +++ b/drivers/leds/leds-bd2802.c > @@ -722,7 +722,7 @@ static int bd2802_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bd2802_remove(struct i2c_client *client) > +static void bd2802_remove(struct i2c_client *client) >  { >         struct bd2802_led *led = i2c_get_clientdata(client); >         int i; > @@ -733,8 +733,6 @@ static int bd2802_remove(struct i2c_client > *client) >                 bd2802_disable_adv_conf(led); >         for (i = 0; i < ARRAY_SIZE(bd2802_attributes); i++) >                 device_remove_file(&led->client->dev, > bd2802_attributes[i]); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/leds/leds-blinkm.c b/drivers/leds/leds-blinkm.c > index bd7d0d5cf3b6..3fb6a2fdaefa 100644 > --- a/drivers/leds/leds-blinkm.c > +++ b/drivers/leds/leds-blinkm.c > @@ -677,7 +677,7 @@ static int blinkm_probe(struct i2c_client > *client, >         return err; >  } >   > -static int blinkm_remove(struct i2c_client *client) > +static void blinkm_remove(struct i2c_client *client) >  { >         struct blinkm_data *data = i2c_get_clientdata(client); >         int ret = 0; > @@ -716,7 +716,6 @@ static int blinkm_remove(struct i2c_client > *client) >                 dev_err(&client->dev, "Failure in blinkm_remove > ignored. Continuing.\n"); >   >         sysfs_remove_group(&client->dev.kobj, &blinkm_group); > -       return 0; >  } >   >  static const struct i2c_device_id blinkm_id[] = { > diff --git a/drivers/leds/leds-is31fl319x.c b/drivers/leds/leds- > is31fl319x.c > index 4161b9dd7e48..7aee62211750 100644 > --- a/drivers/leds/leds-is31fl319x.c > +++ b/drivers/leds/leds-is31fl319x.c > @@ -414,12 +414,11 @@ static int is31fl319x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int is31fl319x_remove(struct i2c_client *client) > +static void is31fl319x_remove(struct i2c_client *client) >  { >         struct is31fl319x_chip *is31 = i2c_get_clientdata(client); >   >         mutex_destroy(&is31->lock); > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-is31fl32xx.c b/drivers/leds/leds- > is31fl32xx.c > index fc63fce38c19..0d219c1ac3b5 100644 > --- a/drivers/leds/leds-is31fl32xx.c > +++ b/drivers/leds/leds-is31fl32xx.c > @@ -457,7 +457,7 @@ static int is31fl32xx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int is31fl32xx_remove(struct i2c_client *client) > +static void is31fl32xx_remove(struct i2c_client *client) >  { >         struct is31fl32xx_priv *priv = i2c_get_clientdata(client); >         int ret; > @@ -466,8 +466,6 @@ static int is31fl32xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to reset registers on > removal (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-lm3530.c b/drivers/leds/leds-lm3530.c > index e72393534b72..ba906c253c7f 100644 > --- a/drivers/leds/leds-lm3530.c > +++ b/drivers/leds/leds-lm3530.c > @@ -470,13 +470,12 @@ static int lm3530_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3530_remove(struct i2c_client *client) > +static void lm3530_remove(struct i2c_client *client) >  { >         struct lm3530_data *drvdata = i2c_get_clientdata(client); >   >         lm3530_led_disable(drvdata); >         led_classdev_unregister(&drvdata->led_dev); > -       return 0; >  } >   >  static const struct i2c_device_id lm3530_id[] = { > diff --git a/drivers/leds/leds-lm3532.c b/drivers/leds/leds-lm3532.c > index beb53040e09e..db64d44bcbbf 100644 > --- a/drivers/leds/leds-lm3532.c > +++ b/drivers/leds/leds-lm3532.c > @@ -704,7 +704,7 @@ static int lm3532_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3532_remove(struct i2c_client *client) > +static void lm3532_remove(struct i2c_client *client) >  { >         struct lm3532_data *drvdata = i2c_get_clientdata(client); >   > @@ -712,8 +712,6 @@ static int lm3532_remove(struct i2c_client > *client) >   >         if (drvdata->enable_gpio) >                 gpiod_direction_output(drvdata->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id of_lm3532_leds_match[] = { > diff --git a/drivers/leds/leds-lm355x.c b/drivers/leds/leds-lm355x.c > index 2d3e11845ba5..daa35927b301 100644 > --- a/drivers/leds/leds-lm355x.c > +++ b/drivers/leds/leds-lm355x.c > @@ -491,7 +491,7 @@ static int lm355x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm355x_remove(struct i2c_client *client) > +static void lm355x_remove(struct i2c_client *client) >  { >         struct lm355x_chip_data *chip = i2c_get_clientdata(client); >         struct lm355x_reg_data *preg = chip->regs; > @@ -501,8 +501,6 @@ static int lm355x_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         dev_info(&client->dev, "%s is removed\n", lm355x_name[chip- > >type]); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm355x_id[] = { > diff --git a/drivers/leds/leds-lm3642.c b/drivers/leds/leds-lm3642.c > index 435309154e6b..428a5d928150 100644 > --- a/drivers/leds/leds-lm3642.c > +++ b/drivers/leds/leds-lm3642.c > @@ -380,7 +380,7 @@ static int lm3642_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm3642_remove(struct i2c_client *client) > +static void lm3642_remove(struct i2c_client *client) >  { >         struct lm3642_chip_data *chip = i2c_get_clientdata(client); >   > @@ -388,7 +388,6 @@ static int lm3642_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         regmap_write(chip->regmap, REG_ENABLE, 0); > -       return 0; >  } >   >  static const struct i2c_device_id lm3642_id[] = { > diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds- > lm3692x.c > index 87cd24ce3f95..54b4662bff41 100644 > --- a/drivers/leds/leds-lm3692x.c > +++ b/drivers/leds/leds-lm3692x.c > @@ -491,14 +491,12 @@ static int lm3692x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3692x_remove(struct i2c_client *client) > +static void lm3692x_remove(struct i2c_client *client) >  { >         struct lm3692x_led *led = i2c_get_clientdata(client); >   >         lm3692x_leds_disable(led); >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3692x_id[] = { > diff --git a/drivers/leds/leds-lm3697.c b/drivers/leds/leds-lm3697.c > index 3ecf90fbc06c..71231a60eebc 100644 > --- a/drivers/leds/leds-lm3697.c > +++ b/drivers/leds/leds-lm3697.c > @@ -337,7 +337,7 @@ static int lm3697_probe(struct i2c_client > *client, >         return lm3697_init(led); >  } >   > -static int lm3697_remove(struct i2c_client *client) > +static void lm3697_remove(struct i2c_client *client) >  { >         struct lm3697 *led = i2c_get_clientdata(client); >         struct device *dev = &led->client->dev; > @@ -358,8 +358,6 @@ static int lm3697_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3697_id[] = { > diff --git a/drivers/leds/leds-lp3944.c b/drivers/leds/leds-lp3944.c > index 437c711b2a27..673ad8c04f41 100644 > --- a/drivers/leds/leds-lp3944.c > +++ b/drivers/leds/leds-lp3944.c > @@ -397,7 +397,7 @@ static int lp3944_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3944_remove(struct i2c_client *client) > +static void lp3944_remove(struct i2c_client *client) >  { >         struct lp3944_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct lp3944_data *data = i2c_get_clientdata(client); > @@ -414,8 +414,6 @@ static int lp3944_remove(struct i2c_client > *client) >                 default: >                         break; >                 } > - > -       return 0; >  } >   >  /* lp3944 i2c driver struct */ > diff --git a/drivers/leds/leds-lp3952.c b/drivers/leds/leds-lp3952.c > index 6ee9131fbf25..bf0ad1b5ce24 100644 > --- a/drivers/leds/leds-lp3952.c > +++ b/drivers/leds/leds-lp3952.c > @@ -255,15 +255,13 @@ static int lp3952_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3952_remove(struct i2c_client *client) > +static void lp3952_remove(struct i2c_client *client) >  { >         struct lp3952_led_array *priv; >   >         priv = i2c_get_clientdata(client); >         lp3952_on_off(priv, LP3952_LED_ALL, false); >         gpiod_set_value(priv->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp3952_id[] = { > diff --git a/drivers/leds/leds-lp50xx.c b/drivers/leds/leds-lp50xx.c > index e129dcc656b8..28d6b39fa72d 100644 > --- a/drivers/leds/leds-lp50xx.c > +++ b/drivers/leds/leds-lp50xx.c > @@ -563,7 +563,7 @@ static int lp50xx_probe(struct i2c_client > *client) >         return lp50xx_probe_dt(led); >  } >   > -static int lp50xx_remove(struct i2c_client *client) > +static void lp50xx_remove(struct i2c_client *client) >  { >         struct lp50xx *led = i2c_get_clientdata(client); >         int ret; > @@ -579,8 +579,6 @@ static int lp50xx_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp50xx_id[] = { > diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c > index a9e7507c998c..7ff20c260504 100644 > --- a/drivers/leds/leds-lp5521.c > +++ b/drivers/leds/leds-lp5521.c > @@ -579,7 +579,7 @@ static int lp5521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5521_remove(struct i2c_client *client) > +static void lp5521_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -587,8 +587,6 @@ static int lp5521_remove(struct i2c_client > *client) >         lp5521_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5521_id[] = { > diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c > index b1590cb4a188..369d40b0b65b 100644 > --- a/drivers/leds/leds-lp5523.c > +++ b/drivers/leds/leds-lp5523.c > @@ -947,7 +947,7 @@ static int lp5523_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5523_remove(struct i2c_client *client) > +static void lp5523_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -955,8 +955,6 @@ static int lp5523_remove(struct i2c_client > *client) >         lp5523_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5523_id[] = { > diff --git a/drivers/leds/leds-lp5562.c b/drivers/leds/leds-lp5562.c > index 31c14016d289..0e490085ff35 100644 > --- a/drivers/leds/leds-lp5562.c > +++ b/drivers/leds/leds-lp5562.c > @@ -573,7 +573,7 @@ static int lp5562_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5562_remove(struct i2c_client *client) > +static void lp5562_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -582,8 +582,6 @@ static int lp5562_remove(struct i2c_client > *client) >   >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5562_id[] = { > diff --git a/drivers/leds/leds-lp8501.c b/drivers/leds/leds-lp8501.c > index 2d2fda2ab104..ae11a02c0ab2 100644 > --- a/drivers/leds/leds-lp8501.c > +++ b/drivers/leds/leds-lp8501.c > @@ -362,7 +362,7 @@ static int lp8501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8501_remove(struct i2c_client *client) > +static void lp8501_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -370,8 +370,6 @@ static int lp8501_remove(struct i2c_client > *client) >         lp8501_stop_engine(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8501_id[] = { > diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c > index 3c693d5e3b44..e2b36d3187eb 100644 > --- a/drivers/leds/leds-lp8860.c > +++ b/drivers/leds/leds-lp8860.c > @@ -445,7 +445,7 @@ static int lp8860_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp8860_remove(struct i2c_client *client) > +static void lp8860_remove(struct i2c_client *client) >  { >         struct lp8860_led *led = i2c_get_clientdata(client); >         int ret; > @@ -461,8 +461,6 @@ static int lp8860_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8860_id[] = { > diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds- > pca9532.c > index f72b5d1be3a6..df83d97cb479 100644 > --- a/drivers/leds/leds-pca9532.c > +++ b/drivers/leds/leds-pca9532.c > @@ -52,7 +52,7 @@ struct pca9532_data { >   >  static int pca9532_probe(struct i2c_client *client, >         const struct i2c_device_id *id); > -static int pca9532_remove(struct i2c_client *client); > +static void pca9532_remove(struct i2c_client *client); >   >  enum { >         pca9530, > @@ -546,13 +546,11 @@ static int pca9532_probe(struct i2c_client > *client, >         return pca9532_configure(client, data, pca9532_pdata); >  } >   > -static int pca9532_remove(struct i2c_client *client) > +static void pca9532_remove(struct i2c_client *client) >  { >         struct pca9532_data *data = i2c_get_clientdata(client); >   >         pca9532_destroy_devices(data, data->chip_info->num_leds); > - > -       return 0; >  } >   >  module_i2c_driver(pca9532_driver); > diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds- > tca6507.c > index 1473ced8664c..161bef65c6b7 100644 > --- a/drivers/leds/leds-tca6507.c > +++ b/drivers/leds/leds-tca6507.c > @@ -790,7 +790,7 @@ static int tca6507_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tca6507_remove(struct i2c_client *client) > +static void tca6507_remove(struct i2c_client *client) >  { >         int i; >         struct tca6507_chip *tca = i2c_get_clientdata(client); > @@ -802,8 +802,6 @@ static int tca6507_remove(struct i2c_client > *client) >         } >         tca6507_remove_gpio(tca); >         cancel_work_sync(&tca->work); > - > -       return 0; >  } >   >  static struct i2c_driver tca6507_driver = { > diff --git a/drivers/leds/leds-turris-omnia.c b/drivers/leds/leds- > turris-omnia.c > index 1adfed1c0619..66040e8621af 100644 > --- a/drivers/leds/leds-turris-omnia.c > +++ b/drivers/leds/leds-turris-omnia.c > @@ -245,7 +245,7 @@ static int omnia_leds_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int omnia_leds_remove(struct i2c_client *client) > +static void omnia_leds_remove(struct i2c_client *client) >  { >         u8 buf[5]; >   > @@ -261,8 +261,6 @@ static int omnia_leds_remove(struct i2c_client > *client) >         buf[4] = 255; >   >         i2c_master_send(client, buf, 5); > - > -       return 0; >  } >   >  static const struct of_device_id of_omnia_leds_match[] = { > diff --git a/drivers/macintosh/ams/ams-i2c.c > b/drivers/macintosh/ams/ams-i2c.c > index d2f0cde6f9c7..362fc56b69dc 100644 > --- a/drivers/macintosh/ams/ams-i2c.c > +++ b/drivers/macintosh/ams/ams-i2c.c > @@ -230,7 +230,7 @@ static int ams_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ams_i2c_remove(struct i2c_client *client) > +static void ams_i2c_remove(struct i2c_client *client) >  { >         if (ams_info.has_device) { >                 ams_sensor_detach(); > @@ -245,8 +245,6 @@ static int ams_i2c_remove(struct i2c_client > *client) >   >                 ams_info.has_device = 0; >         } > - > -       return 0; >  } >   >  static void ams_i2c_exit(void) > diff --git a/drivers/macintosh/therm_adt746x.c > b/drivers/macintosh/therm_adt746x.c > index e604cbc91763..b004ea2a1102 100644 > --- a/drivers/macintosh/therm_adt746x.c > +++ b/drivers/macintosh/therm_adt746x.c > @@ -563,7 +563,7 @@ static int probe_thermostat(struct i2c_client > *client, >         return 0; >  } >   > -static int remove_thermostat(struct i2c_client *client) > +static void remove_thermostat(struct i2c_client *client) >  { >         struct thermostat *th = i2c_get_clientdata(client); >         int i; > @@ -585,8 +585,6 @@ static int remove_thermostat(struct i2c_client > *client) >         write_both_fan_speed(th, -1); >   >         kfree(th); > - > -       return 0; >  } >   >  static const struct i2c_device_id therm_adt746x_id[] = { > diff --git a/drivers/macintosh/therm_windtunnel.c > b/drivers/macintosh/therm_windtunnel.c > index 9226b74fa08f..61fe2ab910b8 100644 > --- a/drivers/macintosh/therm_windtunnel.c > +++ b/drivers/macintosh/therm_windtunnel.c > @@ -334,7 +334,7 @@ static void do_attach(struct i2c_adapter > *adapter) >         } >  } >   > -static int > +static void >  do_remove(struct i2c_client *client) >  { >         if (x.running) { > @@ -348,8 +348,6 @@ do_remove(struct i2c_client *client) >                 x.fan = NULL; >         else >                 printk(KERN_ERR "g4fan: bad client\n"); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/macintosh/windfarm_ad7417_sensor.c > b/drivers/macintosh/windfarm_ad7417_sensor.c > index 6ad6441abcbc..c5c54a4ce91f 100644 > --- a/drivers/macintosh/windfarm_ad7417_sensor.c > +++ b/drivers/macintosh/windfarm_ad7417_sensor.c > @@ -289,7 +289,7 @@ static int wf_ad7417_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_ad7417_remove(struct i2c_client *client) > +static void wf_ad7417_remove(struct i2c_client *client) >  { >         struct wf_ad7417_priv *pv = dev_get_drvdata(&client->dev); >         int i; > @@ -302,8 +302,6 @@ static int wf_ad7417_remove(struct i2c_client > *client) >                 wf_unregister_sensor(&pv->sensors[i]); >   >         kref_put(&pv->ref, wf_ad7417_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_ad7417_id[] = { > diff --git a/drivers/macintosh/windfarm_fcu_controls.c > b/drivers/macintosh/windfarm_fcu_controls.c > index 82e7b2005ae7..c5b1ca5bcd73 100644 > --- a/drivers/macintosh/windfarm_fcu_controls.c > +++ b/drivers/macintosh/windfarm_fcu_controls.c > @@ -560,7 +560,7 @@ static int wf_fcu_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_fcu_remove(struct i2c_client *client) > +static void wf_fcu_remove(struct i2c_client *client) >  { >         struct wf_fcu_priv *pv = dev_get_drvdata(&client->dev); >         struct wf_fcu_fan *fan; > @@ -571,7 +571,6 @@ static int wf_fcu_remove(struct i2c_client > *client) >                 wf_unregister_control(&fan->ctrl); >         } >         kref_put(&pv->ref, wf_fcu_release); > -       return 0; >  } >   >  static const struct i2c_device_id wf_fcu_id[] = { > diff --git a/drivers/macintosh/windfarm_lm75_sensor.c > b/drivers/macintosh/windfarm_lm75_sensor.c > index eb7e7f0bd219..204661c8e918 100644 > --- a/drivers/macintosh/windfarm_lm75_sensor.c > +++ b/drivers/macintosh/windfarm_lm75_sensor.c > @@ -147,7 +147,7 @@ static int wf_lm75_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm75_remove(struct i2c_client *client) > +static void wf_lm75_remove(struct i2c_client *client) >  { >         struct wf_lm75_sensor *lm = i2c_get_clientdata(client); >   > @@ -156,8 +156,6 @@ static int wf_lm75_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm75_id[] = { > diff --git a/drivers/macintosh/windfarm_lm87_sensor.c > b/drivers/macintosh/windfarm_lm87_sensor.c > index 807efdde86bc..40d25463346e 100644 > --- a/drivers/macintosh/windfarm_lm87_sensor.c > +++ b/drivers/macintosh/windfarm_lm87_sensor.c > @@ -145,7 +145,7 @@ static int wf_lm87_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm87_remove(struct i2c_client *client) > +static void wf_lm87_remove(struct i2c_client *client) >  { >         struct wf_lm87_sensor *lm = i2c_get_clientdata(client); >   > @@ -154,8 +154,6 @@ static int wf_lm87_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm87_id[] = { > diff --git a/drivers/macintosh/windfarm_max6690_sensor.c > b/drivers/macintosh/windfarm_max6690_sensor.c > index 55ee417fb878..c0d404ebc792 100644 > --- a/drivers/macintosh/windfarm_max6690_sensor.c > +++ b/drivers/macintosh/windfarm_max6690_sensor.c > @@ -104,14 +104,12 @@ static int wf_max6690_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_max6690_remove(struct i2c_client *client) > +static void wf_max6690_remove(struct i2c_client *client) >  { >         struct wf_6690_sensor *max = i2c_get_clientdata(client); >   >         max->i2c = NULL; >         wf_unregister_sensor(&max->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_max6690_id[] = { > diff --git a/drivers/macintosh/windfarm_smu_sat.c > b/drivers/macintosh/windfarm_smu_sat.c > index 5ade627eaa78..be5d4593db93 100644 > --- a/drivers/macintosh/windfarm_smu_sat.c > +++ b/drivers/macintosh/windfarm_smu_sat.c > @@ -316,7 +316,7 @@ static int wf_sat_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_sat_remove(struct i2c_client *client) > +static void wf_sat_remove(struct i2c_client *client) >  { >         struct wf_sat *sat = i2c_get_clientdata(client); >         struct wf_sat_sensor *sens; > @@ -330,8 +330,6 @@ static int wf_sat_remove(struct i2c_client > *client) >         } >         sat->i2c = NULL; >         kref_put(&sat->ref, wf_sat_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_sat_id[] = { > diff --git a/drivers/media/cec/i2c/ch7322.c > b/drivers/media/cec/i2c/ch7322.c > index 0814338c43e4..34fad7123704 100644 > --- a/drivers/media/cec/i2c/ch7322.c > +++ b/drivers/media/cec/i2c/ch7322.c > @@ -565,7 +565,7 @@ static int ch7322_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ch7322_remove(struct i2c_client *client) > +static void ch7322_remove(struct i2c_client *client) >  { >         struct ch7322 *ch7322 = i2c_get_clientdata(client); >   > @@ -578,8 +578,6 @@ static int ch7322_remove(struct i2c_client > *client) >         mutex_destroy(&ch7322->mutex); >   >         dev_info(&client->dev, "device unregistered\n"); > - > -       return 0; >  } >   >  static const struct of_device_id ch7322_of_match[] = { > diff --git a/drivers/media/dvb-frontends/a8293.c b/drivers/media/dvb- > frontends/a8293.c > index 57f52c004a23..ba38783b2b4f 100644 > --- a/drivers/media/dvb-frontends/a8293.c > +++ b/drivers/media/dvb-frontends/a8293.c > @@ -98,14 +98,13 @@ static int a8293_probe(struct i2c_client *client, >         return ret; >  } >   > -static int a8293_remove(struct i2c_client *client) > +static void a8293_remove(struct i2c_client *client) >  { >         struct a8293_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id a8293_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9013.c > b/drivers/media/dvb-frontends/af9013.c > index 7d7c341b2bd8..d85929582c3f 100644 > --- a/drivers/media/dvb-frontends/af9013.c > +++ b/drivers/media/dvb-frontends/af9013.c > @@ -1540,7 +1540,7 @@ static int af9013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9013_remove(struct i2c_client *client) > +static void af9013_remove(struct i2c_client *client) >  { >         struct af9013_state *state = i2c_get_clientdata(client); >   > @@ -1551,8 +1551,6 @@ static int af9013_remove(struct i2c_client > *client) >         regmap_exit(state->regmap); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9013_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9033.c > b/drivers/media/dvb-frontends/af9033.c > index 785c49b3d307..808da7a9ffe7 100644 > --- a/drivers/media/dvb-frontends/af9033.c > +++ b/drivers/media/dvb-frontends/af9033.c > @@ -1163,7 +1163,7 @@ static int af9033_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9033_remove(struct i2c_client *client) > +static void af9033_remove(struct i2c_client *client) >  { >         struct af9033_dev *dev = i2c_get_clientdata(client); >   > @@ -1171,8 +1171,6 @@ static int af9033_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9033_id_table[] = { > diff --git a/drivers/media/dvb-frontends/au8522_decoder.c > b/drivers/media/dvb-frontends/au8522_decoder.c > index 8cdca051e51b..e4f99bd468cb 100644 > --- a/drivers/media/dvb-frontends/au8522_decoder.c > +++ b/drivers/media/dvb-frontends/au8522_decoder.c > @@ -758,13 +758,12 @@ static int au8522_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int au8522_remove(struct i2c_client *client) > +static void au8522_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         au8522_release_state(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id au8522_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2099.c > b/drivers/media/dvb-frontends/cxd2099.c > index 1c8207ab8988..fbc666fa04ec 100644 > --- a/drivers/media/dvb-frontends/cxd2099.c > +++ b/drivers/media/dvb-frontends/cxd2099.c > @@ -664,14 +664,12 @@ static int cxd2099_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2099_remove(struct i2c_client *client) > +static void cxd2099_remove(struct i2c_client *client) >  { >         struct cxd *ci = i2c_get_clientdata(client); >   >         regmap_exit(ci->regmap); >         kfree(ci); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2099_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c > b/drivers/media/dvb-frontends/cxd2820r_core.c > index b1618339eec0..5d98222f9df0 100644 > --- a/drivers/media/dvb-frontends/cxd2820r_core.c > +++ b/drivers/media/dvb-frontends/cxd2820r_core.c > @@ -705,7 +705,7 @@ static int cxd2820r_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2820r_remove(struct i2c_client *client) > +static void cxd2820r_remove(struct i2c_client *client) >  { >         struct cxd2820r_priv *priv = i2c_get_clientdata(client); >   > @@ -721,8 +721,6 @@ static int cxd2820r_remove(struct i2c_client > *client) >         regmap_exit(priv->regmap[0]); >   >         kfree(priv); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2820r_id_table[] = { > diff --git a/drivers/media/dvb-frontends/dvb-pll.c > b/drivers/media/dvb-frontends/dvb-pll.c > index d45b4ddc8f91..baf2a378e565 100644 > --- a/drivers/media/dvb-frontends/dvb-pll.c > +++ b/drivers/media/dvb-frontends/dvb-pll.c > @@ -899,14 +899,13 @@ dvb_pll_probe(struct i2c_client *client, const > struct i2c_device_id *id) >         return 0; >  } >   > -static int dvb_pll_remove(struct i2c_client *client) > +static void dvb_pll_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe = i2c_get_clientdata(client); >         struct dvb_pll_priv *priv = fe->tuner_priv; >   >         ida_simple_remove(&pll_ida, priv->nr); >         dvb_pll_release(fe); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/lgdt3306a.c > b/drivers/media/dvb-frontends/lgdt3306a.c > index 136b76cb4807..424311afb2bf 100644 > --- a/drivers/media/dvb-frontends/lgdt3306a.c > +++ b/drivers/media/dvb-frontends/lgdt3306a.c > @@ -2226,7 +2226,7 @@ static int lgdt3306a_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lgdt3306a_remove(struct i2c_client *client) > +static void lgdt3306a_remove(struct i2c_client *client) >  { >         struct lgdt3306a_state *state = i2c_get_clientdata(client); >   > @@ -2237,8 +2237,6 @@ static int lgdt3306a_remove(struct i2c_client > *client) >   >         kfree(state->cfg); >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt3306a_id_table[] = { > diff --git a/drivers/media/dvb-frontends/lgdt330x.c > b/drivers/media/dvb-frontends/lgdt330x.c > index da3a8c5e18d8..ea9ae22fd201 100644 > --- a/drivers/media/dvb-frontends/lgdt330x.c > +++ b/drivers/media/dvb-frontends/lgdt330x.c > @@ -974,15 +974,13 @@ static const struct dvb_frontend_ops > lgdt3303_ops = { >         .release              = lgdt330x_release, >  }; >   > -static int lgdt330x_remove(struct i2c_client *client) > +static void lgdt330x_remove(struct i2c_client *client) >  { >         struct lgdt330x_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt330x_id_table[] = { > diff --git a/drivers/media/dvb-frontends/m88ds3103.c > b/drivers/media/dvb-frontends/m88ds3103.c > index bce0f42f3d19..4e844b2ef597 100644 > --- a/drivers/media/dvb-frontends/m88ds3103.c > +++ b/drivers/media/dvb-frontends/m88ds3103.c > @@ -1914,7 +1914,7 @@ static int m88ds3103_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88ds3103_remove(struct i2c_client *client) > +static void m88ds3103_remove(struct i2c_client *client) >  { >         struct m88ds3103_dev *dev = i2c_get_clientdata(client); >   > @@ -1926,7 +1926,6 @@ static int m88ds3103_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id m88ds3103_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88443x.c > b/drivers/media/dvb-frontends/mn88443x.c > index fff212c0bf3b..452571b380b7 100644 > --- a/drivers/media/dvb-frontends/mn88443x.c > +++ b/drivers/media/dvb-frontends/mn88443x.c > @@ -762,15 +762,13 @@ static int mn88443x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88443x_remove(struct i2c_client *client) > +static void mn88443x_remove(struct i2c_client *client) >  { >         struct mn88443x_priv *chip = i2c_get_clientdata(client); >   >         mn88443x_cmn_power_off(chip); >   >         i2c_unregister_device(chip->client_t); > - > -       return 0; >  } >   >  static const struct mn88443x_spec mn88443x_spec_pri = { > diff --git a/drivers/media/dvb-frontends/mn88472.c > b/drivers/media/dvb-frontends/mn88472.c > index 73922fc8f39c..2b01cc678f7e 100644 > --- a/drivers/media/dvb-frontends/mn88472.c > +++ b/drivers/media/dvb-frontends/mn88472.c > @@ -691,7 +691,7 @@ static int mn88472_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88472_remove(struct i2c_client *client) > +static void mn88472_remove(struct i2c_client *client) >  { >         struct mn88472_dev *dev = i2c_get_clientdata(client); >   > @@ -706,8 +706,6 @@ static int mn88472_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88472_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88473.c > b/drivers/media/dvb-frontends/mn88473.c > index 4838969ef735..f0ecf5910c02 100644 > --- a/drivers/media/dvb-frontends/mn88473.c > +++ b/drivers/media/dvb-frontends/mn88473.c > @@ -726,7 +726,7 @@ static int mn88473_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88473_remove(struct i2c_client *client) > +static void mn88473_remove(struct i2c_client *client) >  { >         struct mn88473_dev *dev = i2c_get_clientdata(client); >   > @@ -741,8 +741,6 @@ static int mn88473_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88473_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mxl692.c > b/drivers/media/dvb-frontends/mxl692.c > index dd7954e8f553..129630cbffff 100644 > --- a/drivers/media/dvb-frontends/mxl692.c > +++ b/drivers/media/dvb-frontends/mxl692.c > @@ -1337,15 +1337,13 @@ static int mxl692_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int mxl692_remove(struct i2c_client *client) > +static void mxl692_remove(struct i2c_client *client) >  { >         struct mxl692_dev *dev = i2c_get_clientdata(client); >   >         dev->fe.demodulator_priv = NULL; >         i2c_set_clientdata(client, NULL); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mxl692_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2830.c > b/drivers/media/dvb-frontends/rtl2830.c > index e6b8367c8cce..e0fbf41316ae 100644 > --- a/drivers/media/dvb-frontends/rtl2830.c > +++ b/drivers/media/dvb-frontends/rtl2830.c > @@ -865,7 +865,7 @@ static int rtl2830_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2830_remove(struct i2c_client *client) > +static void rtl2830_remove(struct i2c_client *client) >  { >         struct rtl2830_dev *dev = i2c_get_clientdata(client); >   > @@ -874,8 +874,6 @@ static int rtl2830_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2830_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2832.c > b/drivers/media/dvb-frontends/rtl2832.c > index dcbeb9f5e12a..4fa884eda5d5 100644 > --- a/drivers/media/dvb-frontends/rtl2832.c > +++ b/drivers/media/dvb-frontends/rtl2832.c > @@ -1110,7 +1110,7 @@ static int rtl2832_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2832_remove(struct i2c_client *client) > +static void rtl2832_remove(struct i2c_client *client) >  { >         struct rtl2832_dev *dev = i2c_get_clientdata(client); >   > @@ -1123,8 +1123,6 @@ static int rtl2832_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2832_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2165.c > b/drivers/media/dvb-frontends/si2165.c > index ebee230afb7b..86b0d59169dd 100644 > --- a/drivers/media/dvb-frontends/si2165.c > +++ b/drivers/media/dvb-frontends/si2165.c > @@ -1274,14 +1274,13 @@ static int si2165_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2165_remove(struct i2c_client *client) > +static void si2165_remove(struct i2c_client *client) >  { >         struct si2165_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id si2165_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2168.c > b/drivers/media/dvb-frontends/si2168.c > index 196e028a6617..8157df4570d1 100644 > --- a/drivers/media/dvb-frontends/si2168.c > +++ b/drivers/media/dvb-frontends/si2168.c > @@ -774,7 +774,7 @@ static int si2168_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2168_remove(struct i2c_client *client) > +static void si2168_remove(struct i2c_client *client) >  { >         struct si2168_dev *dev = i2c_get_clientdata(client); >   > @@ -786,8 +786,6 @@ static int si2168_remove(struct i2c_client > *client) >         dev->fe.demodulator_priv = NULL; >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id si2168_id_table[] = { > diff --git a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb- > frontends/sp2.c > index 992f22167fbe..27e7037e130e 100644 > --- a/drivers/media/dvb-frontends/sp2.c > +++ b/drivers/media/dvb-frontends/sp2.c > @@ -398,14 +398,13 @@ static int sp2_probe(struct i2c_client *client, >         return ret; >  } >   > -static int sp2_remove(struct i2c_client *client) > +static void sp2_remove(struct i2c_client *client) >  { >         struct sp2 *s = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >         sp2_exit(client); >         kfree(s); > -       return 0; >  } >   >  static const struct i2c_device_id sp2_id[] = { > diff --git a/drivers/media/dvb-frontends/stv090x.c > b/drivers/media/dvb-frontends/stv090x.c > index 90d24131d335..0a600c1d7d1b 100644 > --- a/drivers/media/dvb-frontends/stv090x.c > +++ b/drivers/media/dvb-frontends/stv090x.c > @@ -5032,12 +5032,11 @@ static int stv090x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stv090x_remove(struct i2c_client *client) > +static void stv090x_remove(struct i2c_client *client) >  { >         struct stv090x_state *state = i2c_get_clientdata(client); >   >         stv090x_release(&state->frontend); > -       return 0; >  } >   >  struct dvb_frontend *stv090x_attach(struct stv090x_config *config, > diff --git a/drivers/media/dvb-frontends/stv6110x.c > b/drivers/media/dvb-frontends/stv6110x.c > index 5012d0231652..fbc4dbd62151 100644 > --- a/drivers/media/dvb-frontends/stv6110x.c > +++ b/drivers/media/dvb-frontends/stv6110x.c > @@ -436,12 +436,11 @@ static int stv6110x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stv6110x_remove(struct i2c_client *client) > +static void stv6110x_remove(struct i2c_client *client) >  { >         struct stv6110x_state *stv6110x = i2c_get_clientdata(client); >   >         stv6110x_release(stv6110x->frontend); > -       return 0; >  } >   >  const struct stv6110x_devctl *stv6110x_attach(struct dvb_frontend > *fe, > diff --git a/drivers/media/dvb-frontends/tc90522.c > b/drivers/media/dvb-frontends/tc90522.c > index e83836b29715..c22d2a2b2a45 100644 > --- a/drivers/media/dvb-frontends/tc90522.c > +++ b/drivers/media/dvb-frontends/tc90522.c > @@ -819,14 +819,13 @@ static int tc90522_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tc90522_remove(struct i2c_client *client) > +static void tc90522_remove(struct i2c_client *client) >  { >         struct tc90522_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         i2c_del_adapter(&state->tuner_i2c); >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/tda10071.c > b/drivers/media/dvb-frontends/tda10071.c > index 685c0ac71819..d1098ef20a8b 100644 > --- a/drivers/media/dvb-frontends/tda10071.c > +++ b/drivers/media/dvb-frontends/tda10071.c > @@ -1221,14 +1221,13 @@ static int tda10071_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda10071_remove(struct i2c_client *client) > +static void tda10071_remove(struct i2c_client *client) >  { >         struct tda10071_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tda10071_id_table[] = { > diff --git a/drivers/media/dvb-frontends/ts2020.c > b/drivers/media/dvb-frontends/ts2020.c > index 3e383912bcfd..02338256b974 100644 > --- a/drivers/media/dvb-frontends/ts2020.c > +++ b/drivers/media/dvb-frontends/ts2020.c > @@ -696,7 +696,7 @@ static int ts2020_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ts2020_remove(struct i2c_client *client) > +static void ts2020_remove(struct i2c_client *client) >  { >         struct ts2020_priv *dev = i2c_get_clientdata(client); >   > @@ -708,7 +708,6 @@ static int ts2020_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id ts2020_id_table[] = { > diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c > index 2958a4694461..516de278cc49 100644 > --- a/drivers/media/i2c/ad5820.c > +++ b/drivers/media/i2c/ad5820.c > @@ -342,7 +342,7 @@ static int ad5820_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad5820_remove(struct i2c_client *client) > +static void ad5820_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ad5820_device *coil = to_ad5820_device(subdev); > @@ -351,7 +351,6 @@ static int ad5820_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&coil->ctrls); >         media_entity_cleanup(&coil->subdev.entity); >         mutex_destroy(&coil->power_lock); > -       return 0; >  } >   >  static const struct i2c_device_id ad5820_id_table[] = { > diff --git a/drivers/media/i2c/ad9389b.c > b/drivers/media/i2c/ad9389b.c > index 8679a44e6413..4a255a492918 100644 > --- a/drivers/media/i2c/ad9389b.c > +++ b/drivers/media/i2c/ad9389b.c > @@ -1174,7 +1174,7 @@ static int ad9389b_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int ad9389b_remove(struct i2c_client *client) > +static void ad9389b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ad9389b_state *state = get_ad9389b_state(sd); > @@ -1192,7 +1192,6 @@ static int ad9389b_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adp1653.c > b/drivers/media/i2c/adp1653.c > index 522a0b10e415..1f353157df07 100644 > --- a/drivers/media/i2c/adp1653.c > +++ b/drivers/media/i2c/adp1653.c > @@ -510,7 +510,7 @@ static int adp1653_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp1653_remove(struct i2c_client *client) > +static void adp1653_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct adp1653_flash *flash = to_adp1653_flash(subdev); > @@ -518,8 +518,6 @@ static int adp1653_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&flash->subdev); >         v4l2_ctrl_handler_free(&flash->ctrls); >         media_entity_cleanup(&flash->subdev.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp1653_id_table[] = { > diff --git a/drivers/media/i2c/adv7170.c > b/drivers/media/i2c/adv7170.c > index 714e31f993e1..61a2f87d3c62 100644 > --- a/drivers/media/i2c/adv7170.c > +++ b/drivers/media/i2c/adv7170.c > @@ -368,12 +368,11 @@ static int adv7170_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7170_remove(struct i2c_client *client) > +static void adv7170_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7175.c > b/drivers/media/i2c/adv7175.c > index 1813f67f0fe1..b58689728243 100644 > --- a/drivers/media/i2c/adv7175.c > +++ b/drivers/media/i2c/adv7175.c > @@ -423,12 +423,11 @@ static int adv7175_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7175_remove(struct i2c_client *client) > +static void adv7175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7180.c > b/drivers/media/i2c/adv7180.c > index e3a57c178c6b..f85e5bf228f1 100644 > --- a/drivers/media/i2c/adv7180.c > +++ b/drivers/media/i2c/adv7180.c > @@ -1511,7 +1511,7 @@ static int adv7180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adv7180_remove(struct i2c_client *client) > +static void adv7180_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7180_state *state = to_state(sd); > @@ -1531,8 +1531,6 @@ static int adv7180_remove(struct i2c_client > *client) >         adv7180_set_power_pin(state, false); >   >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7180_id[] = { > diff --git a/drivers/media/i2c/adv7183.c > b/drivers/media/i2c/adv7183.c > index ba746a19fd39..313c706e8335 100644 > --- a/drivers/media/i2c/adv7183.c > +++ b/drivers/media/i2c/adv7183.c > @@ -613,13 +613,12 @@ static int adv7183_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7183_remove(struct i2c_client *client) > +static void adv7183_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id adv7183_id[] = { > diff --git a/drivers/media/i2c/adv7343.c > b/drivers/media/i2c/adv7343.c > index 63e94dfcb5d3..7e84869d2434 100644 > --- a/drivers/media/i2c/adv7343.c > +++ b/drivers/media/i2c/adv7343.c > @@ -492,15 +492,13 @@ static int adv7343_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adv7343_remove(struct i2c_client *client) > +static void adv7343_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7343_state *state = to_state(sd); >   >         v4l2_async_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7343_id[] = { > diff --git a/drivers/media/i2c/adv7393.c > b/drivers/media/i2c/adv7393.c > index b6234c8231c9..fb5fefa83b18 100644 > --- a/drivers/media/i2c/adv7393.c > +++ b/drivers/media/i2c/adv7393.c > @@ -437,15 +437,13 @@ static int adv7393_probe(struct i2c_client > *client, >         return err; >  } >   > -static int adv7393_remove(struct i2c_client *client) > +static void adv7393_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7393_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7393_id[] = { > diff --git a/drivers/media/i2c/adv748x/adv748x-core.c > b/drivers/media/i2c/adv748x/adv748x-core.c > index 4e54148147b9..4498d78a2357 100644 > --- a/drivers/media/i2c/adv748x/adv748x-core.c > +++ b/drivers/media/i2c/adv748x/adv748x-core.c > @@ -815,7 +815,7 @@ static int adv748x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int adv748x_remove(struct i2c_client *client) > +static void adv748x_remove(struct i2c_client *client) >  { >         struct adv748x_state *state = i2c_get_clientdata(client); >   > @@ -828,8 +828,6 @@ static int adv748x_remove(struct i2c_client > *client) >         adv748x_unregister_clients(state); >         adv748x_dt_cleanup(state); >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id adv748x_of_table[] = { > diff --git a/drivers/media/i2c/adv7511-v4l2.c > b/drivers/media/i2c/adv7511-v4l2.c > index 202e0cd83f90..49aca579576a 100644 > --- a/drivers/media/i2c/adv7511-v4l2.c > +++ b/drivers/media/i2c/adv7511-v4l2.c > @@ -1923,7 +1923,7 @@ static int adv7511_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7511_remove(struct i2c_client *client) > +static void adv7511_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7511_state *state = get_adv7511_state(sd); > @@ -1943,7 +1943,6 @@ static int adv7511_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7604.c > b/drivers/media/i2c/adv7604.c > index bb0c8fc6d383..e63abf93ccac 100644 > --- a/drivers/media/i2c/adv7604.c > +++ b/drivers/media/i2c/adv7604.c > @@ -3661,7 +3661,7 @@ static int adv76xx_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv76xx_remove(struct i2c_client *client) > +static void adv76xx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv76xx_state *state = to_state(sd); > @@ -3678,7 +3678,6 @@ static int adv76xx_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv76xx_unregister_clients(to_state(sd)); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7842.c > b/drivers/media/i2c/adv7842.c > index 22caa070273b..a8dd92948df0 100644 > --- a/drivers/media/i2c/adv7842.c > +++ b/drivers/media/i2c/adv7842.c > @@ -3593,7 +3593,7 @@ static int adv7842_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7842_remove(struct i2c_client *client) > +static void adv7842_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7842_state *state = to_state(sd); > @@ -3604,7 +3604,6 @@ static int adv7842_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv7842_unregister_clients(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/ak7375.c b/drivers/media/i2c/ak7375.c > index 40b1a4aa846c..1af9f698eecf 100644 > --- a/drivers/media/i2c/ak7375.c > +++ b/drivers/media/i2c/ak7375.c > @@ -169,7 +169,7 @@ static int ak7375_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ak7375_remove(struct i2c_client *client) > +static void ak7375_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); > @@ -177,8 +177,6 @@ static int ak7375_remove(struct i2c_client > *client) >         ak7375_subdev_cleanup(ak7375_dev); >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/ak881x.c b/drivers/media/i2c/ak881x.c > index dc569d5a4d9d..0370ad6b6811 100644 > --- a/drivers/media/i2c/ak881x.c > +++ b/drivers/media/i2c/ak881x.c > @@ -297,13 +297,11 @@ static int ak881x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ak881x_remove(struct i2c_client *client) > +static void ak881x_remove(struct i2c_client *client) >  { >         struct ak881x *ak881x = to_ak881x(client); >   >         v4l2_device_unregister_subdev(&ak881x->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ak881x_id[] = { > diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c > index 73bc50c919d7..4d9bb6eb7d65 100644 > --- a/drivers/media/i2c/bt819.c > +++ b/drivers/media/i2c/bt819.c > @@ -446,14 +446,13 @@ static int bt819_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt819_remove(struct i2c_client *client) > +static void bt819_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct bt819 *decoder = to_bt819(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/bt856.c b/drivers/media/i2c/bt856.c > index c134fda270a1..70443ef1ac46 100644 > --- a/drivers/media/i2c/bt856.c > +++ b/drivers/media/i2c/bt856.c > @@ -223,12 +223,11 @@ static int bt856_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt856_remove(struct i2c_client *client) > +static void bt856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt856_id[] = { > diff --git a/drivers/media/i2c/bt866.c b/drivers/media/i2c/bt866.c > index 1a8df9f18ffb..c2508cbafd02 100644 > --- a/drivers/media/i2c/bt866.c > +++ b/drivers/media/i2c/bt866.c > @@ -190,12 +190,11 @@ static int bt866_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt866_remove(struct i2c_client *client) > +static void bt866_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt866_id[] = { > diff --git a/drivers/media/i2c/ccs/ccs-core.c > b/drivers/media/i2c/ccs/ccs-core.c > index 7609add2aff4..4a14d7e5d9f2 100644 > --- a/drivers/media/i2c/ccs/ccs-core.c > +++ b/drivers/media/i2c/ccs/ccs-core.c > @@ -3665,7 +3665,7 @@ static int ccs_probe(struct i2c_client *client) >         return rval; >  } >   > -static int ccs_remove(struct i2c_client *client) > +static void ccs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ccs_sensor *sensor = to_ccs_sensor(subdev); > @@ -3687,8 +3687,6 @@ static int ccs_remove(struct i2c_client > *client) >         kfree(sensor->ccs_limits); >         kvfree(sensor->sdata.backing); >         kvfree(sensor->mdata.backing); > - > -       return 0; >  } >   >  static const struct ccs_device smia_device = { > diff --git a/drivers/media/i2c/cs3308.c b/drivers/media/i2c/cs3308.c > index ebe55e261bff..d901a59883a9 100644 > --- a/drivers/media/i2c/cs3308.c > +++ b/drivers/media/i2c/cs3308.c > @@ -99,13 +99,12 @@ static int cs3308_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs3308_remove(struct i2c_client *client) > +static void cs3308_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs5345.c b/drivers/media/i2c/cs5345.c > index f6dd5edf77dd..591b1e7b24ee 100644 > --- a/drivers/media/i2c/cs5345.c > +++ b/drivers/media/i2c/cs5345.c > @@ -178,14 +178,13 @@ static int cs5345_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs5345_remove(struct i2c_client *client) > +static void cs5345_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs5345_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs53l32a.c > b/drivers/media/i2c/cs53l32a.c > index 9a411106cfb3..9461589aea30 100644 > --- a/drivers/media/i2c/cs53l32a.c > +++ b/drivers/media/i2c/cs53l32a.c > @@ -190,14 +190,13 @@ static int cs53l32a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cs53l32a_remove(struct i2c_client *client) > +static void cs53l32a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs53l32a_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cs53l32a_id[] = { > diff --git a/drivers/media/i2c/cx25840/cx25840-core.c > b/drivers/media/i2c/cx25840/cx25840-core.c > index dc31944c7d5b..f1a978af82ef 100644 > --- a/drivers/media/i2c/cx25840/cx25840-core.c > +++ b/drivers/media/i2c/cx25840/cx25840-core.c > @@ -6026,7 +6026,7 @@ static int cx25840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cx25840_remove(struct i2c_client *client) > +static void cx25840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cx25840_state *state = to_state(sd); > @@ -6034,7 +6034,6 @@ static int cx25840_remove(struct i2c_client > *client) >         cx25840_ir_remove(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cx25840_id[] = { > diff --git a/drivers/media/i2c/dw9714.c b/drivers/media/i2c/dw9714.c > index 206d74338b9c..af59687383aa 100644 > --- a/drivers/media/i2c/dw9714.c > +++ b/drivers/media/i2c/dw9714.c > @@ -190,7 +190,7 @@ static int dw9714_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9714_remove(struct i2c_client *client) > +static void dw9714_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9714_device *dw9714_dev = sd_to_dw9714_vcm(sd); > @@ -206,8 +206,6 @@ static int dw9714_remove(struct i2c_client > *client) >         } >         pm_runtime_set_suspended(&client->dev); >         dw9714_subdev_cleanup(dw9714_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c > index c086580efac7..0f47ef015a1d 100644 > --- a/drivers/media/i2c/dw9768.c > +++ b/drivers/media/i2c/dw9768.c > @@ -499,7 +499,7 @@ static int dw9768_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dw9768_remove(struct i2c_client *client) > +static void dw9768_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9768 *dw9768 = sd_to_dw9768(sd); > @@ -511,8 +511,6 @@ static int dw9768_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 dw9768_runtime_suspend(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id dw9768_of_table[] = { > diff --git a/drivers/media/i2c/dw9807-vcm.c > b/drivers/media/i2c/dw9807-vcm.c > index 01c372925a80..3599720db7e9 100644 > --- a/drivers/media/i2c/dw9807-vcm.c > +++ b/drivers/media/i2c/dw9807-vcm.c > @@ -216,7 +216,7 @@ static int dw9807_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9807_remove(struct i2c_client *client) > +static void dw9807_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); > @@ -224,8 +224,6 @@ static int dw9807_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >   >         dw9807_subdev_cleanup(dw9807_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/et8ek8/et8ek8_driver.c > b/drivers/media/i2c/et8ek8/et8ek8_driver.c > index 873d614339bb..ff9bb9fc97dd 100644 > --- a/drivers/media/i2c/et8ek8/et8ek8_driver.c > +++ b/drivers/media/i2c/et8ek8/et8ek8_driver.c > @@ -1460,7 +1460,7 @@ static int et8ek8_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int __exit et8ek8_remove(struct i2c_client *client) > +static void __exit et8ek8_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct et8ek8_sensor *sensor = to_et8ek8_sensor(subdev); > @@ -1477,8 +1477,6 @@ static int __exit et8ek8_remove(struct > i2c_client *client) >         v4l2_async_unregister_subdev(&sensor->subdev); >         media_entity_cleanup(&sensor->subdev.entity); >         mutex_destroy(&sensor->power_lock); > - > -       return 0; >  } >   >  static const struct of_device_id et8ek8_of_table[] = { > diff --git a/drivers/media/i2c/hi556.c b/drivers/media/i2c/hi556.c > index 055d1aa8410e..e422ac7609b5 100644 > --- a/drivers/media/i2c/hi556.c > +++ b/drivers/media/i2c/hi556.c > @@ -1101,7 +1101,7 @@ static int hi556_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi556_remove(struct i2c_client *client) > +static void hi556_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi556 *hi556 = to_hi556(sd); > @@ -1111,8 +1111,6 @@ static int hi556_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi556->mutex); > - > -       return 0; >  } >   >  static int hi556_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c > index ad35c3ff3611..c5b69823f257 100644 > --- a/drivers/media/i2c/hi846.c > +++ b/drivers/media/i2c/hi846.c > @@ -2143,7 +2143,7 @@ static int hi846_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int hi846_remove(struct i2c_client *client) > +static void hi846_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi846 *hi846 = to_hi846(sd); > @@ -2158,8 +2158,6 @@ static int hi846_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&hi846->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops hi846_pm_ops = { > diff --git a/drivers/media/i2c/hi847.c b/drivers/media/i2c/hi847.c > index 7e85349e1852..5a82b15a9513 100644 > --- a/drivers/media/i2c/hi847.c > +++ b/drivers/media/i2c/hi847.c > @@ -2903,7 +2903,7 @@ static int hi847_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi847_remove(struct i2c_client *client) > +static void hi847_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi847 *hi847 = to_hi847(sd); > @@ -2913,8 +2913,6 @@ static int hi847_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi847->mutex); > - > -       return 0; >  } >   >  static int hi847_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/imx208.c b/drivers/media/i2c/imx208.c > index b9516b2f1c15..a0e17bb9d4ca 100644 > --- a/drivers/media/i2c/imx208.c > +++ b/drivers/media/i2c/imx208.c > @@ -1061,7 +1061,7 @@ static int imx208_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx208_remove(struct i2c_client *client) > +static void imx208_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx208 *imx208 = to_imx208(sd); > @@ -1075,8 +1075,6 @@ static int imx208_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx208->imx208_mx); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx208_pm_ops = { > diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c > index 83c1737abeec..710c9fb515fd 100644 > --- a/drivers/media/i2c/imx214.c > +++ b/drivers/media/i2c/imx214.c > @@ -1080,7 +1080,7 @@ static int imx214_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx214_remove(struct i2c_client *client) > +static void imx214_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx214 *imx214 = to_imx214(sd); > @@ -1093,8 +1093,6 @@ static int imx214_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx214->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id imx214_of_match[] = { > diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c > index e10af3f74b38..77bd79a5954e 100644 > --- a/drivers/media/i2c/imx219.c > +++ b/drivers/media/i2c/imx219.c > @@ -1562,7 +1562,7 @@ static int imx219_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx219_remove(struct i2c_client *client) > +static void imx219_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx219 *imx219 = to_imx219(sd); > @@ -1575,8 +1575,6 @@ static int imx219_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx219_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx219_dt_ids[] = { > diff --git a/drivers/media/i2c/imx258.c b/drivers/media/i2c/imx258.c > index c249507aa2db..eab5fc1ee2f7 100644 > --- a/drivers/media/i2c/imx258.c > +++ b/drivers/media/i2c/imx258.c > @@ -1338,7 +1338,7 @@ static int imx258_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx258_remove(struct i2c_client *client) > +static void imx258_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx258 *imx258 = to_imx258(sd); > @@ -1351,8 +1351,6 @@ static int imx258_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx258_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx258_pm_ops = { > diff --git a/drivers/media/i2c/imx274.c b/drivers/media/i2c/imx274.c > index 7de1f2948e53..a00761b1e18c 100644 > --- a/drivers/media/i2c/imx274.c > +++ b/drivers/media/i2c/imx274.c > @@ -2142,7 +2142,7 @@ static int imx274_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx274_remove(struct i2c_client *client) > +static void imx274_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct stimx274 *imx274 = to_imx274(sd); > @@ -2157,7 +2157,6 @@ static int imx274_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&imx274->lock); > -       return 0; >  } >   >  static const struct dev_pm_ops imx274_pm_ops = { > diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c > index 99f2a50d39a4..1ce64dcdf7f0 100644 > --- a/drivers/media/i2c/imx290.c > +++ b/drivers/media/i2c/imx290.c > @@ -1119,7 +1119,7 @@ static int imx290_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx290_remove(struct i2c_client *client) > +static void imx290_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx290 *imx290 = to_imx290(sd); > @@ -1134,8 +1134,6 @@ static int imx290_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(imx290->dev)) >                 imx290_power_off(imx290->dev); >         pm_runtime_set_suspended(imx290->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx290_of_match[] = { > diff --git a/drivers/media/i2c/imx319.c b/drivers/media/i2c/imx319.c > index a2b5a34de76b..245a18fb40ad 100644 > --- a/drivers/media/i2c/imx319.c > +++ b/drivers/media/i2c/imx319.c > @@ -2523,7 +2523,7 @@ static int imx319_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx319_remove(struct i2c_client *client) > +static void imx319_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx319 *imx319 = to_imx319(sd); > @@ -2536,8 +2536,6 @@ static int imx319_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx319->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx319_pm_ops = { > diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c > index 062125501788..7b0a9086447d 100644 > --- a/drivers/media/i2c/imx334.c > +++ b/drivers/media/i2c/imx334.c > @@ -1089,7 +1089,7 @@ static int imx334_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx334_remove(struct i2c_client *client) > +static void imx334_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx334 *imx334 = to_imx334(sd); > @@ -1102,8 +1102,6 @@ static int imx334_remove(struct i2c_client > *client) >         pm_runtime_suspended(&client->dev); >   >         mutex_destroy(&imx334->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx334_pm_ops = { > diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c > index 410d6b86feb5..078ede2b7a00 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -1083,7 +1083,7 @@ static int imx335_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx335_remove(struct i2c_client *client) > +static void imx335_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx335 *imx335 = to_imx335(sd); > @@ -1098,8 +1098,6 @@ static int imx335_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx335->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx335_pm_ops = { > diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c > index 3922b9305978..b46178681c05 100644 > --- a/drivers/media/i2c/imx355.c > +++ b/drivers/media/i2c/imx355.c > @@ -1810,7 +1810,7 @@ static int imx355_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx355_remove(struct i2c_client *client) > +static void imx355_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx355 *imx355 = to_imx355(sd); > @@ -1823,8 +1823,6 @@ static int imx355_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx355->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx355_pm_ops = { > diff --git a/drivers/media/i2c/imx412.c b/drivers/media/i2c/imx412.c > index a1394d6c1432..7f6d29e0e7c4 100644 > --- a/drivers/media/i2c/imx412.c > +++ b/drivers/media/i2c/imx412.c > @@ -1257,7 +1257,7 @@ static int imx412_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx412_remove(struct i2c_client *client) > +static void imx412_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx412 *imx412 = to_imx412(sd); > @@ -1272,8 +1272,6 @@ static int imx412_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx412->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx412_pm_ops = { > diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir- > kbd-i2c.c > index 56674173524f..ee6bbbb977f7 100644 > --- a/drivers/media/i2c/ir-kbd-i2c.c > +++ b/drivers/media/i2c/ir-kbd-i2c.c > @@ -915,7 +915,7 @@ static int ir_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return err; >  } >   > -static int ir_remove(struct i2c_client *client) > +static void ir_remove(struct i2c_client *client) >  { >         struct IR_i2c *ir = i2c_get_clientdata(client); >   > @@ -924,8 +924,6 @@ static int ir_remove(struct i2c_client *client) >         i2c_unregister_device(ir->tx_c); >   >         rc_unregister_device(ir->rc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ir_kbd_id[] = { > diff --git a/drivers/media/i2c/isl7998x.c > b/drivers/media/i2c/isl7998x.c > index dc3068549dfa..246d8d182a8e 100644 > --- a/drivers/media/i2c/isl7998x.c > +++ b/drivers/media/i2c/isl7998x.c > @@ -1544,7 +1544,7 @@ static int isl7998x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int isl7998x_remove(struct i2c_client *client) > +static void isl7998x_remove(struct i2c_client *client) >  { >         struct isl7998x *isl7998x = i2c_to_isl7998x(client); >   > @@ -1552,8 +1552,6 @@ static int isl7998x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&isl7998x->subdev); >         isl7998x_remove_controls(isl7998x); >         media_entity_cleanup(&isl7998x->subdev.entity); > - > -       return 0; >  } >   >  static const struct of_device_id isl7998x_of_match[] = { > diff --git a/drivers/media/i2c/ks0127.c b/drivers/media/i2c/ks0127.c > index c077f53b9c30..215d9a43b0b9 100644 > --- a/drivers/media/i2c/ks0127.c > +++ b/drivers/media/i2c/ks0127.c > @@ -675,14 +675,13 @@ static int ks0127_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return 0; >  } >   > -static int ks0127_remove(struct i2c_client *client) > +static void ks0127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         ks0127_write(sd, KS_OFMTA, 0x20); /* tristate */ >         ks0127_write(sd, KS_CMDA, 0x2c | 0x80); /* power down */ > -       return 0; >  } >   >  static const struct i2c_device_id ks0127_id[] = { > diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c > index 9e34ccce4fc3..edad3138cb07 100644 > --- a/drivers/media/i2c/lm3560.c > +++ b/drivers/media/i2c/lm3560.c > @@ -443,7 +443,7 @@ static int lm3560_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3560_remove(struct i2c_client *client) > +static void lm3560_remove(struct i2c_client *client) >  { >         struct lm3560_flash *flash = i2c_get_clientdata(client); >         unsigned int i; > @@ -453,8 +453,6 @@ static int lm3560_remove(struct i2c_client > *client) >                 v4l2_ctrl_handler_free(&flash->ctrls_led[i]); >                 media_entity_cleanup(&flash->subdev_led[i].entity); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3560_id_table[] = { > diff --git a/drivers/media/i2c/lm3646.c b/drivers/media/i2c/lm3646.c > index c76ccf67a909..0aaa963917d8 100644 > --- a/drivers/media/i2c/lm3646.c > +++ b/drivers/media/i2c/lm3646.c > @@ -377,15 +377,13 @@ static int lm3646_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3646_remove(struct i2c_client *client) > +static void lm3646_remove(struct i2c_client *client) >  { >         struct lm3646_flash *flash = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(&flash->subdev_led); >         v4l2_ctrl_handler_free(&flash->ctrls_led); >         media_entity_cleanup(&flash->subdev_led.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3646_id_table[] = { > diff --git a/drivers/media/i2c/m52790.c b/drivers/media/i2c/m52790.c > index 0a1efc1417bc..2ab91b993c33 100644 > --- a/drivers/media/i2c/m52790.c > +++ b/drivers/media/i2c/m52790.c > @@ -154,12 +154,11 @@ static int m52790_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m52790_remove(struct i2c_client *client) > +static void m52790_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/m5mols/m5mols_core.c > b/drivers/media/i2c/m5mols/m5mols_core.c > index c19590389bfe..2201d2a26353 100644 > --- a/drivers/media/i2c/m5mols/m5mols_core.c > +++ b/drivers/media/i2c/m5mols/m5mols_core.c > @@ -1020,15 +1020,13 @@ static int m5mols_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m5mols_remove(struct i2c_client *client) > +static void m5mols_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id m5mols_id[] = { > diff --git a/drivers/media/i2c/max2175.c > b/drivers/media/i2c/max2175.c > index 0eea200124d2..1019020f3a37 100644 > --- a/drivers/media/i2c/max2175.c > +++ b/drivers/media/i2c/max2175.c > @@ -1403,15 +1403,13 @@ static int max2175_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max2175_remove(struct i2c_client *client) > +static void max2175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct max2175 *ctx = max2175_from_sd(sd); >   >         v4l2_ctrl_handler_free(&ctx->ctrl_hdl); >         v4l2_async_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id max2175_id[] = { > diff --git a/drivers/media/i2c/max9286.c > b/drivers/media/i2c/max9286.c > index 3684faa72253..9c083cf14231 100644 > --- a/drivers/media/i2c/max9286.c > +++ b/drivers/media/i2c/max9286.c > @@ -1378,7 +1378,7 @@ static int max9286_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max9286_remove(struct i2c_client *client) > +static void max9286_remove(struct i2c_client *client) >  { >         struct max9286_priv *priv = > sd_to_max9286(i2c_get_clientdata(client)); >   > @@ -1391,8 +1391,6 @@ static int max9286_remove(struct i2c_client > *client) >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); >   >         max9286_cleanup_dt(priv); > - > -       return 0; >  } >   >  static const struct of_device_id max9286_dt_ids[] = { > diff --git a/drivers/media/i2c/ml86v7667.c > b/drivers/media/i2c/ml86v7667.c > index 48cc0b0922f4..49ec59b0ca43 100644 > --- a/drivers/media/i2c/ml86v7667.c > +++ b/drivers/media/i2c/ml86v7667.c > @@ -415,15 +415,13 @@ static int ml86v7667_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ml86v7667_remove(struct i2c_client *client) > +static void ml86v7667_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ml86v7667_priv *priv = to_ml86v7667(sd); >   >         v4l2_ctrl_handler_free(&priv->hdl); >         v4l2_device_unregister_subdev(&priv->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ml86v7667_id[] = { > diff --git a/drivers/media/i2c/msp3400-driver.c > b/drivers/media/i2c/msp3400-driver.c > index 39530d43590e..4ce7a15a9884 100644 > --- a/drivers/media/i2c/msp3400-driver.c > +++ b/drivers/media/i2c/msp3400-driver.c > @@ -859,7 +859,7 @@ static int msp_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int msp_remove(struct i2c_client *client) > +static void msp_remove(struct i2c_client *client) >  { >         struct msp_state *state = > to_state(i2c_get_clientdata(client)); >   > @@ -872,7 +872,6 @@ static int msp_remove(struct i2c_client *client) >         msp_reset(client); >   >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9m001.c > b/drivers/media/i2c/mt9m001.c > index ad13b0c890c0..ebf9cf1e1bce 100644 > --- a/drivers/media/i2c/mt9m001.c > +++ b/drivers/media/i2c/mt9m001.c > @@ -833,7 +833,7 @@ static int mt9m001_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m001_remove(struct i2c_client *client) > +static void mt9m001_remove(struct i2c_client *client) >  { >         struct mt9m001 *mt9m001 = to_mt9m001(client); >   > @@ -853,8 +853,6 @@ static int mt9m001_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&mt9m001->hdl); >         mutex_destroy(&mt9m001->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9m001_id[] = { > diff --git a/drivers/media/i2c/mt9m032.c > b/drivers/media/i2c/mt9m032.c > index ba0c0ea91c95..76b8c9c08c82 100644 > --- a/drivers/media/i2c/mt9m032.c > +++ b/drivers/media/i2c/mt9m032.c > @@ -858,7 +858,7 @@ static int mt9m032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9m032_remove(struct i2c_client *client) > +static void mt9m032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9m032 *sensor = to_mt9m032(subdev); > @@ -867,7 +867,6 @@ static int mt9m032_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&sensor->lock); > -       return 0; >  } >   >  static const struct i2c_device_id mt9m032_id_table[] = { > diff --git a/drivers/media/i2c/mt9m111.c > b/drivers/media/i2c/mt9m111.c > index afc86efa9e3e..f5fe272d1205 100644 > --- a/drivers/media/i2c/mt9m111.c > +++ b/drivers/media/i2c/mt9m111.c > @@ -1359,15 +1359,13 @@ static int mt9m111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m111_remove(struct i2c_client *client) > +static void mt9m111_remove(struct i2c_client *client) >  { >         struct mt9m111 *mt9m111 = to_mt9m111(client); >   >         v4l2_async_unregister_subdev(&mt9m111->subdev); >         media_entity_cleanup(&mt9m111->subdev.entity); >         v4l2_ctrl_handler_free(&mt9m111->hdl); > - > -       return 0; >  } >  static const struct of_device_id mt9m111_of_match[] = { >         { .compatible = "micron,mt9m111", }, > diff --git a/drivers/media/i2c/mt9p031.c > b/drivers/media/i2c/mt9p031.c > index cbce8b88dbcf..00da584a47b7 100644 > --- a/drivers/media/i2c/mt9p031.c > +++ b/drivers/media/i2c/mt9p031.c > @@ -1200,7 +1200,7 @@ static int mt9p031_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9p031_remove(struct i2c_client *client) > +static void mt9p031_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9p031 *mt9p031 = to_mt9p031(subdev); > @@ -1209,8 +1209,6 @@ static int mt9p031_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&mt9p031->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9p031_id[] = { > diff --git a/drivers/media/i2c/mt9t001.c > b/drivers/media/i2c/mt9t001.c > index b651ee4a26e8..d5abe4a7ef07 100644 > --- a/drivers/media/i2c/mt9t001.c > +++ b/drivers/media/i2c/mt9t001.c > @@ -961,7 +961,7 @@ static int mt9t001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9t001_remove(struct i2c_client *client) > +static void mt9t001_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9t001 *mt9t001 = to_mt9t001(subdev); > @@ -969,7 +969,6 @@ static int mt9t001_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&mt9t001->ctrls); >         v4l2_device_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); > -       return 0; >  } >   >  static const struct i2c_device_id mt9t001_id[] = { > diff --git a/drivers/media/i2c/mt9t112.c > b/drivers/media/i2c/mt9t112.c > index 8d2e3caa9b28..ad564095d0cf 100644 > --- a/drivers/media/i2c/mt9t112.c > +++ b/drivers/media/i2c/mt9t112.c > @@ -1102,14 +1102,12 @@ static int mt9t112_probe(struct i2c_client > *client, >         return v4l2_async_register_subdev(&priv->subdev); >  } >   > -static int mt9t112_remove(struct i2c_client *client) > +static void mt9t112_remove(struct i2c_client *client) >  { >         struct mt9t112_priv *priv = to_mt9t112(client); >   >         clk_disable_unprepare(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9t112_id[] = { > diff --git a/drivers/media/i2c/mt9v011.c > b/drivers/media/i2c/mt9v011.c > index 7699e64e1127..9952ce06ebb2 100644 > --- a/drivers/media/i2c/mt9v011.c > +++ b/drivers/media/i2c/mt9v011.c > @@ -561,7 +561,7 @@ static int mt9v011_probe(struct i2c_client *c, >         return 0; >  } >   > -static int mt9v011_remove(struct i2c_client *c) > +static void mt9v011_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct mt9v011 *core = to_mt9v011(sd); > @@ -572,8 +572,6 @@ static int mt9v011_remove(struct i2c_client *c) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&core->ctrls); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9v032.c > b/drivers/media/i2c/mt9v032.c > index 4cfdd3dfbd42..bc4388ccc2a8 100644 > --- a/drivers/media/i2c/mt9v032.c > +++ b/drivers/media/i2c/mt9v032.c > @@ -1192,7 +1192,7 @@ static int mt9v032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9v032_remove(struct i2c_client *client) > +static void mt9v032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9v032 *mt9v032 = to_mt9v032(subdev); > @@ -1200,8 +1200,6 @@ static int mt9v032_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         v4l2_ctrl_handler_free(&mt9v032->ctrls); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct mt9v032_model_data mt9v032_model_data[] = { > diff --git a/drivers/media/i2c/mt9v111.c > b/drivers/media/i2c/mt9v111.c > index 2dc4a0f24ce8..fe18e5258d7a 100644 > --- a/drivers/media/i2c/mt9v111.c > +++ b/drivers/media/i2c/mt9v111.c > @@ -1238,7 +1238,7 @@ static int mt9v111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9v111_remove(struct i2c_client *client) > +static void mt9v111_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mt9v111_dev *mt9v111 = sd_to_mt9v111(sd); > @@ -1253,8 +1253,6 @@ static int mt9v111_remove(struct i2c_client > *client) >   >         mutex_destroy(&mt9v111->pwr_mutex); >         mutex_destroy(&mt9v111->stream_mutex); > - > -       return 0; >  } >   >  static const struct of_device_id mt9v111_of_match[] = { > diff --git a/drivers/media/i2c/noon010pc30.c > b/drivers/media/i2c/noon010pc30.c > index bc5187f46365..ecaf5e9057f1 100644 > --- a/drivers/media/i2c/noon010pc30.c > +++ b/drivers/media/i2c/noon010pc30.c > @@ -789,7 +789,7 @@ static int noon010_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int noon010_remove(struct i2c_client *client) > +static void noon010_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct noon010_info *info = to_noon010(sd); > @@ -797,8 +797,6 @@ static int noon010_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id noon010_id[] = { > diff --git a/drivers/media/i2c/og01a1b.c > b/drivers/media/i2c/og01a1b.c > index 87179fc04e00..35663c10fcd9 100644 > --- a/drivers/media/i2c/og01a1b.c > +++ b/drivers/media/i2c/og01a1b.c > @@ -1015,7 +1015,7 @@ static int og01a1b_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int og01a1b_remove(struct i2c_client *client) > +static void og01a1b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct og01a1b *og01a1b = to_og01a1b(sd); > @@ -1025,8 +1025,6 @@ static int og01a1b_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&og01a1b->mutex); > - > -       return 0; >  } >   >  static int og01a1b_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov02a10.c > b/drivers/media/i2c/ov02a10.c > index 0f08c05333ea..2c1eb724d8e5 100644 > --- a/drivers/media/i2c/ov02a10.c > +++ b/drivers/media/i2c/ov02a10.c > @@ -975,7 +975,7 @@ static int ov02a10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov02a10_remove(struct i2c_client *client) > +static void ov02a10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov02a10 *ov02a10 = to_ov02a10(sd); > @@ -988,8 +988,6 @@ static int ov02a10_remove(struct i2c_client > *client) >                 ov02a10_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         mutex_destroy(&ov02a10->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id ov02a10_of_match[] = { > diff --git a/drivers/media/i2c/ov08d10.c > b/drivers/media/i2c/ov08d10.c > index e5ef6466a3ec..c1703596c3dc 100644 > --- a/drivers/media/i2c/ov08d10.c > +++ b/drivers/media/i2c/ov08d10.c > @@ -1415,7 +1415,7 @@ static int ov08d10_get_hwcfg(struct ov08d10 > *ov08d10, struct device *dev) >         return ret; >  } >   > -static int ov08d10_remove(struct i2c_client *client) > +static void ov08d10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov08d10 *ov08d10 = to_ov08d10(sd); > @@ -1425,8 +1425,6 @@ static int ov08d10_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov08d10->mutex); > - > -       return 0; >  } >   >  static int ov08d10_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov13858.c > b/drivers/media/i2c/ov13858.c > index d5fe67c763f7..e618b613e078 100644 > --- a/drivers/media/i2c/ov13858.c > +++ b/drivers/media/i2c/ov13858.c > @@ -1769,7 +1769,7 @@ static int ov13858_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov13858_remove(struct i2c_client *client) > +static void ov13858_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13858 *ov13858 = to_ov13858(sd); > @@ -1779,8 +1779,6 @@ static int ov13858_remove(struct i2c_client > *client) >         ov13858_free_controls(ov13858); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov13858_id_table[] = { > diff --git a/drivers/media/i2c/ov13b10.c > b/drivers/media/i2c/ov13b10.c > index 7caeae641051..549e5d93e568 100644 > --- a/drivers/media/i2c/ov13b10.c > +++ b/drivers/media/i2c/ov13b10.c > @@ -1447,7 +1447,7 @@ static int ov13b10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov13b10_remove(struct i2c_client *client) > +static void ov13b10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13b10 *ov13b = to_ov13b10(sd); > @@ -1457,8 +1457,6 @@ static int ov13b10_remove(struct i2c_client > *client) >         ov13b10_free_controls(ov13b); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov13b10_pm_ops = { > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > index 4b75da55b260..29ed0ef8c033 100644 > --- a/drivers/media/i2c/ov2640.c > +++ b/drivers/media/i2c/ov2640.c > @@ -1271,7 +1271,7 @@ static int ov2640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2640_remove(struct i2c_client *client) > +static void ov2640_remove(struct i2c_client *client) >  { >         struct ov2640_priv       *priv = to_ov2640(client); >   > @@ -1281,7 +1281,6 @@ static int ov2640_remove(struct i2c_client > *client) >         media_entity_cleanup(&priv->subdev.entity); >         v4l2_device_unregister_subdev(&priv->subdev); >         clk_disable_unprepare(priv->clk); > -       return 0; >  } >   >  static const struct i2c_device_id ov2640_id[] = { > diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c > index 13ded5b2aa66..42fc64ada08c 100644 > --- a/drivers/media/i2c/ov2659.c > +++ b/drivers/media/i2c/ov2659.c > @@ -1544,7 +1544,7 @@ static int ov2659_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2659_remove(struct i2c_client *client) > +static void ov2659_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2659 *ov2659 = to_ov2659(sd); > @@ -1558,8 +1558,6 @@ static int ov2659_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov2659_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov2659_pm_ops = { > diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c > index 906c711f6821..de66d3395a4d 100644 > --- a/drivers/media/i2c/ov2680.c > +++ b/drivers/media/i2c/ov2680.c > @@ -1097,7 +1097,7 @@ static int ov2680_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_dev *sensor = to_ov2680_dev(sd); > @@ -1106,8 +1106,6 @@ static int ov2680_remove(struct i2c_client > *client) >         mutex_destroy(&sensor->lock); >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); > - > -       return 0; >  } >   >  static int __maybe_unused ov2680_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c > index b6e010ea3249..a3b524f15d89 100644 > --- a/drivers/media/i2c/ov2685.c > +++ b/drivers/media/i2c/ov2685.c > @@ -798,7 +798,7 @@ static int ov2685_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov2685_remove(struct i2c_client *client) > +static void ov2685_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2685 *ov2685 = to_ov2685(sd); > @@ -814,8 +814,6 @@ static int ov2685_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov2685_power_off(ov2685); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c > index d5f0eabf20c6..5d74ad479214 100644 > --- a/drivers/media/i2c/ov2740.c > +++ b/drivers/media/i2c/ov2740.c > @@ -1053,7 +1053,7 @@ static int ov2740_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov2740_remove(struct i2c_client *client) > +static void ov2740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2740 *ov2740 = to_ov2740(sd); > @@ -1063,8 +1063,6 @@ static int ov2740_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov2740->mutex); > - > -       return 0; >  } >   >  static int ov2740_nvmem_read(void *priv, unsigned int off, void > *val, > diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c > index db5a19babe67..7bcfdfdd1248 100644 > --- a/drivers/media/i2c/ov5640.c > +++ b/drivers/media/i2c/ov5640.c > @@ -3180,7 +3180,7 @@ static int ov5640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5640_remove(struct i2c_client *client) > +static void ov5640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5640_dev *sensor = to_ov5640_dev(sd); > @@ -3189,8 +3189,6 @@ static int ov5640_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5640_id[] = { > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c > index 562c62f192c4..81e4e87e1821 100644 > --- a/drivers/media/i2c/ov5645.c > +++ b/drivers/media/i2c/ov5645.c > @@ -1256,7 +1256,7 @@ static int ov5645_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5645_remove(struct i2c_client *client) > +static void ov5645_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5645 *ov5645 = to_ov5645(sd); > @@ -1265,8 +1265,6 @@ static int ov5645_remove(struct i2c_client > *client) >         media_entity_cleanup(&ov5645->sd.entity); >         v4l2_ctrl_handler_free(&ov5645->ctrls); >         mutex_destroy(&ov5645->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5645_id[] = { > diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c > index d346d18ce629..847a7bbb69c5 100644 > --- a/drivers/media/i2c/ov5647.c > +++ b/drivers/media/i2c/ov5647.c > @@ -1448,7 +1448,7 @@ static int ov5647_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5647_remove(struct i2c_client *client) > +static void ov5647_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5647 *sensor = to_sensor(sd); > @@ -1459,8 +1459,6 @@ static int ov5647_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5647_pm_ops = { > diff --git a/drivers/media/i2c/ov5648.c b/drivers/media/i2c/ov5648.c > index dfcd33e9ee13..84604ea7bdf9 100644 > --- a/drivers/media/i2c/ov5648.c > +++ b/drivers/media/i2c/ov5648.c > @@ -2587,7 +2587,7 @@ static int ov5648_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5648_remove(struct i2c_client *client) > +static void ov5648_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov5648_sensor *sensor = ov5648_subdev_sensor(subdev); > @@ -2597,8 +2597,6 @@ static int ov5648_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->mutex); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5648_pm_ops = { > diff --git a/drivers/media/i2c/ov5670.c b/drivers/media/i2c/ov5670.c > index 02f75c18e480..bc9fc3bc90c2 100644 > --- a/drivers/media/i2c/ov5670.c > +++ b/drivers/media/i2c/ov5670.c > @@ -2557,7 +2557,7 @@ static int ov5670_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5670_remove(struct i2c_client *client) > +static void ov5670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5670 *ov5670 = to_ov5670(sd); > @@ -2568,8 +2568,6 @@ static int ov5670_remove(struct i2c_client > *client) >         mutex_destroy(&ov5670->mutex); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5670_pm_ops = { > diff --git a/drivers/media/i2c/ov5675.c b/drivers/media/i2c/ov5675.c > index 82ba9f56baec..94dc8cb7a7c0 100644 > --- a/drivers/media/i2c/ov5675.c > +++ b/drivers/media/i2c/ov5675.c > @@ -1175,7 +1175,7 @@ static int ov5675_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov5675_remove(struct i2c_client *client) > +static void ov5675_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5675 *ov5675 = to_ov5675(sd); > @@ -1185,8 +1185,6 @@ static int ov5675_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov5675->mutex); > - > -       return 0; >  } >   >  static int ov5675_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov5693.c b/drivers/media/i2c/ov5693.c > index 117ff5403312..5a05356bcfb6 100644 > --- a/drivers/media/i2c/ov5693.c > +++ b/drivers/media/i2c/ov5693.c > @@ -1489,7 +1489,7 @@ static int ov5693_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *ov5693 = to_ov5693_sensor(sd); > @@ -1507,8 +1507,6 @@ static int ov5693_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov5693_sensor_powerdown(ov5693); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5693_pm_ops = { > diff --git a/drivers/media/i2c/ov5695.c b/drivers/media/i2c/ov5695.c > index 910309783885..61906fc54e37 100644 > --- a/drivers/media/i2c/ov5695.c > +++ b/drivers/media/i2c/ov5695.c > @@ -1361,7 +1361,7 @@ static int ov5695_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov5695_remove(struct i2c_client *client) > +static void ov5695_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5695 *ov5695 = to_ov5695(sd); > @@ -1377,8 +1377,6 @@ static int ov5695_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov5695_power_off(ov5695); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov6650.c b/drivers/media/i2c/ov6650.c > index 6458e96d9091..18f041e985b7 100644 > --- a/drivers/media/i2c/ov6650.c > +++ b/drivers/media/i2c/ov6650.c > @@ -1096,13 +1096,12 @@ static int ov6650_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov6650_remove(struct i2c_client *client) > +static void ov6650_remove(struct i2c_client *client) >  { >         struct ov6650 *priv = to_ov6650(client); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id ov6650_id[] = { > diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c > index 0e7be15bc20a..5d837a782ac8 100644 > --- a/drivers/media/i2c/ov7251.c > +++ b/drivers/media/i2c/ov7251.c > @@ -1766,7 +1766,7 @@ static int ov7251_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7251_remove(struct i2c_client *client) > +static void ov7251_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7251 *ov7251 = to_ov7251(sd); > @@ -1780,8 +1780,6 @@ static int ov7251_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(ov7251->dev)) >                 ov7251_set_power_off(ov7251->dev); >         pm_runtime_set_suspended(ov7251->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov7251_pm_ops = { > diff --git a/drivers/media/i2c/ov7640.c b/drivers/media/i2c/ov7640.c > index 977cd2d8ad33..5e2d67f0f9f2 100644 > --- a/drivers/media/i2c/ov7640.c > +++ b/drivers/media/i2c/ov7640.c > @@ -70,13 +70,11 @@ static int ov7640_probe(struct i2c_client > *client, >  } >   >   > -static int ov7640_remove(struct i2c_client *client) > +static void ov7640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov7640_id[] = { > diff --git a/drivers/media/i2c/ov7670.c b/drivers/media/i2c/ov7670.c > index 1be2c0e5bdc1..4b9b156b53c7 100644 > --- a/drivers/media/i2c/ov7670.c > +++ b/drivers/media/i2c/ov7670.c > @@ -2009,7 +2009,7 @@ static int ov7670_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov7670_remove(struct i2c_client *client) > +static void ov7670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7670_info *info = to_state(sd); > @@ -2017,7 +2017,6 @@ static int ov7670_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&info->sd.entity); > -       return 0; >  } >   >  static const struct i2c_device_id ov7670_id[] = { > diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c > index 78602a2f70b0..4189e3fc3d53 100644 > --- a/drivers/media/i2c/ov772x.c > +++ b/drivers/media/i2c/ov772x.c > @@ -1521,7 +1521,7 @@ static int ov772x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov772x_remove(struct i2c_client *client) > +static void ov772x_remove(struct i2c_client *client) >  { >         struct ov772x_priv *priv = > to_ov772x(i2c_get_clientdata(client)); >   > @@ -1532,8 +1532,6 @@ static int ov772x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); >         mutex_destroy(&priv->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov772x_id[] = { > diff --git a/drivers/media/i2c/ov7740.c b/drivers/media/i2c/ov7740.c > index 2539cfee85c8..c9fd9b0bc54a 100644 > --- a/drivers/media/i2c/ov7740.c > +++ b/drivers/media/i2c/ov7740.c > @@ -1153,7 +1153,7 @@ static int ov7740_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7740_remove(struct i2c_client *client) > +static void ov7740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7740 *ov7740 = container_of(sd, struct ov7740, > subdev); > @@ -1170,7 +1170,6 @@ static int ov7740_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         ov7740_set_power(ov7740, 0); > -       return 0; >  } >   >  static int __maybe_unused ov7740_runtime_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov8856.c b/drivers/media/i2c/ov8856.c > index a9728afc81d4..efa18d026ac3 100644 > --- a/drivers/media/i2c/ov8856.c > +++ b/drivers/media/i2c/ov8856.c > @@ -2440,7 +2440,7 @@ static int ov8856_get_hwcfg(struct ov8856 > *ov8856, struct device *dev) >         return ret; >  } >   > -static int ov8856_remove(struct i2c_client *client) > +static void ov8856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov8856 *ov8856 = to_ov8856(sd); > @@ -2452,8 +2452,6 @@ static int ov8856_remove(struct i2c_client > *client) >         mutex_destroy(&ov8856->mutex); >   >         __ov8856_power_off(ov8856); > - > -       return 0; >  } >   >  static int ov8856_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov8865.c b/drivers/media/i2c/ov8865.c > index b8f4f0d3e33d..a233c34b168e 100644 > --- a/drivers/media/i2c/ov8865.c > +++ b/drivers/media/i2c/ov8865.c > @@ -3119,7 +3119,7 @@ static int ov8865_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov8865_remove(struct i2c_client *client) > +static void ov8865_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov8865_sensor *sensor = ov8865_subdev_sensor(subdev); > @@ -3131,8 +3131,6 @@ static int ov8865_remove(struct i2c_client > *client) >         media_entity_cleanup(&subdev->entity); >   >         v4l2_fwnode_endpoint_free(&sensor->endpoint); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov8865_pm_ops = { > diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c > index 2e0b315801e5..df144a2f6eda 100644 > --- a/drivers/media/i2c/ov9282.c > +++ b/drivers/media/i2c/ov9282.c > @@ -1091,7 +1091,7 @@ static int ov9282_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int ov9282_remove(struct i2c_client *client) > +static void ov9282_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9282 *ov9282 = to_ov9282(sd); > @@ -1106,8 +1106,6 @@ static int ov9282_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&ov9282->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov9282_pm_ops = { > diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c > index 9f44ed52d164..8b80be33c5f4 100644 > --- a/drivers/media/i2c/ov9640.c > +++ b/drivers/media/i2c/ov9640.c > @@ -744,15 +744,13 @@ static int ov9640_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov9640_remove(struct i2c_client *client) > +static void ov9640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9640_priv *priv = to_ov9640_sensor(sd); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov9640_id[] = { > diff --git a/drivers/media/i2c/ov9650.c b/drivers/media/i2c/ov9650.c > index c313e11a9754..4d458993e6d6 100644 > --- a/drivers/media/i2c/ov9650.c > +++ b/drivers/media/i2c/ov9650.c > @@ -1584,7 +1584,7 @@ static int ov965x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov965x_remove(struct i2c_client *client) > +static void ov965x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov965x *ov965x = to_ov965x(sd); > @@ -1593,8 +1593,6 @@ static int ov965x_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&ov965x->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov965x_id[] = { > diff --git a/drivers/media/i2c/ov9734.c b/drivers/media/i2c/ov9734.c > index df538ceb71c3..8b0a158cb297 100644 > --- a/drivers/media/i2c/ov9734.c > +++ b/drivers/media/i2c/ov9734.c > @@ -930,7 +930,7 @@ static int ov9734_check_hwcfg(struct device *dev) >         return ret; >  } >   > -static int ov9734_remove(struct i2c_client *client) > +static void ov9734_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9734 *ov9734 = to_ov9734(sd); > @@ -940,8 +940,6 @@ static int ov9734_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov9734->mutex); > - > -       return 0; >  } >   >  static int ov9734_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm20.c > b/drivers/media/i2c/rdacm20.c > index 2615ad154f49..a2263fa825b5 100644 > --- a/drivers/media/i2c/rdacm20.c > +++ b/drivers/media/i2c/rdacm20.c > @@ -646,7 +646,7 @@ static int rdacm20_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm20_remove(struct i2c_client *client) > +static void rdacm20_remove(struct i2c_client *client) >  { >         struct rdacm20_device *dev = i2c_to_rdacm20(client); >   > @@ -655,8 +655,6 @@ static int rdacm20_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         media_entity_cleanup(&dev->sd.entity); >         i2c_unregister_device(dev->sensor); > - > -       return 0; >  } >   >  static void rdacm20_shutdown(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm21.c > b/drivers/media/i2c/rdacm21.c > index ef31cf5f23ca..9ccc56c30d3b 100644 > --- a/drivers/media/i2c/rdacm21.c > +++ b/drivers/media/i2c/rdacm21.c > @@ -614,7 +614,7 @@ static int rdacm21_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm21_remove(struct i2c_client *client) > +static void rdacm21_remove(struct i2c_client *client) >  { >         struct rdacm21_device *dev = > sd_to_rdacm21(i2c_get_clientdata(client)); >   > @@ -622,8 +622,6 @@ static int rdacm21_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         i2c_unregister_device(dev->isp); >         fwnode_handle_put(dev->sd.fwnode); > - > -       return 0; >  } >   >  static const struct of_device_id rdacm21_of_ids[] = { > diff --git a/drivers/media/i2c/rj54n1cb0c.c > b/drivers/media/i2c/rj54n1cb0c.c > index 2e4018c26912..1c3502f34cd3 100644 > --- a/drivers/media/i2c/rj54n1cb0c.c > +++ b/drivers/media/i2c/rj54n1cb0c.c > @@ -1398,7 +1398,7 @@ static int rj54n1_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rj54n1_remove(struct i2c_client *client) > +static void rj54n1_remove(struct i2c_client *client) >  { >         struct rj54n1 *rj54n1 = to_rj54n1(client); >   > @@ -1410,8 +1410,6 @@ static int rj54n1_remove(struct i2c_client > *client) >         clk_put(rj54n1->clk); >         v4l2_ctrl_handler_free(&rj54n1->hdl); >         v4l2_async_unregister_subdev(&rj54n1->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rj54n1_id[] = { > diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > index e2b88c5e4f98..d96ba58ce1e5 100644 > --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > @@ -1770,7 +1770,7 @@ static int s5c73m3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5c73m3_remove(struct i2c_client *client) > +static void s5c73m3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *oif_sd = i2c_get_clientdata(client); >         struct s5c73m3 *state = oif_sd_to_s5c73m3(oif_sd); > @@ -1785,8 +1785,6 @@ static int s5c73m3_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor_sd->entity); >   >         s5c73m3_unregister_spi_driver(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5c73m3_id[] = { > diff --git a/drivers/media/i2c/s5k4ecgx.c > b/drivers/media/i2c/s5k4ecgx.c > index af9a305242cd..3dddcd9dd351 100644 > --- a/drivers/media/i2c/s5k4ecgx.c > +++ b/drivers/media/i2c/s5k4ecgx.c > @@ -996,7 +996,7 @@ static int s5k4ecgx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k4ecgx_remove(struct i2c_client *client) > +static void s5k4ecgx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct s5k4ecgx *priv = to_s5k4ecgx(sd); > @@ -1006,8 +1006,6 @@ static int s5k4ecgx_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&priv->handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k4ecgx_id[] = { > diff --git a/drivers/media/i2c/s5k5baf.c > b/drivers/media/i2c/s5k5baf.c > index 6a5dceb699a8..5c2253ab3b6f 100644 > --- a/drivers/media/i2c/s5k5baf.c > +++ b/drivers/media/i2c/s5k5baf.c > @@ -2018,7 +2018,7 @@ static int s5k5baf_probe(struct i2c_client *c) >         return ret; >  } >   > -static int s5k5baf_remove(struct i2c_client *c) > +static void s5k5baf_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct s5k5baf *state = to_s5k5baf(sd); > @@ -2030,8 +2030,6 @@ static int s5k5baf_remove(struct i2c_client *c) >         sd = &state->cis_sd; >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k5baf_id[] = { > diff --git a/drivers/media/i2c/s5k6a3.c b/drivers/media/i2c/s5k6a3.c > index f6ecf6f92bb2..a4efd6d10b43 100644 > --- a/drivers/media/i2c/s5k6a3.c > +++ b/drivers/media/i2c/s5k6a3.c > @@ -354,14 +354,13 @@ static int s5k6a3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5k6a3_remove(struct i2c_client *client) > +static void s5k6a3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         pm_runtime_disable(&client->dev); >         v4l2_async_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > -       return 0; >  } >   >  static const struct i2c_device_id s5k6a3_ids[] = { > diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c > index 105a4b7d8354..059211788a65 100644 > --- a/drivers/media/i2c/s5k6aa.c > +++ b/drivers/media/i2c/s5k6aa.c > @@ -1621,15 +1621,13 @@ static int s5k6aa_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k6aa_remove(struct i2c_client *client) > +static void s5k6aa_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k6aa_id[] = { > diff --git a/drivers/media/i2c/saa6588.c > b/drivers/media/i2c/saa6588.c > index d1e0716bdfff..d6a51beabd02 100644 > --- a/drivers/media/i2c/saa6588.c > +++ b/drivers/media/i2c/saa6588.c > @@ -484,7 +484,7 @@ static int saa6588_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6588_remove(struct i2c_client *client) > +static void saa6588_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa6588 *s = to_saa6588(sd); > @@ -492,8 +492,6 @@ static int saa6588_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >   >         cancel_delayed_work_sync(&s->work); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa6752hs.c > b/drivers/media/i2c/saa6752hs.c > index a7f043cad149..5928cc6f4595 100644 > --- a/drivers/media/i2c/saa6752hs.c > +++ b/drivers/media/i2c/saa6752hs.c > @@ -764,13 +764,12 @@ static int saa6752hs_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6752hs_remove(struct i2c_client *client) > +static void saa6752hs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id saa6752hs_id[] = { > diff --git a/drivers/media/i2c/saa7110.c > b/drivers/media/i2c/saa7110.c > index 0c7a9ce0a693..5067525d8b11 100644 > --- a/drivers/media/i2c/saa7110.c > +++ b/drivers/media/i2c/saa7110.c > @@ -428,14 +428,13 @@ static int saa7110_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7110_remove(struct i2c_client *client) > +static void saa7110_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7110 *decoder = to_saa7110(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7115.c > b/drivers/media/i2c/saa7115.c > index 15ff80e6301e..86e70a980218 100644 > --- a/drivers/media/i2c/saa7115.c > +++ b/drivers/media/i2c/saa7115.c > @@ -1927,13 +1927,12 @@ static int saa711x_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa711x_remove(struct i2c_client *client) > +static void saa711x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id saa711x_id[] = { > diff --git a/drivers/media/i2c/saa7127.c > b/drivers/media/i2c/saa7127.c > index 891192f6412a..78c9388c2ea1 100644 > --- a/drivers/media/i2c/saa7127.c > +++ b/drivers/media/i2c/saa7127.c > @@ -785,14 +785,13 @@ static int saa7127_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa7127_remove(struct i2c_client *client) > +static void saa7127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         /* Turn off TV output */ >         saa7127_set_video_enable(sd, 0); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa717x.c > b/drivers/media/i2c/saa717x.c > index adf905360171..4f3d1b432a4e 100644 > --- a/drivers/media/i2c/saa717x.c > +++ b/drivers/media/i2c/saa717x.c > @@ -1324,13 +1324,12 @@ static int saa717x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa717x_remove(struct i2c_client *client) > +static void saa717x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7185.c > b/drivers/media/i2c/saa7185.c > index 7a04422df8c8..266462325d30 100644 > --- a/drivers/media/i2c/saa7185.c > +++ b/drivers/media/i2c/saa7185.c > @@ -322,7 +322,7 @@ static int saa7185_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7185_remove(struct i2c_client *client) > +static void saa7185_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7185 *encoder = to_saa7185(sd); > @@ -330,7 +330,6 @@ static int saa7185_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         /* SW: output off is active */ >         saa7185_write(sd, 0x61, (encoder->reg[0x61]) | 0x40); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sony-btf-mpx.c > b/drivers/media/i2c/sony-btf-mpx.c > index ad239280c42e..927a9ec41463 100644 > --- a/drivers/media/i2c/sony-btf-mpx.c > +++ b/drivers/media/i2c/sony-btf-mpx.c > @@ -357,13 +357,11 @@ static int sony_btf_mpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sony_btf_mpx_remove(struct i2c_client *client) > +static void sony_btf_mpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sr030pc30.c > b/drivers/media/i2c/sr030pc30.c > index 19c0252df2f1..ff18693beb5c 100644 > --- a/drivers/media/i2c/sr030pc30.c > +++ b/drivers/media/i2c/sr030pc30.c > @@ -732,13 +732,12 @@ static int sr030pc30_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sr030pc30_remove(struct i2c_client *client) > +static void sr030pc30_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id sr030pc30_id[] = { > diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st- > mipid02.c > index ef976d085d72..0389223a61f7 100644 > --- a/drivers/media/i2c/st-mipid02.c > +++ b/drivers/media/i2c/st-mipid02.c > @@ -1041,7 +1041,7 @@ static int mipid02_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mipid02_remove(struct i2c_client *client) > +static void mipid02_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mipid02_dev *bridge = to_mipid02_dev(sd); > @@ -1052,8 +1052,6 @@ static int mipid02_remove(struct i2c_client > *client) >         mipid02_set_power_off(bridge); >         media_entity_cleanup(&bridge->sd.entity); >         mutex_destroy(&bridge->lock); > - > -       return 0; >  } >   >  static const struct of_device_id mipid02_dt_ids[] = { > diff --git a/drivers/media/i2c/tc358743.c > b/drivers/media/i2c/tc358743.c > index e18b8947ad7e..d99eedbdf011 100644 > --- a/drivers/media/i2c/tc358743.c > +++ b/drivers/media/i2c/tc358743.c > @@ -2169,7 +2169,7 @@ static int tc358743_probe(struct i2c_client > *client) >         return err; >  } >   > -static int tc358743_remove(struct i2c_client *client) > +static void tc358743_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tc358743_state *state = to_state(sd); > @@ -2185,8 +2185,6 @@ static int tc358743_remove(struct i2c_client > *client) >         mutex_destroy(&state->confctl_mutex); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358743_id[] = { > diff --git a/drivers/media/i2c/tda1997x.c > b/drivers/media/i2c/tda1997x.c > index 8fafce26d62f..47d60f9a656f 100644 > --- a/drivers/media/i2c/tda1997x.c > +++ b/drivers/media/i2c/tda1997x.c > @@ -2805,7 +2805,7 @@ static int tda1997x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda1997x_remove(struct i2c_client *client) > +static void tda1997x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda1997x_state *state = to_state(sd); > @@ -2827,8 +2827,6 @@ static int tda1997x_remove(struct i2c_client > *client) >         mutex_destroy(&state->lock); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver tda1997x_i2c_driver = { > diff --git a/drivers/media/i2c/tda7432.c > b/drivers/media/i2c/tda7432.c > index cbdc9be0a597..11e918311b13 100644 > --- a/drivers/media/i2c/tda7432.c > +++ b/drivers/media/i2c/tda7432.c > @@ -390,7 +390,7 @@ static int tda7432_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda7432_remove(struct i2c_client *client) > +static void tda7432_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda7432 *t = to_state(sd); > @@ -398,7 +398,6 @@ static int tda7432_remove(struct i2c_client > *client) >         tda7432_set(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&t->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tda7432_id[] = { > diff --git a/drivers/media/i2c/tda9840.c > b/drivers/media/i2c/tda9840.c > index 8c6dfe746b20..aaa74944fc7c 100644 > --- a/drivers/media/i2c/tda9840.c > +++ b/drivers/media/i2c/tda9840.c > @@ -175,12 +175,11 @@ static int tda9840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9840_remove(struct i2c_client *client) > +static void tda9840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tda9840_id[] = { > diff --git a/drivers/media/i2c/tea6415c.c > b/drivers/media/i2c/tea6415c.c > index 67378dbcc74b..50e74314f315 100644 > --- a/drivers/media/i2c/tea6415c.c > +++ b/drivers/media/i2c/tea6415c.c > @@ -134,12 +134,11 @@ static int tea6415c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6415c_remove(struct i2c_client *client) > +static void tea6415c_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6415c_id[] = { > diff --git a/drivers/media/i2c/tea6420.c > b/drivers/media/i2c/tea6420.c > index 712141b261ed..246f2b10ccc7 100644 > --- a/drivers/media/i2c/tea6420.c > +++ b/drivers/media/i2c/tea6420.c > @@ -116,12 +116,11 @@ static int tea6420_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6420_remove(struct i2c_client *client) > +static void tea6420_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6420_id[] = { > diff --git a/drivers/media/i2c/ths7303.c > b/drivers/media/i2c/ths7303.c > index 8206bf7a5a8f..2a0f9a3d1a66 100644 > --- a/drivers/media/i2c/ths7303.c > +++ b/drivers/media/i2c/ths7303.c > @@ -358,13 +358,11 @@ static int ths7303_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ths7303_remove(struct i2c_client *client) > +static void ths7303_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths7303_id[] = { > diff --git a/drivers/media/i2c/ths8200.c > b/drivers/media/i2c/ths8200.c > index c52fe84cba1b..081ef5a4b950 100644 > --- a/drivers/media/i2c/ths8200.c > +++ b/drivers/media/i2c/ths8200.c > @@ -468,7 +468,7 @@ static int ths8200_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ths8200_remove(struct i2c_client *client) > +static void ths8200_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ths8200_state *decoder = to_state(sd); > @@ -478,8 +478,6 @@ static int ths8200_remove(struct i2c_client > *client) >   >         ths8200_s_power(sd, false); >         v4l2_async_unregister_subdev(&decoder->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths8200_id[] = { > diff --git a/drivers/media/i2c/tlv320aic23b.c > b/drivers/media/i2c/tlv320aic23b.c > index e4c21990fea9..937fa1dbaecb 100644 > --- a/drivers/media/i2c/tlv320aic23b.c > +++ b/drivers/media/i2c/tlv320aic23b.c > @@ -177,14 +177,13 @@ static int tlv320aic23b_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tlv320aic23b_remove(struct i2c_client *client) > +static void tlv320aic23b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tlv320aic23b_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvaudio.c > b/drivers/media/i2c/tvaudio.c > index e6796e94dadf..9f1ed078b661 100644 > --- a/drivers/media/i2c/tvaudio.c > +++ b/drivers/media/i2c/tvaudio.c > @@ -2065,7 +2065,7 @@ static int tvaudio_probe(struct i2c_client > *client, const struct i2c_device_id * >         return 0; >  } >   > -static int tvaudio_remove(struct i2c_client *client) > +static void tvaudio_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct CHIPSTATE *chip = to_state(sd); > @@ -2079,7 +2079,6 @@ static int tvaudio_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&chip->hdl); > -       return 0; >  } >   >  /* This driver supports many devices and the idea is to let the > driver > diff --git a/drivers/media/i2c/tvp514x.c > b/drivers/media/i2c/tvp514x.c > index cee60f945036..a746d96875f9 100644 > --- a/drivers/media/i2c/tvp514x.c > +++ b/drivers/media/i2c/tvp514x.c > @@ -1121,7 +1121,7 @@ tvp514x_probe(struct i2c_client *client, const > struct i2c_device_id *id) >   * Unregister decoder as an i2c client device and V4L2 >   * device. Complement of tvp514x_probe(). >   */ > -static int tvp514x_remove(struct i2c_client *client) > +static void tvp514x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tvp514x_decoder *decoder = to_decoder(sd); > @@ -1129,7 +1129,6 @@ static int tvp514x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&decoder->sd); >         media_entity_cleanup(&decoder->sd.entity); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >  /* TVP5146 Init/Power on Sequence */ >  static const struct tvp514x_reg tvp5146_init_reg_seq[] = { > diff --git a/drivers/media/i2c/tvp5150.c > b/drivers/media/i2c/tvp5150.c > index 65472438444b..de21e67c0709 100644 > --- a/drivers/media/i2c/tvp5150.c > +++ b/drivers/media/i2c/tvp5150.c > @@ -2230,7 +2230,7 @@ static int tvp5150_probe(struct i2c_client *c) >         return res; >  } >   > -static int tvp5150_remove(struct i2c_client *c) > +static void tvp5150_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp5150 *decoder = to_tvp5150(sd); > @@ -2250,8 +2250,6 @@ static int tvp5150_remove(struct i2c_client *c) >         v4l2_ctrl_handler_free(&decoder->hdl); >         pm_runtime_disable(&c->dev); >         pm_runtime_set_suspended(&c->dev); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvp7002.c > b/drivers/media/i2c/tvp7002.c > index 2de18833b07b..4ccd218f5584 100644 > --- a/drivers/media/i2c/tvp7002.c > +++ b/drivers/media/i2c/tvp7002.c > @@ -1044,7 +1044,7 @@ static int tvp7002_probe(struct i2c_client *c) >   * Reset the TVP7002 device >   * Returns zero. >   */ > -static int tvp7002_remove(struct i2c_client *c) > +static void tvp7002_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp7002 *device = to_tvp7002(sd); > @@ -1056,7 +1056,6 @@ static int tvp7002_remove(struct i2c_client *c) >         media_entity_cleanup(&device->sd.entity); >  #endif >         v4l2_ctrl_handler_free(&device->hdl); > -       return 0; >  } >   >  /* I2C Device ID table */ > diff --git a/drivers/media/i2c/tw2804.c b/drivers/media/i2c/tw2804.c > index cd05f1ff504d..c7c8dfe8a8a8 100644 > --- a/drivers/media/i2c/tw2804.c > +++ b/drivers/media/i2c/tw2804.c > @@ -405,14 +405,13 @@ static int tw2804_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw2804_remove(struct i2c_client *client) > +static void tw2804_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tw2804 *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tw2804_id[] = { > diff --git a/drivers/media/i2c/tw9903.c b/drivers/media/i2c/tw9903.c > index f8e3ab4909d8..d7eef7986b75 100644 > --- a/drivers/media/i2c/tw9903.c > +++ b/drivers/media/i2c/tw9903.c > @@ -235,13 +235,12 @@ static int tw9903_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9903_remove(struct i2c_client *client) > +static void tw9903_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9906.c b/drivers/media/i2c/tw9906.c > index c528eb01fed0..549ad8f72f12 100644 > --- a/drivers/media/i2c/tw9906.c > +++ b/drivers/media/i2c/tw9906.c > @@ -203,13 +203,12 @@ static int tw9906_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9906_remove(struct i2c_client *client) > +static void tw9906_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c > index 09f5b3986928..853b5acead32 100644 > --- a/drivers/media/i2c/tw9910.c > +++ b/drivers/media/i2c/tw9910.c > @@ -993,7 +993,7 @@ static int tw9910_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tw9910_remove(struct i2c_client *client) > +static void tw9910_remove(struct i2c_client *client) >  { >         struct tw9910_priv *priv = to_tw9910(client); >   > @@ -1001,8 +1001,6 @@ static int tw9910_remove(struct i2c_client > *client) >                 gpiod_put(priv->pdn_gpio); >         clk_put(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tw9910_id[] = { > diff --git a/drivers/media/i2c/uda1342.c > b/drivers/media/i2c/uda1342.c > index b0a9c6d7163f..d0659c4392f2 100644 > --- a/drivers/media/i2c/uda1342.c > +++ b/drivers/media/i2c/uda1342.c > @@ -72,12 +72,11 @@ static int uda1342_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int uda1342_remove(struct i2c_client *client) > +static void uda1342_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id uda1342_id[] = { > diff --git a/drivers/media/i2c/upd64031a.c > b/drivers/media/i2c/upd64031a.c > index ef35c6574785..4de26ed2ba00 100644 > --- a/drivers/media/i2c/upd64031a.c > +++ b/drivers/media/i2c/upd64031a.c > @@ -210,12 +210,11 @@ static int upd64031a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64031a_remove(struct i2c_client *client) > +static void upd64031a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/upd64083.c > b/drivers/media/i2c/upd64083.c > index d6a1698caa2a..2bfd5443d406 100644 > --- a/drivers/media/i2c/upd64083.c > +++ b/drivers/media/i2c/upd64083.c > @@ -181,12 +181,11 @@ static int upd64083_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64083_remove(struct i2c_client *client) > +static void upd64083_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video- > i2c.c > index e08e3579c0a1..f15ef2d13059 100644 > --- a/drivers/media/i2c/video-i2c.c > +++ b/drivers/media/i2c/video-i2c.c > @@ -895,7 +895,7 @@ static int video_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int video_i2c_remove(struct i2c_client *client) > +static void video_i2c_remove(struct i2c_client *client) >  { >         struct video_i2c_data *data = i2c_get_clientdata(client); >   > @@ -908,8 +908,6 @@ static int video_i2c_remove(struct i2c_client > *client) >                 data->chip->set_power(data, false); >   >         video_unregister_device(&data->vdev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/media/i2c/vp27smpx.c > b/drivers/media/i2c/vp27smpx.c > index 492af8749fca..c832edad5fa7 100644 > --- a/drivers/media/i2c/vp27smpx.c > +++ b/drivers/media/i2c/vp27smpx.c > @@ -163,12 +163,11 @@ static int vp27smpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vp27smpx_remove(struct i2c_client *client) > +static void vp27smpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/vpx3220.c > b/drivers/media/i2c/vpx3220.c > index 8be03fe5928c..b481ec196b88 100644 > --- a/drivers/media/i2c/vpx3220.c > +++ b/drivers/media/i2c/vpx3220.c > @@ -526,15 +526,13 @@ static int vpx3220_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vpx3220_remove(struct i2c_client *client) > +static void vpx3220_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct vpx3220 *decoder = to_vpx3220(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id vpx3220_id[] = { > diff --git a/drivers/media/i2c/vs6624.c b/drivers/media/i2c/vs6624.c > index 29003dec6f2d..d496bb45f201 100644 > --- a/drivers/media/i2c/vs6624.c > +++ b/drivers/media/i2c/vs6624.c > @@ -824,13 +824,12 @@ static int vs6624_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vs6624_remove(struct i2c_client *client) > +static void vs6624_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id vs6624_id[] = { > diff --git a/drivers/media/i2c/wm8739.c b/drivers/media/i2c/wm8739.c > index ed533834db54..180b35347521 100644 > --- a/drivers/media/i2c/wm8739.c > +++ b/drivers/media/i2c/wm8739.c > @@ -234,14 +234,13 @@ static int wm8739_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8739_remove(struct i2c_client *client) > +static void wm8739_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8739_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8739_id[] = { > diff --git a/drivers/media/i2c/wm8775.c b/drivers/media/i2c/wm8775.c > index d4c83c39892a..8ff97867d3cd 100644 > --- a/drivers/media/i2c/wm8775.c > +++ b/drivers/media/i2c/wm8775.c > @@ -280,14 +280,13 @@ static int wm8775_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8775_remove(struct i2c_client *client) > +static void wm8775_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8775_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8775_id[] = { > diff --git a/drivers/media/radio/radio-tea5764.c > b/drivers/media/radio/radio-tea5764.c > index 877a24e5c577..abda40e81612 100644 > --- a/drivers/media/radio/radio-tea5764.c > +++ b/drivers/media/radio/radio-tea5764.c > @@ -487,7 +487,7 @@ static int tea5764_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tea5764_i2c_remove(struct i2c_client *client) > +static void tea5764_i2c_remove(struct i2c_client *client) >  { >         struct tea5764_device *radio = i2c_get_clientdata(client); >   > @@ -499,7 +499,6 @@ static int tea5764_i2c_remove(struct i2c_client > *client) >                 v4l2_device_unregister(&radio->v4l2_dev); >                 kfree(radio); >         } > -       return 0; >  } >   >  /* I2C subsystem interface */ > diff --git a/drivers/media/radio/saa7706h.c > b/drivers/media/radio/saa7706h.c > index adb66f869dd2..f9e990a9c3ef 100644 > --- a/drivers/media/radio/saa7706h.c > +++ b/drivers/media/radio/saa7706h.c > @@ -384,7 +384,7 @@ static int saa7706h_probe(struct i2c_client > *client, >         return err; >  } >   > -static int saa7706h_remove(struct i2c_client *client) > +static void saa7706h_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7706h_state *state = to_state(sd); > @@ -393,7 +393,6 @@ static int saa7706h_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id saa7706h_id[] = { > diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c > b/drivers/media/radio/si470x/radio-si470x-i2c.c > index 59b3d77e282d..a6ad926c2b4e 100644 > --- a/drivers/media/radio/si470x/radio-si470x-i2c.c > +++ b/drivers/media/radio/si470x/radio-si470x-i2c.c > @@ -461,7 +461,7 @@ static int si470x_i2c_probe(struct i2c_client > *client) >  /* >   * si470x_i2c_remove - remove the device >   */ > -static int si470x_i2c_remove(struct i2c_client *client) > +static void si470x_i2c_remove(struct i2c_client *client) >  { >         struct si470x_device *radio = i2c_get_clientdata(client); >   > @@ -472,7 +472,6 @@ static int si470x_i2c_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&radio->hdl); >         v4l2_device_unregister(&radio->v4l2_dev); > -       return 0; >  } >   >   > diff --git a/drivers/media/radio/si4713/si4713.c > b/drivers/media/radio/si4713/si4713.c > index adbf43ff6a21..2aec642133a1 100644 > --- a/drivers/media/radio/si4713/si4713.c > +++ b/drivers/media/radio/si4713/si4713.c > @@ -1623,7 +1623,7 @@ static int si4713_probe(struct i2c_client > *client) >  } >   >  /* si4713_remove - remove the device */ > -static int si4713_remove(struct i2c_client *client) > +static void si4713_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct si4713_device *sdev = to_si4713_device(sd); > @@ -1635,8 +1635,6 @@ static int si4713_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > - > -       return 0; >  } >   >  /* si4713_i2c_driver - i2c driver interface */ > diff --git a/drivers/media/radio/tef6862.c > b/drivers/media/radio/tef6862.c > index d8810492db4f..7b0870a9785b 100644 > --- a/drivers/media/radio/tef6862.c > +++ b/drivers/media/radio/tef6862.c > @@ -165,13 +165,12 @@ static int tef6862_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tef6862_remove(struct i2c_client *client) > +static void tef6862_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id tef6862_id[] = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_demod.c > b/drivers/media/test-drivers/vidtv/vidtv_demod.c > index b7823d97b30d..e7959ab1add8 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_demod.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_demod.c > @@ -438,13 +438,11 @@ static int vidtv_demod_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_demod_i2c_remove(struct i2c_client *client) > +static void vidtv_demod_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_demod_state *state = i2c_get_clientdata(client); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_demod_i2c_driver = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > index 14b6bc902ee1..aabc97ed736b 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > @@ -414,13 +414,11 @@ static int vidtv_tuner_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_tuner_i2c_remove(struct i2c_client *client) > +static void vidtv_tuner_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_tuner_dev *tuner_dev = > i2c_get_clientdata(client); >   >         kfree(tuner_dev); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_tuner_i2c_driver = { > diff --git a/drivers/media/tuners/e4000.c > b/drivers/media/tuners/e4000.c > index a3a8d051dc6c..61ae884ea59a 100644 > --- a/drivers/media/tuners/e4000.c > +++ b/drivers/media/tuners/e4000.c > @@ -706,7 +706,7 @@ static int e4000_probe(struct i2c_client *client, >         return ret; >  } >   > -static int e4000_remove(struct i2c_client *client) > +static void e4000_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct e4000_dev *dev = container_of(sd, struct e4000_dev, > sd); > @@ -717,8 +717,6 @@ static int e4000_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id e4000_id_table[] = { > diff --git a/drivers/media/tuners/fc2580.c > b/drivers/media/tuners/fc2580.c > index 1b5961bdf2d5..f30932e1a0f3 100644 > --- a/drivers/media/tuners/fc2580.c > +++ b/drivers/media/tuners/fc2580.c > @@ -588,7 +588,7 @@ static int fc2580_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fc2580_remove(struct i2c_client *client) > +static void fc2580_remove(struct i2c_client *client) >  { >         struct fc2580_dev *dev = i2c_get_clientdata(client); >   > @@ -598,7 +598,6 @@ static int fc2580_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id fc2580_id_table[] = { > diff --git a/drivers/media/tuners/m88rs6000t.c > b/drivers/media/tuners/m88rs6000t.c > index 8647c50b66e5..e32e3e9daa15 100644 > --- a/drivers/media/tuners/m88rs6000t.c > +++ b/drivers/media/tuners/m88rs6000t.c > @@ -697,7 +697,7 @@ static int m88rs6000t_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88rs6000t_remove(struct i2c_client *client) > +static void m88rs6000t_remove(struct i2c_client *client) >  { >         struct m88rs6000t_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -707,8 +707,6 @@ static int m88rs6000t_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id m88rs6000t_id[] = { > diff --git a/drivers/media/tuners/mt2060.c > b/drivers/media/tuners/mt2060.c > index 204e6186bf71..322c806228a5 100644 > --- a/drivers/media/tuners/mt2060.c > +++ b/drivers/media/tuners/mt2060.c > @@ -509,11 +509,9 @@ static int mt2060_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt2060_remove(struct i2c_client *client) > +static void mt2060_remove(struct i2c_client *client) >  { >         dev_dbg(&client->dev, "\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt2060_id_table[] = { > diff --git a/drivers/media/tuners/mxl301rf.c > b/drivers/media/tuners/mxl301rf.c > index c628435a1b06..6422056185a9 100644 > --- a/drivers/media/tuners/mxl301rf.c > +++ b/drivers/media/tuners/mxl301rf.c > @@ -307,14 +307,13 @@ static int mxl301rf_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mxl301rf_remove(struct i2c_client *client) > +static void mxl301rf_remove(struct i2c_client *client) >  { >         struct mxl301rf_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1b0004.c > b/drivers/media/tuners/qm1d1b0004.c > index 008ad870c00f..9cba0893207c 100644 > --- a/drivers/media/tuners/qm1d1b0004.c > +++ b/drivers/media/tuners/qm1d1b0004.c > @@ -232,14 +232,13 @@ qm1d1b0004_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int qm1d1b0004_remove(struct i2c_client *client) > +static void qm1d1b0004_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe; >   >         fe = i2c_get_clientdata(client); >         kfree(fe->tuner_priv); >         fe->tuner_priv = NULL; > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1c0042.c > b/drivers/media/tuners/qm1d1c0042.c > index 53aa2558f71e..2d60bf501fb5 100644 > --- a/drivers/media/tuners/qm1d1c0042.c > +++ b/drivers/media/tuners/qm1d1c0042.c > @@ -424,14 +424,13 @@ static int qm1d1c0042_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int qm1d1c0042_remove(struct i2c_client *client) > +static void qm1d1c0042_remove(struct i2c_client *client) >  { >         struct qm1d1c0042_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/si2157.c > b/drivers/media/tuners/si2157.c > index 0de587b412d4..476b32c04c20 100644 > --- a/drivers/media/tuners/si2157.c > +++ b/drivers/media/tuners/si2157.c > @@ -951,7 +951,7 @@ static int si2157_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2157_remove(struct i2c_client *client) > +static void si2157_remove(struct i2c_client *client) >  { >         struct si2157_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -969,8 +969,6 @@ static int si2157_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/tuners/tda18212.c > b/drivers/media/tuners/tda18212.c > index bf48f1cd83d2..eb97711c9c68 100644 > --- a/drivers/media/tuners/tda18212.c > +++ b/drivers/media/tuners/tda18212.c > @@ -242,7 +242,7 @@ static int tda18212_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18212_remove(struct i2c_client *client) > +static void tda18212_remove(struct i2c_client *client) >  { >         struct tda18212_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -252,8 +252,6 @@ static int tda18212_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18212_id[] = { > diff --git a/drivers/media/tuners/tda18250.c > b/drivers/media/tuners/tda18250.c > index 8a5781b966ee..e404a5afad4c 100644 > --- a/drivers/media/tuners/tda18250.c > +++ b/drivers/media/tuners/tda18250.c > @@ -856,7 +856,7 @@ static int tda18250_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18250_remove(struct i2c_client *client) > +static void tda18250_remove(struct i2c_client *client) >  { >         struct tda18250_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -866,8 +866,6 @@ static int tda18250_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18250_id_table[] = { > diff --git a/drivers/media/tuners/tua9001.c > b/drivers/media/tuners/tua9001.c > index af7d5ea1f77e..d141d000b819 100644 > --- a/drivers/media/tuners/tua9001.c > +++ b/drivers/media/tuners/tua9001.c > @@ -227,7 +227,7 @@ static int tua9001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tua9001_remove(struct i2c_client *client) > +static void tua9001_remove(struct i2c_client *client) >  { >         struct tua9001_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -243,7 +243,6 @@ static int tua9001_remove(struct i2c_client > *client) >                         dev_err(&client->dev, "Tuner disable failed > (%pe)\n", ERR_PTR(ret)); >         } >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tua9001_id_table[] = { > diff --git a/drivers/media/usb/go7007/s2250-board.c > b/drivers/media/usb/go7007/s2250-board.c > index 1fa6f10ee157..2f45188bf9d4 100644 > --- a/drivers/media/usb/go7007/s2250-board.c > +++ b/drivers/media/usb/go7007/s2250-board.c > @@ -601,7 +601,7 @@ static int s2250_probe(struct i2c_client *client, >         return err; >  } >   > -static int s2250_remove(struct i2c_client *client) > +static void s2250_remove(struct i2c_client *client) >  { >         struct s2250 *state = to_state(i2c_get_clientdata(client)); >   > @@ -609,7 +609,6 @@ static int s2250_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id s2250_id[] = { > diff --git a/drivers/media/v4l2-core/tuner-core.c > b/drivers/media/v4l2-core/tuner-core.c > index 2d47c10de062..33162dc1daf6 100644 > --- a/drivers/media/v4l2-core/tuner-core.c > +++ b/drivers/media/v4l2-core/tuner-core.c > @@ -779,7 +779,7 @@ static int tuner_probe(struct i2c_client *client, >   * @client:    i2c_client descriptor >   */ >   > -static int tuner_remove(struct i2c_client *client) > +static void tuner_remove(struct i2c_client *client) >  { >         struct tuner *t = to_tuner(i2c_get_clientdata(client)); >   > @@ -789,7 +789,6 @@ static int tuner_remove(struct i2c_client > *client) >   >         list_del(&t->list); >         kfree(t); > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c > index eaf9845633b4..a30e47b74327 100644 > --- a/drivers/mfd/88pm800.c > +++ b/drivers/mfd/88pm800.c > @@ -583,7 +583,7 @@ static int pm800_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm800_remove(struct i2c_client *client) > +static void pm800_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -592,8 +592,6 @@ static int pm800_remove(struct i2c_client > *client) >   >         pm800_pages_exit(chip); >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm800_driver = { > diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c > index ada6c513302b..10d3637840c8 100644 > --- a/drivers/mfd/88pm805.c > +++ b/drivers/mfd/88pm805.c > @@ -239,7 +239,7 @@ static int pm805_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm805_remove(struct i2c_client *client) > +static void pm805_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -247,8 +247,6 @@ static int pm805_remove(struct i2c_client > *client) >         device_irq_exit_805(chip); >   >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm805_driver = { > diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x- > core.c > index b1e829ea909b..5dc86dd66202 100644 > --- a/drivers/mfd/88pm860x-core.c > +++ b/drivers/mfd/88pm860x-core.c > @@ -1201,7 +1201,7 @@ static int pm860x_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pm860x_remove(struct i2c_client *client) > +static void pm860x_remove(struct i2c_client *client) >  { >         struct pm860x_chip *chip = i2c_get_clientdata(client); >   > @@ -1210,7 +1210,6 @@ static int pm860x_remove(struct i2c_client > *client) >                 regmap_exit(chip->regmap_companion); >                 i2c_unregister_device(chip->companion); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/acer-ec-a500.c b/drivers/mfd/acer-ec-a500.c > index 80c2fdd14fc4..7fd8b9988075 100644 > --- a/drivers/mfd/acer-ec-a500.c > +++ b/drivers/mfd/acer-ec-a500.c > @@ -169,7 +169,7 @@ static int a500_ec_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int a500_ec_remove(struct i2c_client *client) > +static void a500_ec_remove(struct i2c_client *client) >  { >         if (of_device_is_system_power_controller(client- > >dev.of_node)) { >                 if (pm_power_off == a500_ec_poweroff) > @@ -177,8 +177,6 @@ static int a500_ec_remove(struct i2c_client > *client) >   >                 unregister_restart_handler(&a500_ec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id a500_ec_match[] = { > diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c > index 6d83e6b9a692..bfc7cf56ff2c 100644 > --- a/drivers/mfd/arizona-i2c.c > +++ b/drivers/mfd/arizona-i2c.c > @@ -84,13 +84,11 @@ static int arizona_i2c_probe(struct i2c_client > *i2c, >         return arizona_dev_init(arizona); >  } >   > -static int arizona_i2c_remove(struct i2c_client *i2c) > +static void arizona_i2c_remove(struct i2c_client *i2c) >  { >         struct arizona *arizona = dev_get_drvdata(&i2c->dev); >   >         arizona_dev_exit(arizona); > - > -       return 0; >  } >   >  static const struct i2c_device_id arizona_i2c_id[] = { > diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c > index 00ab48018d8d..8fd6727dc30a 100644 > --- a/drivers/mfd/axp20x-i2c.c > +++ b/drivers/mfd/axp20x-i2c.c > @@ -50,13 +50,11 @@ static int axp20x_i2c_probe(struct i2c_client > *i2c, >         return axp20x_device_probe(axp20x); >  } >   > -static int axp20x_i2c_remove(struct i2c_client *i2c) > +static void axp20x_i2c_remove(struct i2c_client *i2c) >  { >         struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); >   >         axp20x_device_remove(axp20x); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c > index a818fbb55988..3f8f6ad3a98c 100644 > --- a/drivers/mfd/da903x.c > +++ b/drivers/mfd/da903x.c > @@ -532,12 +532,11 @@ static int da903x_probe(struct i2c_client > *client, >         return da903x_add_subdevs(chip, pdata); >  } >   > -static int da903x_remove(struct i2c_client *client) > +static void da903x_remove(struct i2c_client *client) >  { >         struct da903x_chip *chip = i2c_get_clientdata(client); >   >         da903x_remove_subdevs(chip); > -       return 0; >  } >   >  static struct i2c_driver da903x_driver = { > diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c > index 8de93db35f3a..5a74696c8704 100644 > --- a/drivers/mfd/da9052-i2c.c > +++ b/drivers/mfd/da9052-i2c.c > @@ -168,12 +168,11 @@ static int da9052_i2c_probe(struct i2c_client > *client, >         return da9052_device_init(da9052, id->driver_data); >  } >   > -static int da9052_i2c_remove(struct i2c_client *client) > +static void da9052_i2c_remove(struct i2c_client *client) >  { >         struct da9052 *da9052 = i2c_get_clientdata(client); >   >         da9052_device_exit(da9052); > -       return 0; >  } >   >  static struct i2c_driver da9052_i2c_driver = { > diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c > index bc60433b68db..276c7d1c509e 100644 > --- a/drivers/mfd/da9055-i2c.c > +++ b/drivers/mfd/da9055-i2c.c > @@ -41,13 +41,11 @@ static int da9055_i2c_probe(struct i2c_client > *i2c, >         return da9055_device_init(da9055); >  } >   > -static int da9055_i2c_remove(struct i2c_client *i2c) > +static void da9055_i2c_remove(struct i2c_client *i2c) >  { >         struct da9055 *da9055 = i2c_get_clientdata(i2c); >   >         da9055_device_exit(da9055); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c > index 2774b2cbaea6..0a80d82c6858 100644 > --- a/drivers/mfd/da9062-core.c > +++ b/drivers/mfd/da9062-core.c > @@ -723,14 +723,12 @@ static int da9062_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9062_i2c_remove(struct i2c_client *i2c) > +static void da9062_i2c_remove(struct i2c_client *i2c) >  { >         struct da9062 *chip = i2c_get_clientdata(i2c); >   >         mfd_remove_devices(chip->dev); >         regmap_del_irq_chip(i2c->irq, chip->regmap_irq); > - > -       return 0; >  } >   >  static const struct i2c_device_id da9062_i2c_id[] = { > diff --git a/drivers/mfd/da9150-core.c b/drivers/mfd/da9150-core.c > index 58009c8cb870..6ae56e46d24e 100644 > --- a/drivers/mfd/da9150-core.c > +++ b/drivers/mfd/da9150-core.c > @@ -471,15 +471,13 @@ static int da9150_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int da9150_remove(struct i2c_client *client) > +static void da9150_remove(struct i2c_client *client) >  { >         struct da9150 *da9150 = i2c_get_clientdata(client); >   >         regmap_del_irq_chip(da9150->irq, da9150->regmap_irq_data); >         mfd_remove_devices(da9150->dev); >         i2c_unregister_device(da9150->core_qif); > - > -       return 0; >  } >   >  static void da9150_shutdown(struct i2c_client *client) > diff --git a/drivers/mfd/dm355evm_msp.c b/drivers/mfd/dm355evm_msp.c > index 54fb6cbd2aa0..759c59690680 100644 > --- a/drivers/mfd/dm355evm_msp.c > +++ b/drivers/mfd/dm355evm_msp.c > @@ -375,11 +375,10 @@ static void dm355evm_power_off(void) >         dm355evm_command(MSP_COMMAND_POWEROFF); >  } >   > -static int dm355evm_msp_remove(struct i2c_client *client) > +static void dm355evm_msp_remove(struct i2c_client *client) >  { >         pm_power_off = NULL; >         msp430 = NULL; > -       return 0; >  } >   >  static int > diff --git a/drivers/mfd/ene-kb3930.c b/drivers/mfd/ene-kb3930.c > index 1b73318d1f1f..3eff98e26bea 100644 > --- a/drivers/mfd/ene-kb3930.c > +++ b/drivers/mfd/ene-kb3930.c > @@ -177,7 +177,7 @@ static int kb3930_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int kb3930_remove(struct i2c_client *client) > +static void kb3930_remove(struct i2c_client *client) >  { >         struct kb3930 *ddata = i2c_get_clientdata(client); >   > @@ -187,8 +187,6 @@ static int kb3930_remove(struct i2c_client > *client) >                 unregister_restart_handler(&kb3930_restart_nb); >         } >         kb3930_power_off = NULL; > - > -       return 0; >  } >   >  static const struct of_device_id kb3930_dt_ids[] = { > diff --git a/drivers/mfd/gateworks-gsc.c b/drivers/mfd/gateworks- > gsc.c > index d87876747b91..9d7d870c44a8 100644 > --- a/drivers/mfd/gateworks-gsc.c > +++ b/drivers/mfd/gateworks-gsc.c > @@ -255,11 +255,9 @@ static int gsc_probe(struct i2c_client *client) >         return 0; >  } >   > -static int gsc_remove(struct i2c_client *client) > +static void gsc_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &attr_group); > - > -       return 0; >  } >   >  static struct i2c_driver gsc_driver = { > diff --git a/drivers/mfd/intel_soc_pmic_core.c > b/drivers/mfd/intel_soc_pmic_core.c > index 5e8c94e008ed..b824e15f4d22 100644 > --- a/drivers/mfd/intel_soc_pmic_core.c > +++ b/drivers/mfd/intel_soc_pmic_core.c > @@ -81,7 +81,7 @@ static int intel_soc_pmic_i2c_probe(struct > i2c_client *i2c, >         return ret; >  } >   > -static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c) > +static void intel_soc_pmic_i2c_remove(struct i2c_client *i2c) >  { >         struct intel_soc_pmic *pmic = dev_get_drvdata(&i2c->dev); >   > @@ -91,8 +91,6 @@ static int intel_soc_pmic_i2c_remove(struct > i2c_client *i2c) >         pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup)); >   >         mfd_remove_devices(&i2c->dev); > - > -       return 0; >  } >   >  static void intel_soc_pmic_shutdown(struct i2c_client *i2c) > diff --git a/drivers/mfd/iqs62x.c b/drivers/mfd/iqs62x.c > index 575ab67e243d..1895fce25b06 100644 > --- a/drivers/mfd/iqs62x.c > +++ b/drivers/mfd/iqs62x.c > @@ -1008,13 +1008,11 @@ static int iqs62x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int iqs62x_remove(struct i2c_client *client) > +static void iqs62x_remove(struct i2c_client *client) >  { >         struct iqs62x_core *iqs62x = i2c_get_clientdata(client); >   >         wait_for_completion(&iqs62x->fw_done); > - > -       return 0; >  } >   >  static int __maybe_unused iqs62x_suspend(struct device *dev) > diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c > index 5690768f3e63..be32ffc5af38 100644 > --- a/drivers/mfd/lm3533-core.c > +++ b/drivers/mfd/lm3533-core.c > @@ -607,15 +607,13 @@ static int lm3533_i2c_probe(struct i2c_client > *i2c, >         return lm3533_device_init(lm3533); >  } >   > -static int lm3533_i2c_remove(struct i2c_client *i2c) > +static void lm3533_i2c_remove(struct i2c_client *i2c) >  { >         struct lm3533 *lm3533 = i2c_get_clientdata(i2c); >   >         dev_dbg(&i2c->dev, "%s\n", __func__); >   >         lm3533_device_exit(lm3533); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3533_i2c_ids[] = { > diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c > index c223d2c6a363..e7c601bca9ef 100644 > --- a/drivers/mfd/lp8788.c > +++ b/drivers/mfd/lp8788.c > @@ -199,13 +199,12 @@ static int lp8788_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >                                ARRAY_SIZE(lp8788_devs), NULL, 0, > NULL); >  } >   > -static int lp8788_remove(struct i2c_client *cl) > +static void lp8788_remove(struct i2c_client *cl) >  { >         struct lp8788 *lp = i2c_get_clientdata(cl); >   >         mfd_remove_devices(lp->dev); >         lp8788_irq_exit(lp); > -       return 0; >  } >   >  static const struct i2c_device_id lp8788_ids[] = { > diff --git a/drivers/mfd/madera-i2c.c b/drivers/mfd/madera-i2c.c > index 7df5b9ba5855..915d2f95bad3 100644 > --- a/drivers/mfd/madera-i2c.c > +++ b/drivers/mfd/madera-i2c.c > @@ -112,13 +112,11 @@ static int madera_i2c_probe(struct i2c_client > *i2c, >         return madera_dev_init(madera); >  } >   > -static int madera_i2c_remove(struct i2c_client *i2c) > +static void madera_i2c_remove(struct i2c_client *i2c) >  { >         struct madera *madera = dev_get_drvdata(&i2c->dev); >   >         madera_dev_exit(madera); > - > -       return 0; >  } >   >  static const struct i2c_device_id madera_i2c_id[] = { > diff --git a/drivers/mfd/max14577.c b/drivers/mfd/max14577.c > index 6c487fa14e9c..d44ad6f33742 100644 > --- a/drivers/mfd/max14577.c > +++ b/drivers/mfd/max14577.c > @@ -463,7 +463,7 @@ static int max14577_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max14577_i2c_remove(struct i2c_client *i2c) > +static void max14577_i2c_remove(struct i2c_client *i2c) >  { >         struct max14577 *max14577 = i2c_get_clientdata(i2c); >   > @@ -471,8 +471,6 @@ static int max14577_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max14577->irq, max14577->irq_data); >         if (max14577->dev_type == MAXIM_DEVICE_TYPE_MAX77836) >                 max77836_remove(max14577); > - > -       return 0; >  } >   >  static const struct i2c_device_id max14577_i2c_id[] = { > diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c > index 4e6244e17559..7088cb6f9174 100644 > --- a/drivers/mfd/max77693.c > +++ b/drivers/mfd/max77693.c > @@ -294,7 +294,7 @@ static int max77693_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max77693_i2c_remove(struct i2c_client *i2c) > +static void max77693_i2c_remove(struct i2c_client *i2c) >  { >         struct max77693_dev *max77693 = i2c_get_clientdata(i2c); >   > @@ -307,8 +307,6 @@ static int max77693_i2c_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(max77693->i2c_muic); >         i2c_unregister_device(max77693->i2c_haptic); > - > -       return 0; >  } >   >  static const struct i2c_device_id max77693_i2c_id[] = { > diff --git a/drivers/mfd/max8907.c b/drivers/mfd/max8907.c > index 41f566e6a096..c340080971ce 100644 > --- a/drivers/mfd/max8907.c > +++ b/drivers/mfd/max8907.c > @@ -282,7 +282,7 @@ static int max8907_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max8907_i2c_remove(struct i2c_client *i2c) > +static void max8907_i2c_remove(struct i2c_client *i2c) >  { >         struct max8907 *max8907 = i2c_get_clientdata(i2c); >   > @@ -293,8 +293,6 @@ static int max8907_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max8907->i2c_gen->irq, max8907- > >irqc_chg); >   >         i2c_unregister_device(max8907->i2c_rtc); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c > index 114e905bef25..04101da42bd3 100644 > --- a/drivers/mfd/max8925-i2c.c > +++ b/drivers/mfd/max8925-i2c.c > @@ -198,14 +198,13 @@ static int max8925_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int max8925_remove(struct i2c_client *client) > +static void max8925_remove(struct i2c_client *client) >  { >         struct max8925_chip *chip = i2c_get_clientdata(client); >   >         max8925_device_exit(chip); >         i2c_unregister_device(chip->adc); >         i2c_unregister_device(chip->rtc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c > index fb937f66277e..eb94f3004cf3 100644 > --- a/drivers/mfd/mc13xxx-i2c.c > +++ b/drivers/mfd/mc13xxx-i2c.c > @@ -85,10 +85,9 @@ static int mc13xxx_i2c_probe(struct i2c_client > *client, >         return mc13xxx_common_init(&client->dev); >  } >   > -static int mc13xxx_i2c_remove(struct i2c_client *client) > +static void mc13xxx_i2c_remove(struct i2c_client *client) >  { >         mc13xxx_common_exit(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver mc13xxx_i2c_driver = { > diff --git a/drivers/mfd/menelaus.c b/drivers/mfd/menelaus.c > index 07e0ca2e467c..eb08f69001f9 100644 > --- a/drivers/mfd/menelaus.c > +++ b/drivers/mfd/menelaus.c > @@ -1222,14 +1222,13 @@ static int menelaus_probe(struct i2c_client > *client, >         return err; >  } >   > -static int menelaus_remove(struct i2c_client *client) > +static void menelaus_remove(struct i2c_client *client) >  { >         struct menelaus_chip    *menelaus = > i2c_get_clientdata(client); >   >         free_irq(client->irq, menelaus); >         flush_work(&menelaus->work); >         the_menelaus = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id menelaus_id[] = { > diff --git a/drivers/mfd/ntxec.c b/drivers/mfd/ntxec.c > index b711e73eedcb..e16a7a82a929 100644 > --- a/drivers/mfd/ntxec.c > +++ b/drivers/mfd/ntxec.c > @@ -239,15 +239,13 @@ static int ntxec_probe(struct i2c_client > *client) >         return res; >  } >   > -static int ntxec_remove(struct i2c_client *client) > +static void ntxec_remove(struct i2c_client *client) >  { >         if (client == poweroff_restart_client) { >                 poweroff_restart_client = NULL; >                 pm_power_off = NULL; >                 unregister_restart_handler(&ntxec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id of_ntxec_match_table[] = { > diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c > index f5b3fa973b13..8b7429bd2e3e 100644 > --- a/drivers/mfd/palmas.c > +++ b/drivers/mfd/palmas.c > @@ -700,7 +700,7 @@ static int palmas_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int palmas_i2c_remove(struct i2c_client *i2c) > +static void palmas_i2c_remove(struct i2c_client *i2c) >  { >         struct palmas *palmas = i2c_get_clientdata(i2c); >         int i; > @@ -716,8 +716,6 @@ static int palmas_i2c_remove(struct i2c_client > *i2c) >                 pm_power_off = NULL; >                 palmas_dev = NULL; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id palmas_i2c_id[] = { > diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633- > core.c > index e9c565cf0f54..4ccc2c3e7681 100644 > --- a/drivers/mfd/pcf50633-core.c > +++ b/drivers/mfd/pcf50633-core.c > @@ -273,7 +273,7 @@ static int pcf50633_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pcf50633_remove(struct i2c_client *client) > +static void pcf50633_remove(struct i2c_client *client) >  { >         struct pcf50633 *pcf = i2c_get_clientdata(client); >         int i; > @@ -289,8 +289,6 @@ static int pcf50633_remove(struct i2c_client > *client) >   >         for (i = 0; i < PCF50633_NUM_REGULATORS; i++) >                 platform_device_unregister(pcf->regulator_pdev[i]); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcf50633_id_table[] = { > diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c > index c748fd29a220..3b5acf7ca39c 100644 > --- a/drivers/mfd/retu-mfd.c > +++ b/drivers/mfd/retu-mfd.c > @@ -287,7 +287,7 @@ static int retu_probe(struct i2c_client *i2c, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int retu_remove(struct i2c_client *i2c) > +static void retu_remove(struct i2c_client *i2c) >  { >         struct retu_dev *rdev = i2c_get_clientdata(i2c); >   > @@ -297,8 +297,6 @@ static int retu_remove(struct i2c_client *i2c) >         } >         mfd_remove_devices(rdev->dev); >         regmap_del_irq_chip(i2c->irq, rdev->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id retu_id[] = { > diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c > index 4142b638e5fa..d5d641efa077 100644 > --- a/drivers/mfd/rk808.c > +++ b/drivers/mfd/rk808.c > @@ -778,7 +778,7 @@ static int rk808_probe(struct i2c_client *client, >         return ret; >  } >   > -static int rk808_remove(struct i2c_client *client) > +static void rk808_remove(struct i2c_client *client) >  { >         struct rk808 *rk808 = i2c_get_clientdata(client); >   > @@ -792,8 +792,6 @@ static int rk808_remove(struct i2c_client > *client) >                 pm_power_off = NULL; >   >         unregister_restart_handler(&rk808_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rk8xx_suspend(struct device *dev) > diff --git a/drivers/mfd/rn5t618.c b/drivers/mfd/rn5t618.c > index 384acb459427..eb8005b4e58d 100644 > --- a/drivers/mfd/rn5t618.c > +++ b/drivers/mfd/rn5t618.c > @@ -241,7 +241,7 @@ static int rn5t618_i2c_probe(struct i2c_client > *i2c) >         return rn5t618_irq_init(priv); >  } >   > -static int rn5t618_i2c_remove(struct i2c_client *i2c) > +static void rn5t618_i2c_remove(struct i2c_client *i2c) >  { >         if (i2c == rn5t618_pm_power_off) { >                 rn5t618_pm_power_off = NULL; > @@ -249,8 +249,6 @@ static int rn5t618_i2c_remove(struct i2c_client > *i2c) >         } >   >         unregister_restart_handler(&rn5t618_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rn5t618_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/rsmu_i2c.c b/drivers/mfd/rsmu_i2c.c > index dc001c9791c1..f716ab8039a0 100644 > --- a/drivers/mfd/rsmu_i2c.c > +++ b/drivers/mfd/rsmu_i2c.c > @@ -146,13 +146,11 @@ static int rsmu_i2c_probe(struct i2c_client > *client, >         return rsmu_core_init(rsmu); >  } >   > -static int rsmu_i2c_remove(struct i2c_client *client) > +static void rsmu_i2c_remove(struct i2c_client *client) >  { >         struct rsmu_ddata *rsmu = i2c_get_clientdata(client); >   >         rsmu_core_exit(rsmu); > - > -       return 0; >  } >   >  static const struct i2c_device_id rsmu_i2c_id[] = { > diff --git a/drivers/mfd/rt4831.c b/drivers/mfd/rt4831.c > index fb3bd788a3eb..c6d34dc2b520 100644 > --- a/drivers/mfd/rt4831.c > +++ b/drivers/mfd/rt4831.c > @@ -87,7 +87,7 @@ static int rt4831_probe(struct i2c_client *client) >                                     ARRAY_SIZE(rt4831_subdevs), NULL, > 0, NULL); >  } >   > -static int rt4831_remove(struct i2c_client *client) > +static void rt4831_remove(struct i2c_client *client) >  { >         struct regmap *regmap = dev_get_regmap(&client->dev, NULL); >         int ret; > @@ -96,8 +96,6 @@ static int rt4831_remove(struct i2c_client *client) >         ret = regmap_update_bits(regmap, RT4831_REG_ENABLE, > RT4831_RESET_MASK, RT4831_RESET_MASK); >         if (ret) >                 dev_warn(&client->dev, "Failed to disable outputs > (%pe)\n", ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused rt4831_of_match[] = > { > diff --git a/drivers/mfd/si476x-i2c.c b/drivers/mfd/si476x-i2c.c > index a2635c2d9d1a..8166949b725c 100644 > --- a/drivers/mfd/si476x-i2c.c > +++ b/drivers/mfd/si476x-i2c.c > @@ -835,7 +835,7 @@ static int si476x_core_probe(struct i2c_client > *client, >         return rval; >  } >   > -static int si476x_core_remove(struct i2c_client *client) > +static void si476x_core_remove(struct i2c_client *client) >  { >         struct si476x_core *core = i2c_get_clientdata(client); >   > @@ -851,8 +851,6 @@ static int si476x_core_remove(struct i2c_client > *client) >   >         if (gpio_is_valid(core->gpio_reset)) >                 gpio_free(core->gpio_reset); > - > -       return 0; >  } >   >   > diff --git a/drivers/mfd/stmfx.c b/drivers/mfd/stmfx.c > index 122f96094410..5dd7d9688459 100644 > --- a/drivers/mfd/stmfx.c > +++ b/drivers/mfd/stmfx.c > @@ -467,13 +467,11 @@ static int stmfx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stmfx_remove(struct i2c_client *client) > +static void stmfx_remove(struct i2c_client *client) >  { >         stmfx_irq_exit(client); >   >         stmfx_chip_exit(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c > index d3eedf3d607e..4d55494a97c4 100644 > --- a/drivers/mfd/stmpe-i2c.c > +++ b/drivers/mfd/stmpe-i2c.c > @@ -91,13 +91,11 @@ stmpe_i2c_probe(struct i2c_client *i2c, const > struct i2c_device_id *id) >         return stmpe_probe(&i2c_ci, partnum); >  } >   > -static int stmpe_i2c_remove(struct i2c_client *i2c) > +static void stmpe_i2c_remove(struct i2c_client *i2c) >  { >         struct stmpe *stmpe = dev_get_drvdata(&i2c->dev); >   >         stmpe_remove(stmpe); > - > -       return 0; >  } >   >  static const struct i2c_device_id stmpe_i2c_id[] = { > diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c > index 13583cdb93b6..d5d0ec117acb 100644 > --- a/drivers/mfd/tc3589x.c > +++ b/drivers/mfd/tc3589x.c > @@ -429,13 +429,11 @@ static int tc3589x_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int tc3589x_remove(struct i2c_client *client) > +static void tc3589x_remove(struct i2c_client *client) >  { >         struct tc3589x *tc3589x = i2c_get_clientdata(client); >   >         mfd_remove_devices(tc3589x->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/tps6105x.c b/drivers/mfd/tps6105x.c > index c906324d293e..b360568ea675 100644 > --- a/drivers/mfd/tps6105x.c > +++ b/drivers/mfd/tps6105x.c > @@ -179,7 +179,7 @@ static int tps6105x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6105x_remove(struct i2c_client *client) > +static void tps6105x_remove(struct i2c_client *client) >  { >         struct tps6105x *tps6105x = i2c_get_clientdata(client); >   > @@ -189,8 +189,6 @@ static int tps6105x_remove(struct i2c_client > *client) >         regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0, >                 TPS6105X_REG0_MODE_MASK, >                 TPS6105X_MODE_SHUTDOWN << TPS6105X_REG0_MODE_SHIFT); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps6105x_id[] = { > diff --git a/drivers/mfd/tps65010.c b/drivers/mfd/tps65010.c > index 7e7dbee58ca9..c2afa2e69f42 100644 > --- a/drivers/mfd/tps65010.c > +++ b/drivers/mfd/tps65010.c > @@ -501,7 +501,7 @@ static int tps65010_gpio_get(struct gpio_chip > *chip, unsigned offset) >   >  static struct tps65010 *the_tps; >   > -static int tps65010_remove(struct i2c_client *client) > +static void tps65010_remove(struct i2c_client *client) >  { >         struct tps65010         *tps = i2c_get_clientdata(client); >         struct tps65010_board   *board = dev_get_platdata(&client- > >dev); > @@ -517,7 +517,6 @@ static int tps65010_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&tps->work); >         debugfs_remove(tps->file); >         the_tps = NULL; > -       return 0; >  } >   >  static int tps65010_probe(struct i2c_client *client, > diff --git a/drivers/mfd/tps65086.c b/drivers/mfd/tps65086.c > index 3bd5728844a0..eb5afbeb0e91 100644 > --- a/drivers/mfd/tps65086.c > +++ b/drivers/mfd/tps65086.c > @@ -119,14 +119,12 @@ static int tps65086_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps65086_remove(struct i2c_client *client) > +static void tps65086_remove(struct i2c_client *client) >  { >         struct tps65086 *tps = i2c_get_clientdata(client); >   >         if (tps->irq > 0) >                 regmap_del_irq_chip(tps->irq, tps->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65086_id_table[] = { > diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c > index 8027b0a9e14f..a7200ddd85e6 100644 > --- a/drivers/mfd/tps65217.c > +++ b/drivers/mfd/tps65217.c > @@ -382,7 +382,7 @@ static int tps65217_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps65217_remove(struct i2c_client *client) > +static void tps65217_remove(struct i2c_client *client) >  { >         struct tps65217 *tps = i2c_get_clientdata(client); >         unsigned int virq; > @@ -396,8 +396,6 @@ static int tps65217_remove(struct i2c_client > *client) >   >         irq_domain_remove(tps->irq_domain); >         tps->irq_domain = NULL; > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65217_id_table[] = { > diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c > index c9303d3d6602..fb340da64bbc 100644 > --- a/drivers/mfd/tps6586x.c > +++ b/drivers/mfd/tps6586x.c > @@ -579,7 +579,7 @@ static int tps6586x_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6586x_i2c_remove(struct i2c_client *client) > +static void tps6586x_i2c_remove(struct i2c_client *client) >  { >         struct tps6586x *tps6586x = i2c_get_clientdata(client); >   > @@ -587,7 +587,6 @@ static int tps6586x_i2c_remove(struct i2c_client > *client) >         mfd_remove_devices(tps6586x->dev); >         if (client->irq) >                 free_irq(client->irq, tps6586x); > -       return 0; >  } >   >  static int __maybe_unused tps6586x_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/tps65912-i2c.c b/drivers/mfd/tps65912-i2c.c > index 06eb2784d322..cbbac1567eaa 100644 > --- a/drivers/mfd/tps65912-i2c.c > +++ b/drivers/mfd/tps65912-i2c.c > @@ -51,13 +51,11 @@ static int tps65912_i2c_probe(struct i2c_client > *client, >         return tps65912_device_init(tps); >  } >   > -static int tps65912_i2c_remove(struct i2c_client *client) > +static void tps65912_i2c_remove(struct i2c_client *client) >  { >         struct tps65912 *tps = i2c_get_clientdata(client); >   >         tps65912_device_exit(tps); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65912_i2c_id_table[] = { > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c > index bd6659cf3bc0..89a96db15b33 100644 > --- a/drivers/mfd/twl-core.c > +++ b/drivers/mfd/twl-core.c > @@ -1033,7 +1033,7 @@ static void clocks_init(struct device *dev, >  /*------------------------------------------------------------------ > ----*/ >   >   > -static int twl_remove(struct i2c_client *client) > +static void twl_remove(struct i2c_client *client) >  { >         unsigned i, num_slaves; >   > @@ -1051,7 +1051,6 @@ static int twl_remove(struct i2c_client > *client) >                 twl->client = NULL; >         } >         twl_priv->ready = false; > -       return 0; >  } >   >  static struct of_dev_auxdata twl_auxdata_lookup[] = { > diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c > index b9c6d94b4002..f429b8f00db6 100644 > --- a/drivers/mfd/twl6040.c > +++ b/drivers/mfd/twl6040.c > @@ -808,7 +808,7 @@ static int twl6040_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int twl6040_remove(struct i2c_client *client) > +static void twl6040_remove(struct i2c_client *client) >  { >         struct twl6040 *twl6040 = i2c_get_clientdata(client); >   > @@ -820,8 +820,6 @@ static int twl6040_remove(struct i2c_client > *client) >         mfd_remove_devices(&client->dev); >   >         regulator_bulk_disable(TWL6040_NUM_SUPPLIES, twl6040- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id twl6040_i2c_id[] = { > diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c > index 7b1d270722ba..7e88f5b0abe6 100644 > --- a/drivers/mfd/wm8994-core.c > +++ b/drivers/mfd/wm8994-core.c > @@ -657,13 +657,11 @@ static int wm8994_i2c_probe(struct i2c_client > *i2c, >         return wm8994_device_init(wm8994, i2c->irq); >  } >   > -static int wm8994_i2c_remove(struct i2c_client *i2c) > +static void wm8994_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8994 *wm8994 = i2c_get_clientdata(i2c); >   >         wm8994_device_exit(wm8994); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8994_i2c_id[] = { > diff --git a/drivers/misc/ad525x_dpot-i2c.c > b/drivers/misc/ad525x_dpot-i2c.c > index 0ee0c6d808c3..28ffb4377d98 100644 > --- a/drivers/misc/ad525x_dpot-i2c.c > +++ b/drivers/misc/ad525x_dpot-i2c.c > @@ -67,10 +67,9 @@ static int ad_dpot_i2c_probe(struct i2c_client > *client, >         return ad_dpot_probe(&client->dev, &bdata, id->driver_data, > id->name); >  } >   > -static int ad_dpot_i2c_remove(struct i2c_client *client) > +static void ad_dpot_i2c_remove(struct i2c_client *client) >  { >         ad_dpot_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id ad_dpot_id[] = { > diff --git a/drivers/misc/apds9802als.c b/drivers/misc/apds9802als.c > index 6fff44b952bd..a32431f4b370 100644 > --- a/drivers/misc/apds9802als.c > +++ b/drivers/misc/apds9802als.c > @@ -242,7 +242,7 @@ static int apds9802als_probe(struct i2c_client > *client, >         return res; >  } >   > -static int apds9802als_remove(struct i2c_client *client) > +static void apds9802als_remove(struct i2c_client *client) >  { >         struct als_data *data = i2c_get_clientdata(client); >   > @@ -256,7 +256,6 @@ static int apds9802als_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         kfree(data); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/misc/apds990x.c b/drivers/misc/apds990x.c > index 45f5b997a0e1..e2100cc42ce8 100644 > --- a/drivers/misc/apds990x.c > +++ b/drivers/misc/apds990x.c > @@ -1185,7 +1185,7 @@ static int apds990x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int apds990x_remove(struct i2c_client *client) > +static void apds990x_remove(struct i2c_client *client) >  { >         struct apds990x_chip *chip = i2c_get_clientdata(client); >   > @@ -1205,7 +1205,6 @@ static int apds990x_remove(struct i2c_client > *client) >         regulator_bulk_free(ARRAY_SIZE(chip->regs), chip->regs); >   >         kfree(chip); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/bh1770glc.c b/drivers/misc/bh1770glc.c > index 0581bb9cef2e..d0dfa674414c 100644 > --- a/drivers/misc/bh1770glc.c > +++ b/drivers/misc/bh1770glc.c > @@ -1280,7 +1280,7 @@ static int bh1770_probe(struct i2c_client > *client, >         return err; >  } >   > -static int bh1770_remove(struct i2c_client *client) > +static void bh1770_remove(struct i2c_client *client) >  { >         struct bh1770_chip *chip = i2c_get_clientdata(client); >   > @@ -1299,8 +1299,6 @@ static int bh1770_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/ds1682.c b/drivers/misc/ds1682.c > index 42f316c2d719..0698ddc5f4d5 100644 > --- a/drivers/misc/ds1682.c > +++ b/drivers/misc/ds1682.c > @@ -228,11 +228,10 @@ static int ds1682_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int ds1682_remove(struct i2c_client *client) > +static void ds1682_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, > &ds1682_eeprom_attr); >         sysfs_remove_group(&client->dev.kobj, &ds1682_group); > -       return 0; >  } >   >  static const struct i2c_device_id ds1682_id[] = { > diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c > index 633e1cf08d6e..938c4f41b98c 100644 > --- a/drivers/misc/eeprom/at24.c > +++ b/drivers/misc/eeprom/at24.c > @@ -791,7 +791,7 @@ static int at24_probe(struct i2c_client *client) >         return 0; >  } >   > -static int at24_remove(struct i2c_client *client) > +static void at24_remove(struct i2c_client *client) >  { >         struct at24_data *at24 = i2c_get_clientdata(client); >   > @@ -801,8 +801,6 @@ static int at24_remove(struct i2c_client *client) >                         regulator_disable(at24->vcc_reg); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static int __maybe_unused at24_suspend(struct device *dev) > diff --git a/drivers/misc/eeprom/ee1004.c > b/drivers/misc/eeprom/ee1004.c > index 9fbfe784d710..c8c6deb7ed89 100644 > --- a/drivers/misc/eeprom/ee1004.c > +++ b/drivers/misc/eeprom/ee1004.c > @@ -219,14 +219,12 @@ static int ee1004_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ee1004_remove(struct i2c_client *client) > +static void ee1004_remove(struct i2c_client *client) >  { >         /* Remove page select clients if this is the last device */ >         mutex_lock(&ee1004_bus_lock); >         ee1004_cleanup(EE1004_NUM_PAGES); >         mutex_unlock(&ee1004_bus_lock); > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/misc/eeprom/eeprom.c > b/drivers/misc/eeprom/eeprom.c > index 34fa385dfd4b..4a9445fea93d 100644 > --- a/drivers/misc/eeprom/eeprom.c > +++ b/drivers/misc/eeprom/eeprom.c > @@ -183,11 +183,9 @@ static int eeprom_probe(struct i2c_client > *client, >         return sysfs_create_bin_file(&client->dev.kobj, > &eeprom_attr); >  } >   > -static int eeprom_remove(struct i2c_client *client) > +static void eeprom_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom_attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id eeprom_id[] = { > diff --git a/drivers/misc/eeprom/idt_89hpesx.c > b/drivers/misc/eeprom/idt_89hpesx.c > index b0cff4b152da..0c23e909bc3e 100644 > --- a/drivers/misc/eeprom/idt_89hpesx.c > +++ b/drivers/misc/eeprom/idt_89hpesx.c > @@ -1401,7 +1401,7 @@ static int idt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >  /* >   * idt_remove() - IDT 89HPESx driver remove() callback method >   */ > -static int idt_remove(struct i2c_client *client) > +static void idt_remove(struct i2c_client *client) >  { >         struct idt_89hpesx_dev *pdev = i2c_get_clientdata(client); >   > @@ -1413,8 +1413,6 @@ static int idt_remove(struct i2c_client > *client) >   >         /* Discard driver data structure */ >         idt_free_pdev(pdev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/misc/eeprom/max6875.c > b/drivers/misc/eeprom/max6875.c > index 9da81f6d4a1c..6bd4f4339af4 100644 > --- a/drivers/misc/eeprom/max6875.c > +++ b/drivers/misc/eeprom/max6875.c > @@ -173,7 +173,7 @@ static int max6875_probe(struct i2c_client > *client, >         return err; >  } >   > -static int max6875_remove(struct i2c_client *client) > +static void max6875_remove(struct i2c_client *client) >  { >         struct max6875_data *data = i2c_get_clientdata(client); >   > @@ -181,8 +181,6 @@ static int max6875_remove(struct i2c_client > *client) >   >         sysfs_remove_bin_file(&client->dev.kobj, &user_eeprom_attr); >         kfree(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id max6875_id[] = { > diff --git a/drivers/misc/hmc6352.c b/drivers/misc/hmc6352.c > index 572a2ff10f00..42b9adef28a3 100644 > --- a/drivers/misc/hmc6352.c > +++ b/drivers/misc/hmc6352.c > @@ -116,10 +116,9 @@ static int hmc6352_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int hmc6352_remove(struct i2c_client *client) > +static void hmc6352_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &m_compass_gr); > -       return 0; >  } >   >  static const struct i2c_device_id hmc6352_id[] = { > diff --git a/drivers/misc/ics932s401.c b/drivers/misc/ics932s401.c > index 0f9ea75b0b18..2c4bb6d6e1a0 100644 > --- a/drivers/misc/ics932s401.c > +++ b/drivers/misc/ics932s401.c > @@ -93,7 +93,7 @@ static int ics932s401_probe(struct i2c_client > *client, >                          const struct i2c_device_id *id); >  static int ics932s401_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int ics932s401_remove(struct i2c_client *client); > +static void ics932s401_remove(struct i2c_client *client); >   >  static const struct i2c_device_id ics932s401_id[] = { >         { "ics932s401", 0 }, > @@ -460,13 +460,12 @@ static int ics932s401_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ics932s401_remove(struct i2c_client *client) > +static void ics932s401_remove(struct i2c_client *client) >  { >         struct ics932s401_data *data = i2c_get_clientdata(client); >   >         sysfs_remove_group(&client->dev.kobj, &data->attrs); >         kfree(data); > -       return 0; >  } >   >  module_i2c_driver(ics932s401_driver); > diff --git a/drivers/misc/isl29003.c b/drivers/misc/isl29003.c > index 703d20e83ebd..8ab61be79c76 100644 > --- a/drivers/misc/isl29003.c > +++ b/drivers/misc/isl29003.c > @@ -410,12 +410,11 @@ static int isl29003_probe(struct i2c_client > *client, >         return err; >  } >   > -static int isl29003_remove(struct i2c_client *client) > +static void isl29003_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &isl29003_attr_group); >         isl29003_set_power_state(client, 0); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c > index fc5ff2805b94..c6f2a94f501a 100644 > --- a/drivers/misc/isl29020.c > +++ b/drivers/misc/isl29020.c > @@ -171,11 +171,10 @@ static int  isl29020_probe(struct i2c_client > *client, >         return res; >  } >   > -static int isl29020_remove(struct i2c_client *client) > +static void isl29020_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); >         sysfs_remove_group(&client->dev.kobj, &m_als_gr); > -       return 0; >  } >   >  static const struct i2c_device_id isl29020_id[] = { > diff --git a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > index 52555d2e824b..d7daa01fe7ca 100644 > --- a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > +++ b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > @@ -177,7 +177,7 @@ static int lis3lv02d_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lis3lv02d_i2c_remove(struct i2c_client *client) > +static void lis3lv02d_i2c_remove(struct i2c_client *client) >  { >         struct lis3lv02d *lis3 = i2c_get_clientdata(client); >         struct lis3lv02d_platform_data *pdata = client- > >dev.platform_data; > @@ -190,7 +190,6 @@ static int lis3lv02d_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_free(ARRAY_SIZE(lis3->regulators), >                             lis3_dev.regulators); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/tsl2550.c b/drivers/misc/tsl2550.c > index 6d71865c8042..1652fb9b3856 100644 > --- a/drivers/misc/tsl2550.c > +++ b/drivers/misc/tsl2550.c > @@ -389,7 +389,7 @@ static int tsl2550_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2550_remove(struct i2c_client *client) > +static void tsl2550_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &tsl2550_attr_group); >   > @@ -397,8 +397,6 @@ static int tsl2550_remove(struct i2c_client > *client) >         tsl2550_set_power_state(client, 0); >   >         kfree(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c > index 946ba80f9758..5fcefcd0baca 100644 > --- a/drivers/mtd/maps/pismo.c > +++ b/drivers/mtd/maps/pismo.c > @@ -195,7 +195,7 @@ static void pismo_add_one(struct pismo_data > *pismo, int i, >         } >  } >   > -static int pismo_remove(struct i2c_client *client) > +static void pismo_remove(struct i2c_client *client) >  { >         struct pismo_data *pismo = i2c_get_clientdata(client); >         int i; > @@ -204,8 +204,6 @@ static int pismo_remove(struct i2c_client > *client) >                 platform_device_unregister(pismo->dev[i]); >   >         kfree(pismo); > - > -       return 0; >  } >   >  static int pismo_probe(struct i2c_client *client, > diff --git a/drivers/net/dsa/lan9303_i2c.c > b/drivers/net/dsa/lan9303_i2c.c > index 8ca4713310fa..b25e91b26d99 100644 > --- a/drivers/net/dsa/lan9303_i2c.c > +++ b/drivers/net/dsa/lan9303_i2c.c > @@ -65,18 +65,16 @@ static int lan9303_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lan9303_i2c_remove(struct i2c_client *client) > +static void lan9303_i2c_remove(struct i2c_client *client) >  { >         struct lan9303_i2c *sw_dev = i2c_get_clientdata(client); >   >         if (!sw_dev) > -               return 0; > +               return; >   >         lan9303_remove(&sw_dev->chip); >   >         i2c_set_clientdata(client, NULL); > - > -       return 0; >  } >   >  static void lan9303_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/net/dsa/microchip/ksz9477_i2c.c > b/drivers/net/dsa/microchip/ksz9477_i2c.c > index faa3163c86b0..ef9d3cc4b15a 100644 > --- a/drivers/net/dsa/microchip/ksz9477_i2c.c > +++ b/drivers/net/dsa/microchip/ksz9477_i2c.c > @@ -52,7 +52,7 @@ static int ksz9477_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int ksz9477_i2c_remove(struct i2c_client *i2c) > +static void ksz9477_i2c_remove(struct i2c_client *i2c) >  { >         struct ksz_device *dev = i2c_get_clientdata(i2c); >   > @@ -60,8 +60,6 @@ static int ksz9477_i2c_remove(struct i2c_client > *i2c) >                 ksz_switch_remove(dev); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void ksz9477_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > index 6deae388a0d6..bbaf5a3fbf00 100644 > --- a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > +++ b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > @@ -105,18 +105,16 @@ static int xrs700x_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int xrs700x_i2c_remove(struct i2c_client *i2c) > +static void xrs700x_i2c_remove(struct i2c_client *i2c) >  { >         struct xrs700x *priv = i2c_get_clientdata(i2c); >   >         if (!priv) > -               return 0; > +               return; >   >         xrs700x_switch_remove(priv); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void xrs700x_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > index ce843ea91464..50b7121a5e3c 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > @@ -656,14 +656,12 @@ static int mlxsw_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mlxsw_i2c_remove(struct i2c_client *client) > +static void mlxsw_i2c_remove(struct i2c_client *client) >  { >         struct mlxsw_i2c *mlxsw_i2c = i2c_get_clientdata(client); >   >         mlxsw_core_bus_device_unregister(mlxsw_i2c->core, false); >         mutex_destroy(&mlxsw_i2c->cmd.lock); > - > -       return 0; >  } >   >  int mlxsw_i2c_driver_register(struct i2c_driver *i2c_driver) > diff --git a/drivers/net/mctp/mctp-i2c.c b/drivers/net/mctp/mctp- > i2c.c > index 53846c6b56ca..670ad9b306fe 100644 > --- a/drivers/net/mctp/mctp-i2c.c > +++ b/drivers/net/mctp/mctp-i2c.c > @@ -986,7 +986,7 @@ static int mctp_i2c_probe(struct i2c_client > *client) >         return rc; >  } >   > -static int mctp_i2c_remove(struct i2c_client *client) > +static void mctp_i2c_remove(struct i2c_client *client) >  { >         struct mctp_i2c_client *mcli = i2c_get_clientdata(client); >         struct mctp_i2c_dev *midev = NULL, *tmp = NULL; > @@ -1000,7 +1000,6 @@ static int mctp_i2c_remove(struct i2c_client > *client) >         mctp_i2c_free_client(mcli); >         mutex_unlock(&driver_clients_lock); >         /* Callers ignore return code */ > -       return 0; >  } >   >  /* We look for a 'mctp-controller' property on I2C busses as they > are > diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c > index 28a9e1eb9bcf..2d53e0f88d2f 100644 > --- a/drivers/nfc/fdp/i2c.c > +++ b/drivers/nfc/fdp/i2c.c > @@ -336,14 +336,12 @@ static int fdp_nci_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fdp_nci_i2c_remove(struct i2c_client *client) > +static void fdp_nci_i2c_remove(struct i2c_client *client) >  { >         struct fdp_i2c_phy *phy = i2c_get_clientdata(client); >   >         fdp_nci_remove(phy->ndev); >         fdp_nci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct acpi_device_id fdp_nci_i2c_acpi_match[] = { > diff --git a/drivers/nfc/microread/i2c.c > b/drivers/nfc/microread/i2c.c > index 067295124eb9..5eaa18f81355 100644 > --- a/drivers/nfc/microread/i2c.c > +++ b/drivers/nfc/microread/i2c.c > @@ -268,15 +268,13 @@ static int microread_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int microread_i2c_remove(struct i2c_client *client) > +static void microread_i2c_remove(struct i2c_client *client) >  { >         struct microread_i2c_phy *phy = i2c_get_clientdata(client); >   >         microread_remove(phy->hdev); >   >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id microread_i2c_id[] = { > diff --git a/drivers/nfc/nfcmrvl/i2c.c b/drivers/nfc/nfcmrvl/i2c.c > index ceef81d93ac9..61f1e2019c0a 100644 > --- a/drivers/nfc/nfcmrvl/i2c.c > +++ b/drivers/nfc/nfcmrvl/i2c.c > @@ -231,13 +231,11 @@ static int nfcmrvl_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int nfcmrvl_i2c_remove(struct i2c_client *client) > +static void nfcmrvl_i2c_remove(struct i2c_client *client) >  { >         struct nfcmrvl_i2c_drv_data *drv_data = > i2c_get_clientdata(client); >   >         nfcmrvl_nci_unregister_dev(drv_data->priv); > - > -       return 0; >  } >   >   > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c > index 7e451c10985d..82a2e2fb1472 100644 > --- a/drivers/nfc/nxp-nci/i2c.c > +++ b/drivers/nfc/nxp-nci/i2c.c > @@ -307,14 +307,12 @@ static int nxp_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int nxp_nci_i2c_remove(struct i2c_client *client) > +static void nxp_nci_i2c_remove(struct i2c_client *client) >  { >         struct nxp_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         nxp_nci_remove(phy->ndev); >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id nxp_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/pn533/i2c.c b/drivers/nfc/pn533/i2c.c > index 673eb5e9b887..ddf3db286bad 100644 > --- a/drivers/nfc/pn533/i2c.c > +++ b/drivers/nfc/pn533/i2c.c > @@ -227,7 +227,7 @@ static int pn533_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int pn533_i2c_remove(struct i2c_client *client) > +static void pn533_i2c_remove(struct i2c_client *client) >  { >         struct pn533_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -235,8 +235,6 @@ static int pn533_i2c_remove(struct i2c_client > *client) >   >         pn53x_unregister_nfc(phy->priv); >         pn53x_common_clean(phy->priv); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn533_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c > index 62a0f1a010cb..9e754abcfa2a 100644 > --- a/drivers/nfc/pn544/i2c.c > +++ b/drivers/nfc/pn544/i2c.c > @@ -928,7 +928,7 @@ static int pn544_hci_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pn544_hci_i2c_remove(struct i2c_client *client) > +static void pn544_hci_i2c_remove(struct i2c_client *client) >  { >         struct pn544_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -940,8 +940,6 @@ static int pn544_hci_i2c_remove(struct i2c_client > *client) >   >         if (phy->powered) >                 pn544_hci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn544_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/s3fwrn5/i2c.c b/drivers/nfc/s3fwrn5/i2c.c > index 4d1cf1bb55b0..f824dc7099ce 100644 > --- a/drivers/nfc/s3fwrn5/i2c.c > +++ b/drivers/nfc/s3fwrn5/i2c.c > @@ -246,14 +246,12 @@ static int s3fwrn5_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s3fwrn5_i2c_remove(struct i2c_client *client) > +static void s3fwrn5_i2c_remove(struct i2c_client *client) >  { >         struct s3fwrn5_i2c_phy *phy = i2c_get_clientdata(client); >   >         s3fwrn5_remove(phy->common.ndev); >         clk_disable_unprepare(phy->clk); > - > -       return 0; >  } >   >  static const struct i2c_device_id s3fwrn5_i2c_id_table[] = { > diff --git a/drivers/nfc/st-nci/i2c.c b/drivers/nfc/st-nci/i2c.c > index cbd968f013c7..89fa24d71bef 100644 > --- a/drivers/nfc/st-nci/i2c.c > +++ b/drivers/nfc/st-nci/i2c.c > @@ -250,13 +250,11 @@ static int st_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int st_nci_i2c_remove(struct i2c_client *client) > +static void st_nci_i2c_remove(struct i2c_client *client) >  { >         struct st_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         ndlc_remove(phy->ndlc); > - > -       return 0; >  } >   >  static const struct i2c_device_id st_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/st21nfca/i2c.c b/drivers/nfc/st21nfca/i2c.c > index 42dc0e5eb161..76b55986bcf8 100644 > --- a/drivers/nfc/st21nfca/i2c.c > +++ b/drivers/nfc/st21nfca/i2c.c > @@ -562,7 +562,7 @@ static int st21nfca_hci_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int st21nfca_hci_i2c_remove(struct i2c_client *client) > +static void st21nfca_hci_i2c_remove(struct i2c_client *client) >  { >         struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -571,8 +571,6 @@ static int st21nfca_hci_i2c_remove(struct > i2c_client *client) >         if (phy->powered) >                 st21nfca_hci_i2c_disable(phy); >         kfree_skb(phy->pending_skb); > - > -       return 0; >  } >   >  static const struct i2c_device_id st21nfca_hci_i2c_id_table[] = { > diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c > index 7f6bba18c515..e0b98ce9c5e8 100644 > --- a/drivers/of/unittest.c > +++ b/drivers/of/unittest.c > @@ -2525,13 +2525,12 @@ static int unittest_i2c_dev_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_dev_remove(struct i2c_client *client) > +static void unittest_i2c_dev_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_dev_id[] = { > @@ -2602,7 +2601,7 @@ static int unittest_i2c_mux_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_mux_remove(struct i2c_client *client) > +static void unittest_i2c_mux_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; > @@ -2610,7 +2609,6 @@ static int unittest_i2c_mux_remove(struct > i2c_client *client) >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_mux_id[] = { > diff --git a/drivers/platform/chrome/cros_ec_i2c.c > b/drivers/platform/chrome/cros_ec_i2c.c > index 9f5b95763173..b6823c654c3f 100644 > --- a/drivers/platform/chrome/cros_ec_i2c.c > +++ b/drivers/platform/chrome/cros_ec_i2c.c > @@ -317,13 +317,11 @@ static int cros_ec_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cros_ec_i2c_remove(struct i2c_client *client) > +static void cros_ec_i2c_remove(struct i2c_client *client) >  { >         struct cros_ec_device *ec_dev = i2c_get_clientdata(client); >   >         cros_ec_unregister(ec_dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/platform/surface/surface3_power.c > b/drivers/platform/surface/surface3_power.c > index 444ec81ba02d..3b20dddeb815 100644 > --- a/drivers/platform/surface/surface3_power.c > +++ b/drivers/platform/surface/surface3_power.c > @@ -554,7 +554,7 @@ static int mshw0011_probe(struct i2c_client > *client) >         return error; >  } >   > -static int mshw0011_remove(struct i2c_client *client) > +static void mshw0011_remove(struct i2c_client *client) >  { >         struct mshw0011_data *cdata = i2c_get_clientdata(client); >   > @@ -564,8 +564,6 @@ static int mshw0011_remove(struct i2c_client > *client) >                 kthread_stop(cdata->poll_task); >   >         i2c_unregister_device(cdata->bat0); > - > -       return 0; >  } >   >  static const struct acpi_device_id mshw0011_acpi_match[] = { > diff --git a/drivers/platform/x86/asus-tf103c-dock.c > b/drivers/platform/x86/asus-tf103c-dock.c > index 6fd0c9fea82d..62310e06282b 100644 > --- a/drivers/platform/x86/asus-tf103c-dock.c > +++ b/drivers/platform/x86/asus-tf103c-dock.c > @@ -878,14 +878,12 @@ static int tf103c_dock_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tf103c_dock_remove(struct i2c_client *client) > +static void tf103c_dock_remove(struct i2c_client *client) >  { >         struct tf103c_dock_data *dock = i2c_get_clientdata(client); >   >         tf103c_dock_stop_hpd(dock); >         tf103c_dock_disable(dock); > - > -       return 0; >  } >   >  static int __maybe_unused tf103c_dock_suspend(struct device *dev) > diff --git a/drivers/platform/x86/intel/int3472/tps68470.c > b/drivers/platform/x86/intel/int3472/tps68470.c > index 22f61b47f9e5..5dd81bb05255 100644 > --- a/drivers/platform/x86/intel/int3472/tps68470.c > +++ b/drivers/platform/x86/intel/int3472/tps68470.c > @@ -178,15 +178,13 @@ static int skl_int3472_tps68470_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int skl_int3472_tps68470_remove(struct i2c_client *client) > +static void skl_int3472_tps68470_remove(struct i2c_client *client) >  { >         const struct int3472_tps68470_board_data *board_data; >   >         board_data = > int3472_tps68470_get_board_data(dev_name(&client->dev)); >         if (board_data) >                 gpiod_remove_lookup_table(board_data- > >tps68470_gpio_lookup_table); > - > -       return 0; >  } >   >  static const struct acpi_device_id int3472_device_id[] = { > diff --git a/drivers/power/supply/bq2415x_charger.c > b/drivers/power/supply/bq2415x_charger.c > index 5724001e66b9..6b99e1c675b8 100644 > --- a/drivers/power/supply/bq2415x_charger.c > +++ b/drivers/power/supply/bq2415x_charger.c > @@ -1696,7 +1696,7 @@ static int bq2415x_probe(struct i2c_client > *client, >   >  /* main bq2415x remove function */ >   > -static int bq2415x_remove(struct i2c_client *client) > +static void bq2415x_remove(struct i2c_client *client) >  { >         struct bq2415x_device *bq = i2c_get_clientdata(client); >   > @@ -1715,8 +1715,6 @@ static int bq2415x_remove(struct i2c_client > *client) >         dev_info(bq->dev, "driver unregistered\n"); >   >         kfree(bq->name); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq2415x_i2c_id_table[] = { > diff --git a/drivers/power/supply/bq24190_charger.c > b/drivers/power/supply/bq24190_charger.c > index 27f5c7648617..2274679c5ddd 100644 > --- a/drivers/power/supply/bq24190_charger.c > +++ b/drivers/power/supply/bq24190_charger.c > @@ -1901,7 +1901,7 @@ static int bq24190_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq24190_remove(struct i2c_client *client) > +static void bq24190_remove(struct i2c_client *client) >  { >         struct bq24190_dev_info *bdi = i2c_get_clientdata(client); >         int error; > @@ -1918,8 +1918,6 @@ static int bq24190_remove(struct i2c_client > *client) >                 pm_runtime_put_sync(bdi->dev); >         pm_runtime_dont_use_autosuspend(bdi->dev); >         pm_runtime_disable(bdi->dev); > - > -       return 0; >  } >   >  static void bq24190_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq24257_charger.c > b/drivers/power/supply/bq24257_charger.c > index 96cb3290bcaa..dafb64b32cef 100644 > --- a/drivers/power/supply/bq24257_charger.c > +++ b/drivers/power/supply/bq24257_charger.c > @@ -1077,7 +1077,7 @@ static int bq24257_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq24257_remove(struct i2c_client *client) > +static void bq24257_remove(struct i2c_client *client) >  { >         struct bq24257_device *bq = i2c_get_clientdata(client); >   > @@ -1085,8 +1085,6 @@ static int bq24257_remove(struct i2c_client > *client) >                 cancel_delayed_work_sync(&bq->iilimit_setup_work); >   >         bq24257_field_write(bq, F_RESET, 1); /* reset to defaults */ > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/bq25890_charger.c > b/drivers/power/supply/bq25890_charger.c > index 852a6fec4339..06ea7399d151 100644 > --- a/drivers/power/supply/bq25890_charger.c > +++ b/drivers/power/supply/bq25890_charger.c > @@ -1258,7 +1258,7 @@ static int bq25890_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq25890_remove(struct i2c_client *client) > +static void bq25890_remove(struct i2c_client *client) >  { >         struct bq25890_device *bq = i2c_get_clientdata(client); >   > @@ -1269,8 +1269,6 @@ static int bq25890_remove(struct i2c_client > *client) >                 /* reset all registers to default values */ >                 bq25890_chip_reset(bq); >         } > - > -       return 0; >  } >   >  static void bq25890_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c > b/drivers/power/supply/bq27xxx_battery_i2c.c > index cf38cbfe13e9..94b00bb89c17 100644 > --- a/drivers/power/supply/bq27xxx_battery_i2c.c > +++ b/drivers/power/supply/bq27xxx_battery_i2c.c > @@ -205,7 +205,7 @@ static int bq27xxx_battery_i2c_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int bq27xxx_battery_i2c_remove(struct i2c_client *client) > +static void bq27xxx_battery_i2c_remove(struct i2c_client *client) >  { >         struct bq27xxx_device_info *di = i2c_get_clientdata(client); >   > @@ -214,8 +214,6 @@ static int bq27xxx_battery_i2c_remove(struct > i2c_client *client) >         mutex_lock(&battery_mutex); >         idr_remove(&battery_id, di->id); >         mutex_unlock(&battery_mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq27xxx_i2c_id_table[] = { > diff --git a/drivers/power/supply/cw2015_battery.c > b/drivers/power/supply/cw2015_battery.c > index 728e2a6cc9c3..81e17ad80163 100644 > --- a/drivers/power/supply/cw2015_battery.c > +++ b/drivers/power/supply/cw2015_battery.c > @@ -725,13 +725,12 @@ static int __maybe_unused cw_bat_resume(struct > device *dev) >   >  static SIMPLE_DEV_PM_OPS(cw_bat_pm_ops, cw_bat_suspend, > cw_bat_resume); >   > -static int cw_bat_remove(struct i2c_client *client) > +static void cw_bat_remove(struct i2c_client *client) >  { >         struct cw_battery *cw_bat = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&cw_bat->battery_delay_work); >         power_supply_put_battery_info(cw_bat->rk_bat, cw_bat- > >battery); > -       return 0; >  } >   >  static const struct i2c_device_id cw_bat_id_table[] = { > diff --git a/drivers/power/supply/ds2782_battery.c > b/drivers/power/supply/ds2782_battery.c > index 9ae273fde7a2..d78cd05402f6 100644 > --- a/drivers/power/supply/ds2782_battery.c > +++ b/drivers/power/supply/ds2782_battery.c > @@ -312,7 +312,7 @@ static void ds278x_power_supply_init(struct > power_supply_desc *battery) >         battery->external_power_changed = NULL; >  } >   > -static int ds278x_battery_remove(struct i2c_client *client) > +static void ds278x_battery_remove(struct i2c_client *client) >  { >         struct ds278x_info *info = i2c_get_clientdata(client); >         int id = info->id; > @@ -325,8 +325,6 @@ static int ds278x_battery_remove(struct > i2c_client *client) >         mutex_lock(&battery_lock); >         idr_remove(&battery_id, id); >         mutex_unlock(&battery_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/lp8727_charger.c > b/drivers/power/supply/lp8727_charger.c > index 9ee54e397754..384a374b52c1 100644 > --- a/drivers/power/supply/lp8727_charger.c > +++ b/drivers/power/supply/lp8727_charger.c > @@ -590,13 +590,12 @@ static int lp8727_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int lp8727_remove(struct i2c_client *cl) > +static void lp8727_remove(struct i2c_client *cl) >  { >         struct lp8727_chg *pchg = i2c_get_clientdata(cl); >   >         lp8727_release_irq(pchg); >         lp8727_unregister_psy(pchg); > -       return 0; >  } >   >  static const struct of_device_id lp8727_dt_ids[] = { > diff --git a/drivers/power/supply/rt5033_battery.c > b/drivers/power/supply/rt5033_battery.c > index 7a23c70f4879..736dec608ff6 100644 > --- a/drivers/power/supply/rt5033_battery.c > +++ b/drivers/power/supply/rt5033_battery.c > @@ -149,13 +149,11 @@ static int rt5033_battery_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int rt5033_battery_remove(struct i2c_client *client) > +static void rt5033_battery_remove(struct i2c_client *client) >  { >         struct rt5033_battery *battery = i2c_get_clientdata(client); >   >         power_supply_unregister(battery->psy); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt5033_battery_id[] = { > diff --git a/drivers/power/supply/rt9455_charger.c > b/drivers/power/supply/rt9455_charger.c > index 74ee54320e6a..72962286d704 100644 > --- a/drivers/power/supply/rt9455_charger.c > +++ b/drivers/power/supply/rt9455_charger.c > @@ -1698,7 +1698,7 @@ static int rt9455_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rt9455_remove(struct i2c_client *client) > +static void rt9455_remove(struct i2c_client *client) >  { >         int ret; >         struct rt9455_info *info = i2c_get_clientdata(client); > @@ -1715,8 +1715,6 @@ static int rt9455_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&info->pwr_rdy_work); >         cancel_delayed_work_sync(&info->max_charging_time_work); >         cancel_delayed_work_sync(&info->batt_presence_work); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt9455_i2c_id_table[] = { > diff --git a/drivers/power/supply/smb347-charger.c > b/drivers/power/supply/smb347-charger.c > index 1511f71f937c..996a82f8a2a1 100644 > --- a/drivers/power/supply/smb347-charger.c > +++ b/drivers/power/supply/smb347-charger.c > @@ -1595,14 +1595,12 @@ static int smb347_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int smb347_remove(struct i2c_client *client) > +static void smb347_remove(struct i2c_client *client) >  { >         struct smb347_charger *smb = i2c_get_clientdata(client); >   >         smb347_usb_vbus_regulator_disable(smb->usb_rdev); >         smb347_irq_disable(smb); > - > -       return 0; >  } >   >  static void smb347_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/z2_battery.c > b/drivers/power/supply/z2_battery.c > index 7ed4e4bb26ec..1897c2984860 100644 > --- a/drivers/power/supply/z2_battery.c > +++ b/drivers/power/supply/z2_battery.c > @@ -251,7 +251,7 @@ static int z2_batt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int z2_batt_remove(struct i2c_client *client) > +static void z2_batt_remove(struct i2c_client *client) >  { >         struct z2_charger *charger = i2c_get_clientdata(client); >   > @@ -263,8 +263,6 @@ static int z2_batt_remove(struct i2c_client > *client) >                 free_irq(gpiod_to_irq(charger->charge_gpiod), > charger); >   >         kfree(charger); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c > index c91fa7f9e33d..f230c10d28bb 100644 > --- a/drivers/pwm/pwm-pca9685.c > +++ b/drivers/pwm/pwm-pca9685.c > @@ -598,7 +598,7 @@ static int pca9685_pwm_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9685_pwm_remove(struct i2c_client *client) > +static void pca9685_pwm_remove(struct i2c_client *client) >  { >         struct pca9685 *pca = i2c_get_clientdata(client); >   > @@ -610,8 +610,6 @@ static int pca9685_pwm_remove(struct i2c_client > *client) >         } >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused pca9685_pwm_runtime_suspend(struct device > *dev) > diff --git a/drivers/regulator/da9121-regulator.c > b/drivers/regulator/da9121-regulator.c > index 76e0e23bf598..e4c753b83088 100644 > --- a/drivers/regulator/da9121-regulator.c > +++ b/drivers/regulator/da9121-regulator.c > @@ -1164,7 +1164,7 @@ static int da9121_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9121_i2c_remove(struct i2c_client *i2c) > +static void da9121_i2c_remove(struct i2c_client *i2c) >  { >         struct da9121 *chip = i2c_get_clientdata(i2c); >         const int mask_all[4] = { 0xFF, 0xFF, 0xFF, 0xFF }; > @@ -1176,7 +1176,6 @@ static int da9121_i2c_remove(struct i2c_client > *i2c) >         ret = regmap_bulk_write(chip->regmap, DA9121_REG_SYS_MASK_0, > mask_all, 4); >         if (ret != 0) >                 dev_err(chip->dev, "Failed to set IRQ masks: %d\n", > ret); > -       return 0; >  } >   >  static const struct i2c_device_id da9121_i2c_id[] = { > diff --git a/drivers/regulator/lp8755.c b/drivers/regulator/lp8755.c > index 321bec6e3f8d..31b43426d47c 100644 > --- a/drivers/regulator/lp8755.c > +++ b/drivers/regulator/lp8755.c > @@ -422,15 +422,13 @@ static int lp8755_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8755_remove(struct i2c_client *client) > +static void lp8755_remove(struct i2c_client *client) >  { >         int icnt; >         struct lp8755_chip *pchip = i2c_get_clientdata(client); >   >         for (icnt = 0; icnt < LP8755_BUCK_MAX; icnt++) >                 regmap_write(pchip->regmap, icnt, 0x00); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8755_id[] = { > diff --git a/drivers/regulator/rpi-panel-attiny-regulator.c > b/drivers/regulator/rpi-panel-attiny-regulator.c > index fa8706a352ce..04b4ab131985 100644 > --- a/drivers/regulator/rpi-panel-attiny-regulator.c > +++ b/drivers/regulator/rpi-panel-attiny-regulator.c > @@ -385,13 +385,11 @@ static int attiny_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int attiny_i2c_remove(struct i2c_client *client) > +static void attiny_i2c_remove(struct i2c_client *client) >  { >         struct attiny_lcd *state = i2c_get_clientdata(client); >   >         mutex_destroy(&state->lock); > - > -       return 0; >  } >   >  static const struct of_device_id attiny_dt_ids[] = { > diff --git a/drivers/rtc/rtc-bq32k.c b/drivers/rtc/rtc-bq32k.c > index 2235c968842d..f198663f20c7 100644 > --- a/drivers/rtc/rtc-bq32k.c > +++ b/drivers/rtc/rtc-bq32k.c > @@ -298,11 +298,9 @@ static int bq32k_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq32k_remove(struct i2c_client *client) > +static void bq32k_remove(struct i2c_client *client) >  { >         bq32k_sysfs_unregister(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq32k_id[] = { > diff --git a/drivers/rtc/rtc-ds1374.c b/drivers/rtc/rtc-ds1374.c > index 8db5a631bca8..44148802b1a5 100644 > --- a/drivers/rtc/rtc-ds1374.c > +++ b/drivers/rtc/rtc-ds1374.c > @@ -531,7 +531,7 @@ static int ds1374_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ds1374_remove(struct i2c_client *client) > +static void ds1374_remove(struct i2c_client *client) >  { >         struct ds1374 *ds1374 = i2c_get_clientdata(client); >   > @@ -543,8 +543,6 @@ static int ds1374_remove(struct i2c_client > *client) >                 devm_free_irq(&client->dev, client->irq, client); >                 cancel_work_sync(&ds1374->work); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/rtc/rtc-isl12026.c b/drivers/rtc/rtc-isl12026.c > index 1fc6627d854d..1bfca39079d4 100644 > --- a/drivers/rtc/rtc-isl12026.c > +++ b/drivers/rtc/rtc-isl12026.c > @@ -472,12 +472,11 @@ static int isl12026_probe_new(struct i2c_client > *client) >         return devm_rtc_register_device(priv->rtc); >  } >   > -static int isl12026_remove(struct i2c_client *client) > +static void isl12026_remove(struct i2c_client *client) >  { >         struct isl12026 *priv = i2c_get_clientdata(client); >   >         i2c_unregister_device(priv->nvm_client); > -       return 0; >  } >   >  static const struct of_device_id isl12026_dt_match[] = { > diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c > index d868458cd40e..e0b4d3794320 100644 > --- a/drivers/rtc/rtc-m41t80.c > +++ b/drivers/rtc/rtc-m41t80.c > @@ -989,7 +989,7 @@ static int m41t80_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m41t80_remove(struct i2c_client *client) > +static void m41t80_remove(struct i2c_client *client) >  { >  #ifdef CONFIG_RTC_DRV_M41T80_WDT >         struct m41t80_data *clientdata = i2c_get_clientdata(client); > @@ -999,8 +999,6 @@ static int m41t80_remove(struct i2c_client > *client) >                 unregister_reboot_notifier(&wdt_notifier); >         } >  #endif > - > -       return 0; >  } >   >  static struct i2c_driver m41t80_driver = { > diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c > index cb15983383f5..9562c477e1c9 100644 > --- a/drivers/rtc/rtc-rs5c372.c > +++ b/drivers/rtc/rtc-rs5c372.c > @@ -910,10 +910,9 @@ static int rs5c372_probe(struct i2c_client > *client, >         return err; >  } >   > -static int rs5c372_remove(struct i2c_client *client) > +static void rs5c372_remove(struct i2c_client *client) >  { >         rs5c_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver rs5c372_driver = { > diff --git a/drivers/rtc/rtc-x1205.c b/drivers/rtc/rtc-x1205.c > index d1d5a44d9122..7792e22de805 100644 > --- a/drivers/rtc/rtc-x1205.c > +++ b/drivers/rtc/rtc-x1205.c > @@ -658,10 +658,9 @@ static int x1205_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int x1205_remove(struct i2c_client *client) > +static void x1205_remove(struct i2c_client *client) >  { >         x1205_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id x1205_id[] = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > index cbc8b1d91995..783f1b88ebf2 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > @@ -1194,7 +1194,7 @@ static const struct v4l2_subdev_ops gc0310_ops > = { >         .sensor = &gc0310_sensor_ops, >  }; >   > -static int gc0310_remove(struct i2c_client *client) > +static void gc0310_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc0310_device *dev = to_gc0310_sensor(sd); > @@ -1207,8 +1207,6 @@ static int gc0310_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc0310_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > index 0e6b2e6100d1..4d5a7e335f85 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > @@ -952,7 +952,7 @@ static const struct v4l2_subdev_ops gc2235_ops = > { >         .sensor = &gc2235_sensor_ops, >  }; >   > -static int gc2235_remove(struct i2c_client *client) > +static void gc2235_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc2235_device *dev = to_gc2235_sensor(sd); > @@ -965,8 +965,6 @@ static int gc2235_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc2235_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > index e046489cd253..75d16b525294 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > @@ -910,7 +910,7 @@ static int lm3554_probe(struct i2c_client > *client) >         return err; >  } >   > -static int lm3554_remove(struct i2c_client *client) > +static void lm3554_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct lm3554 *flash = to_lm3554(sd); > @@ -926,8 +926,6 @@ static int lm3554_remove(struct i2c_client > *client) >         lm3554_gpio_uninit(client); >   >         kfree(flash); > - > -       return 0; >  } >   >  static const struct dev_pm_ops lm3554_pm_ops = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > index 00d6842c07d6..4601a238cb89 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > @@ -1711,7 +1711,7 @@ static const struct v4l2_subdev_ops mt9m114_ops > = { >         .sensor = &mt9m114_sensor_ops, >  }; >   > -static int mt9m114_remove(struct i2c_client *client) > +static void mt9m114_remove(struct i2c_client *client) >  { >         struct mt9m114_device *dev; >         struct v4l2_subdev *sd = i2c_get_clientdata(client); > @@ -1722,7 +1722,6 @@ static int mt9m114_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > -       return 0; >  } >   >  static int mt9m114_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > index 4ba99c660681..8f48b23be3aa 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > @@ -1135,7 +1135,7 @@ static const struct v4l2_subdev_ops ov2680_ops > = { >         .sensor = &ov2680_sensor_ops, >  }; >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_device *dev = to_ov2680_sensor(sd); > @@ -1148,8 +1148,6 @@ static int ov2680_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov2680_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > index da98094d7094..715a7aeeda18 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > @@ -1094,7 +1094,7 @@ static const struct v4l2_subdev_ops ov2722_ops > = { >         .sensor = &ov2722_sensor_ops, >  }; >   > -static int ov2722_remove(struct i2c_client *client) > +static void ov2722_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2722_device *dev = to_ov2722_sensor(sd); > @@ -1107,8 +1107,6 @@ static int ov2722_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&dev->sd.entity); >         kfree(dev); > - > -       return 0; >  } >   >  static int __ov2722_init_ctrl_handler(struct ov2722_device *dev) > diff --git a/drivers/staging/media/atomisp/i2c/ov5693/atomisp- > ov5693.c b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > index 6c95f57a52e9..c1cd631455e6 100644 > --- a/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > +++ b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > @@ -1877,7 +1877,7 @@ static const struct v4l2_subdev_ops ov5693_ops > = { >         .pad = &ov5693_pad_ops, >  }; >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *dev = to_ov5693_sensor(sd); > @@ -1893,8 +1893,6 @@ static int ov5693_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov5693_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/max96712/max96712.c > b/drivers/staging/media/max96712/max96712.c > index 6b5abd958bff..99b333b68198 100644 > --- a/drivers/staging/media/max96712/max96712.c > +++ b/drivers/staging/media/max96712/max96712.c > @@ -407,15 +407,13 @@ static int max96712_probe(struct i2c_client > *client) >         return max96712_v4l2_register(priv); >  } >   > -static int max96712_remove(struct i2c_client *client) > +static void max96712_remove(struct i2c_client *client) >  { >         struct max96712_priv *priv = i2c_get_clientdata(client); >   >         v4l2_async_unregister_subdev(&priv->sd); >   >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); > - > -       return 0; >  } >   >  static const struct of_device_id max96712_of_table[] = { > diff --git a/drivers/staging/most/i2c/i2c.c > b/drivers/staging/most/i2c/i2c.c > index 7042f10887bb..285a071f02be 100644 > --- a/drivers/staging/most/i2c/i2c.c > +++ b/drivers/staging/most/i2c/i2c.c > @@ -340,14 +340,12 @@ static int i2c_probe(struct i2c_client *client, > const struct i2c_device_id *id) >   * >   * Unregister the i2c client device as a MOST interface >   */ > -static int i2c_remove(struct i2c_client *client) > +static void i2c_remove(struct i2c_client *client) >  { >         struct hdm_i2c *dev = i2c_get_clientdata(client); >   >         most_deregister_interface(&dev->most_iface); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_id[] = { > diff --git a/drivers/staging/olpc_dcon/olpc_dcon.c > b/drivers/staging/olpc_dcon/olpc_dcon.c > index 7284cb4ac395..aea2841f7598 100644 > --- a/drivers/staging/olpc_dcon/olpc_dcon.c > +++ b/drivers/staging/olpc_dcon/olpc_dcon.c > @@ -671,7 +671,7 @@ static int dcon_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return rc; >  } >   > -static int dcon_remove(struct i2c_client *client) > +static void dcon_remove(struct i2c_client *client) >  { >         struct dcon_priv *dcon = i2c_get_clientdata(client); >   > @@ -687,8 +687,6 @@ static int dcon_remove(struct i2c_client *client) >         cancel_work_sync(&dcon->switch_source); >   >         kfree(dcon); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/tty/serial/sc16is7xx.c > b/drivers/tty/serial/sc16is7xx.c > index 8472bf70477c..cc3b22cbda9b 100644 > --- a/drivers/tty/serial/sc16is7xx.c > +++ b/drivers/tty/serial/sc16is7xx.c > @@ -1683,11 +1683,9 @@ static int sc16is7xx_i2c_probe(struct > i2c_client *i2c, >         return sc16is7xx_probe(&i2c->dev, devtype, regmap, i2c->irq); >  } >   > -static int sc16is7xx_i2c_remove(struct i2c_client *client) > +static void sc16is7xx_i2c_remove(struct i2c_client *client) >  { >         sc16is7xx_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id sc16is7xx_i2c_id_table[] = { > diff --git a/drivers/usb/misc/usb3503.c b/drivers/usb/misc/usb3503.c > index 330f494cd158..3c9fa663475f 100644 > --- a/drivers/usb/misc/usb3503.c > +++ b/drivers/usb/misc/usb3503.c > @@ -289,14 +289,12 @@ static int usb3503_i2c_probe(struct i2c_client > *i2c, >         return usb3503_probe(hub); >  } >   > -static int usb3503_i2c_remove(struct i2c_client *i2c) > +static void usb3503_i2c_remove(struct i2c_client *i2c) >  { >         struct usb3503 *hub; >   >         hub = i2c_get_clientdata(i2c); >         clk_disable_unprepare(hub->clk); > - > -       return 0; >  } >   >  static int usb3503_platform_probe(struct platform_device *pdev) > diff --git a/drivers/usb/phy/phy-isp1301-omap.c > b/drivers/usb/phy/phy-isp1301-omap.c > index f8bd93fe69cd..e5d3f206097c 100644 > --- a/drivers/usb/phy/phy-isp1301-omap.c > +++ b/drivers/usb/phy/phy-isp1301-omap.c > @@ -1196,7 +1196,7 @@ static void isp1301_release(struct device *dev) >   >  static struct isp1301 *the_transceiver; >   > -static int isp1301_remove(struct i2c_client *i2c) > +static void isp1301_remove(struct i2c_client *i2c) >  { >         struct isp1301  *isp; >   > @@ -1214,8 +1214,6 @@ static int isp1301_remove(struct i2c_client > *i2c) >   >         put_device(&i2c->dev); >         the_transceiver = NULL; > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/usb/phy/phy-isp1301.c b/drivers/usb/phy/phy- > isp1301.c > index ad3d57f1c273..c2777a5c1f4e 100644 > --- a/drivers/usb/phy/phy-isp1301.c > +++ b/drivers/usb/phy/phy-isp1301.c > @@ -120,14 +120,12 @@ static int isp1301_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isp1301_remove(struct i2c_client *client) > +static void isp1301_remove(struct i2c_client *client) >  { >         struct isp1301 *isp = i2c_get_clientdata(client); >   >         usb_remove_phy(&isp->phy); >         isp1301_i2c_client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver isp1301_driver = { > diff --git a/drivers/usb/typec/hd3ss3220.c > b/drivers/usb/typec/hd3ss3220.c > index cd47c3597e19..2a58185fb14c 100644 > --- a/drivers/usb/typec/hd3ss3220.c > +++ b/drivers/usb/typec/hd3ss3220.c > @@ -245,14 +245,12 @@ static int hd3ss3220_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int hd3ss3220_remove(struct i2c_client *client) > +static void hd3ss3220_remove(struct i2c_client *client) >  { >         struct hd3ss3220 *hd3ss3220 = i2c_get_clientdata(client); >   >         typec_unregister_port(hd3ss3220->port); >         usb_role_switch_put(hd3ss3220->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id dev_ids[] = { > diff --git a/drivers/usb/typec/mux/fsa4480.c > b/drivers/usb/typec/mux/fsa4480.c > index 6184f5367190..d6495e533e58 100644 > --- a/drivers/usb/typec/mux/fsa4480.c > +++ b/drivers/usb/typec/mux/fsa4480.c > @@ -181,14 +181,12 @@ static int fsa4480_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fsa4480_remove(struct i2c_client *client) > +static void fsa4480_remove(struct i2c_client *client) >  { >         struct fsa4480 *fsa = i2c_get_clientdata(client); >   >         typec_mux_unregister(fsa->mux); >         typec_switch_unregister(fsa->sw); > - > -       return 0; >  } >   >  static const struct i2c_device_id fsa4480_table[] = { > diff --git a/drivers/usb/typec/mux/pi3usb30532.c > b/drivers/usb/typec/mux/pi3usb30532.c > index 6ce9f282594e..1cd388b55c30 100644 > --- a/drivers/usb/typec/mux/pi3usb30532.c > +++ b/drivers/usb/typec/mux/pi3usb30532.c > @@ -160,13 +160,12 @@ static int pi3usb30532_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pi3usb30532_remove(struct i2c_client *client) > +static void pi3usb30532_remove(struct i2c_client *client) >  { >         struct pi3usb30532 *pi = i2c_get_clientdata(client); >   >         typec_mux_unregister(pi->mux); >         typec_switch_unregister(pi->sw); > -       return 0; >  } >   >  static const struct i2c_device_id pi3usb30532_table[] = { > diff --git a/drivers/usb/typec/rt1719.c b/drivers/usb/typec/rt1719.c > index f1b698edd7eb..ea8b700b0ceb 100644 > --- a/drivers/usb/typec/rt1719.c > +++ b/drivers/usb/typec/rt1719.c > @@ -930,14 +930,12 @@ static int rt1719_probe(struct i2c_client *i2c) >         return ret; >  } >   > -static int rt1719_remove(struct i2c_client *i2c) > +static void rt1719_remove(struct i2c_client *i2c) >  { >         struct rt1719_data *data = i2c_get_clientdata(i2c); >   >         typec_unregister_port(data->port); >         usb_role_switch_put(data->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused > rt1719_device_table[] = { > diff --git a/drivers/usb/typec/stusb160x.c > b/drivers/usb/typec/stusb160x.c > index e7745d1c2a5c..8638f1d39896 100644 > --- a/drivers/usb/typec/stusb160x.c > +++ b/drivers/usb/typec/stusb160x.c > @@ -801,7 +801,7 @@ static int stusb160x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int stusb160x_remove(struct i2c_client *client) > +static void stusb160x_remove(struct i2c_client *client) >  { >         struct stusb160x *chip = i2c_get_clientdata(client); >   > @@ -823,8 +823,6 @@ static int stusb160x_remove(struct i2c_client > *client) >   >         if (chip->main_supply) >                 regulator_disable(chip->main_supply); > - > -       return 0; >  } >   >  static int __maybe_unused stusb160x_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/fusb302.c > b/drivers/usb/typec/tcpm/fusb302.c > index 96c55eaf3f80..5e9348f28d50 100644 > --- a/drivers/usb/typec/tcpm/fusb302.c > +++ b/drivers/usb/typec/tcpm/fusb302.c > @@ -1771,7 +1771,7 @@ static int fusb302_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fusb302_remove(struct i2c_client *client) > +static void fusb302_remove(struct i2c_client *client) >  { >         struct fusb302_chip *chip = i2c_get_clientdata(client); >   > @@ -1783,8 +1783,6 @@ static int fusb302_remove(struct i2c_client > *client) >         fwnode_handle_put(chip->tcpc_dev.fwnode); >         destroy_workqueue(chip->wq); >         fusb302_debugfs_exit(chip); > - > -       return 0; >  } >   >  static int fusb302_pm_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/tcpci.c > b/drivers/usb/typec/tcpm/tcpci.c > index f33e08eb7670..c48fca60bb06 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -869,7 +869,7 @@ static int tcpci_probe(struct i2c_client *client, >         return 0; >  } >   > -static int tcpci_remove(struct i2c_client *client) > +static void tcpci_remove(struct i2c_client *client) >  { >         struct tcpci_chip *chip = i2c_get_clientdata(client); >         int err; > @@ -880,8 +880,6 @@ static int tcpci_remove(struct i2c_client > *client) >                 dev_warn(&client->dev, "Failed to disable irqs > (%pe)\n", ERR_PTR(err)); >   >         tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c > b/drivers/usb/typec/tcpm/tcpci_maxim.c > index df2505570f07..a11be5754128 100644 > --- a/drivers/usb/typec/tcpm/tcpci_maxim.c > +++ b/drivers/usb/typec/tcpm/tcpci_maxim.c > @@ -493,14 +493,12 @@ static int max_tcpci_probe(struct i2c_client > *client, const struct i2c_device_id >         return ret; >  } >   > -static int max_tcpci_remove(struct i2c_client *client) > +static void max_tcpci_remove(struct i2c_client *client) >  { >         struct max_tcpci_chip *chip = i2c_get_clientdata(client); >   >         if (!IS_ERR_OR_NULL(chip->tcpci)) >                 tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id max_tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > index b56a0880a044..9ad4924b4ba7 100644 > --- a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > +++ b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > @@ -263,12 +263,11 @@ static int rt1711h_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rt1711h_remove(struct i2c_client *client) > +static void rt1711h_remove(struct i2c_client *client) >  { >         struct rt1711h_chip *chip = i2c_get_clientdata(client); >   >         tcpci_unregister_port(chip->tcpci); > -       return 0; >  } >   >  static const struct i2c_device_id rt1711h_id[] = { > diff --git a/drivers/usb/typec/tipd/core.c > b/drivers/usb/typec/tipd/core.c > index dfbba5ae9487..b637e8b378b3 100644 > --- a/drivers/usb/typec/tipd/core.c > +++ b/drivers/usb/typec/tipd/core.c > @@ -857,15 +857,13 @@ static int tps6598x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tps6598x_remove(struct i2c_client *client) > +static void tps6598x_remove(struct i2c_client *client) >  { >         struct tps6598x *tps = i2c_get_clientdata(client); >   >         tps6598x_disconnect(tps, 0); >         typec_unregister_port(tps->port); >         usb_role_switch_put(tps->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id tps6598x_of_match[] = { > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c > b/drivers/usb/typec/ucsi/ucsi_ccg.c > index 6db7c8ddd51c..920b7e743f56 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -1398,7 +1398,7 @@ static int ucsi_ccg_probe(struct i2c_client > *client, >         return status; >  } >   > -static int ucsi_ccg_remove(struct i2c_client *client) > +static void ucsi_ccg_remove(struct i2c_client *client) >  { >         struct ucsi_ccg *uc = i2c_get_clientdata(client); >   > @@ -1408,8 +1408,6 @@ static int ucsi_ccg_remove(struct i2c_client > *client) >         ucsi_unregister(uc->ucsi); >         ucsi_destroy(uc->ucsi); >         free_irq(uc->irq, uc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ucsi_ccg_device_id[] = { > diff --git a/drivers/usb/typec/wusb3801.c > b/drivers/usb/typec/wusb3801.c > index e63509f8b01e..3cc7a15ecbd3 100644 > --- a/drivers/usb/typec/wusb3801.c > +++ b/drivers/usb/typec/wusb3801.c > @@ -399,7 +399,7 @@ static int wusb3801_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int wusb3801_remove(struct i2c_client *client) > +static void wusb3801_remove(struct i2c_client *client) >  { >         struct wusb3801 *wusb3801 = i2c_get_clientdata(client); >   > @@ -411,8 +411,6 @@ static int wusb3801_remove(struct i2c_client > *client) >   >         if (wusb3801->vbus_on) >                 regulator_disable(wusb3801->vbus_supply); > - > -       return 0; >  } >   >  static const struct of_device_id wusb3801_of_match[] = { > diff --git a/drivers/video/backlight/adp8860_bl.c > b/drivers/video/backlight/adp8860_bl.c > index 8ec19425671f..b0fe02273e87 100644 > --- a/drivers/video/backlight/adp8860_bl.c > +++ b/drivers/video/backlight/adp8860_bl.c > @@ -753,7 +753,7 @@ static int adp8860_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8860_remove(struct i2c_client *client) > +static void adp8860_remove(struct i2c_client *client) >  { >         struct adp8860_bl *data = i2c_get_clientdata(client); >   > @@ -765,8 +765,6 @@ static int adp8860_remove(struct i2c_client > *client) >         if (data->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8860_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/adp8870_bl.c > b/drivers/video/backlight/adp8870_bl.c > index 8b5213a39527..5becace3fd0f 100644 > --- a/drivers/video/backlight/adp8870_bl.c > +++ b/drivers/video/backlight/adp8870_bl.c > @@ -925,7 +925,7 @@ static int adp8870_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8870_remove(struct i2c_client *client) > +static void adp8870_remove(struct i2c_client *client) >  { >         struct adp8870_bl *data = i2c_get_clientdata(client); >   > @@ -937,8 +937,6 @@ static int adp8870_remove(struct i2c_client > *client) >         if (data->pdata->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8870_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/arcxcnn_bl.c > b/drivers/video/backlight/arcxcnn_bl.c > index 7b1c0a0e6cad..060c0eef6a52 100644 > --- a/drivers/video/backlight/arcxcnn_bl.c > +++ b/drivers/video/backlight/arcxcnn_bl.c > @@ -362,7 +362,7 @@ static int arcxcnn_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int arcxcnn_remove(struct i2c_client *cl) > +static void arcxcnn_remove(struct i2c_client *cl) >  { >         struct arcxcnn *lp = i2c_get_clientdata(cl); >   > @@ -376,8 +376,6 @@ static int arcxcnn_remove(struct i2c_client *cl) >         lp->bl->props.brightness = 0; >   >         backlight_update_status(lp->bl); > - > -       return 0; >  } >   >  static const struct of_device_id arcxcnn_dt_ids[] = { > diff --git a/drivers/video/backlight/bd6107.c > b/drivers/video/backlight/bd6107.c > index 515184fbe33a..a506872d4396 100644 > --- a/drivers/video/backlight/bd6107.c > +++ b/drivers/video/backlight/bd6107.c > @@ -175,14 +175,12 @@ static int bd6107_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bd6107_remove(struct i2c_client *client) > +static void bd6107_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id bd6107_ids[] = { > diff --git a/drivers/video/backlight/lm3630a_bl.c > b/drivers/video/backlight/lm3630a_bl.c > index 1d17c439430e..475f35635bf6 100644 > --- a/drivers/video/backlight/lm3630a_bl.c > +++ b/drivers/video/backlight/lm3630a_bl.c > @@ -579,7 +579,7 @@ static int lm3630a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3630a_remove(struct i2c_client *client) > +static void lm3630a_remove(struct i2c_client *client) >  { >         int rval; >         struct lm3630a_chip *pchip = i2c_get_clientdata(client); > @@ -596,7 +596,6 @@ static int lm3630a_remove(struct i2c_client > *client) >                 free_irq(pchip->irq, pchip); >                 destroy_workqueue(pchip->irqthread); >         } > -       return 0; >  } >   >  static const struct i2c_device_id lm3630a_id[] = { > diff --git a/drivers/video/backlight/lm3639_bl.c > b/drivers/video/backlight/lm3639_bl.c > index 48c04155a5f9..6580911671a3 100644 > --- a/drivers/video/backlight/lm3639_bl.c > +++ b/drivers/video/backlight/lm3639_bl.c > @@ -390,7 +390,7 @@ static int lm3639_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3639_remove(struct i2c_client *client) > +static void lm3639_remove(struct i2c_client *client) >  { >         struct lm3639_chip_data *pchip = i2c_get_clientdata(client); >   > @@ -400,7 +400,6 @@ static int lm3639_remove(struct i2c_client > *client) >         led_classdev_unregister(&pchip->cdev_flash); >         if (pchip->bled) >                 device_remove_file(&(pchip->bled->dev), > &dev_attr_bled_mode); > -       return 0; >  } >   >  static const struct i2c_device_id lm3639_id[] = { > diff --git a/drivers/video/backlight/lp855x_bl.c > b/drivers/video/backlight/lp855x_bl.c > index 2b9e2bbbb03e..43b39cf68b04 100644 > --- a/drivers/video/backlight/lp855x_bl.c > +++ b/drivers/video/backlight/lp855x_bl.c > @@ -537,7 +537,7 @@ static int lp855x_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int lp855x_remove(struct i2c_client *cl) > +static void lp855x_remove(struct i2c_client *cl) >  { >         struct lp855x *lp = i2c_get_clientdata(cl); >   > @@ -548,8 +548,6 @@ static int lp855x_remove(struct i2c_client *cl) >         if (lp->supply) >                 regulator_disable(lp->supply); >         sysfs_remove_group(&lp->dev->kobj, &lp855x_attr_group); > - > -       return 0; >  } >   >  static const struct of_device_id lp855x_dt_ids[] = { > diff --git a/drivers/video/backlight/lv5207lp.c > b/drivers/video/backlight/lv5207lp.c > index 1842ae9a55f8..767b800d79fa 100644 > --- a/drivers/video/backlight/lv5207lp.c > +++ b/drivers/video/backlight/lv5207lp.c > @@ -124,14 +124,12 @@ static int lv5207lp_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lv5207lp_remove(struct i2c_client *client) > +static void lv5207lp_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id lv5207lp_ids[] = { > diff --git a/drivers/video/backlight/tosa_bl.c > b/drivers/video/backlight/tosa_bl.c > index 6df6fcd132e3..f55b3d616a87 100644 > --- a/drivers/video/backlight/tosa_bl.c > +++ b/drivers/video/backlight/tosa_bl.c > @@ -121,12 +121,11 @@ static int tosa_bl_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tosa_bl_remove(struct i2c_client *client) > +static void tosa_bl_remove(struct i2c_client *client) >  { >         struct tosa_bl_data *data = i2c_get_clientdata(client); >   >         data->bl = NULL; > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/fbdev/matrox/matroxfb_maven.c > b/drivers/video/fbdev/matrox/matroxfb_maven.c > index 9a98c4a6ba33..f2e02958673d 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_maven.c > +++ b/drivers/video/fbdev/matrox/matroxfb_maven.c > @@ -1276,11 +1276,10 @@ ERROR0:; >         return err; >  } >   > -static int maven_remove(struct i2c_client *client) > +static void maven_remove(struct i2c_client *client) >  { >         maven_shutdown_client(client); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  static const struct i2c_device_id maven_id[] = { > diff --git a/drivers/video/fbdev/ssd1307fb.c > b/drivers/video/fbdev/ssd1307fb.c > index 5c765655d000..fbf26cdfb1c0 100644 > --- a/drivers/video/fbdev/ssd1307fb.c > +++ b/drivers/video/fbdev/ssd1307fb.c > @@ -817,7 +817,7 @@ static int ssd1307fb_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ssd1307fb_remove(struct i2c_client *client) > +static void ssd1307fb_remove(struct i2c_client *client) >  { >         struct fb_info *info = i2c_get_clientdata(client); >         struct ssd1307fb_par *par = info->par; > @@ -836,8 +836,6 @@ static int ssd1307fb_remove(struct i2c_client > *client) >         fb_deferred_io_cleanup(info); >         __free_pages(__va(info->fix.smem_start), get_order(info- > >fix.smem_len)); >         framebuffer_release(info); > - > -       return 0; >  } >   >  static const struct i2c_device_id ssd1307fb_i2c_id[] = { > diff --git a/drivers/w1/masters/ds2482.c > b/drivers/w1/masters/ds2482.c > index 6c962e88501c..62c44616d8a9 100644 > --- a/drivers/w1/masters/ds2482.c > +++ b/drivers/w1/masters/ds2482.c > @@ -525,7 +525,7 @@ static int ds2482_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ds2482_remove(struct i2c_client *client) > +static void ds2482_remove(struct i2c_client *client) >  { >         struct ds2482_data   *data = i2c_get_clientdata(client); >         int idx; > @@ -538,7 +538,6 @@ static int ds2482_remove(struct i2c_client > *client) >   >         /* Free the memory */ >         kfree(data); > -       return 0; >  } >   >  /* > diff --git a/drivers/watchdog/ziirave_wdt.c > b/drivers/watchdog/ziirave_wdt.c > index c5a9b820d43a..d0e88875443a 100644 > --- a/drivers/watchdog/ziirave_wdt.c > +++ b/drivers/watchdog/ziirave_wdt.c > @@ -708,13 +708,11 @@ static int ziirave_wdt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ziirave_wdt_remove(struct i2c_client *client) > +static void ziirave_wdt_remove(struct i2c_client *client) >  { >         struct ziirave_wdt_data *w_priv = i2c_get_clientdata(client); >   >         watchdog_unregister_device(&w_priv->wdd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ziirave_wdt_id[] = { > diff --git a/include/linux/i2c.h b/include/linux/i2c.h > index fbda5ada2afc..066b541a0d5d 100644 > --- a/include/linux/i2c.h > +++ b/include/linux/i2c.h > @@ -273,7 +273,7 @@ struct i2c_driver { >   >         /* Standard driver model interfaces */ >         int (*probe)(struct i2c_client *client, const struct > i2c_device_id *id); > -       int (*remove)(struct i2c_client *client); > +       void (*remove)(struct i2c_client *client); >   >         /* New driver model interface to aid the seamless removal of > the >          * current probe()'s, more commonly unused than used second > parameter. > diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan > index f0973da583e0..366e61639cb2 100644 > --- a/lib/Kconfig.kasan > +++ b/lib/Kconfig.kasan > @@ -149,6 +149,7 @@ config KASAN_STACK >         depends on KASAN_GENERIC || KASAN_SW_TAGS >         depends on !ARCH_DISABLE_KASAN_INLINE >         default y if CC_IS_GCC > +       depends on !ARM >         help >           Disables stack instrumentation and thus KASAN's ability to > detect >           out-of-bounds bugs in stack variables. > diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c > index 1abee841cc45..2d0f904aba00 100644 > --- a/sound/aoa/codecs/onyx.c > +++ b/sound/aoa/codecs/onyx.c > @@ -1029,7 +1029,7 @@ static int onyx_i2c_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int onyx_i2c_remove(struct i2c_client *client) > +static void onyx_i2c_remove(struct i2c_client *client) >  { >         struct onyx *onyx = i2c_get_clientdata(client); >   > @@ -1037,7 +1037,6 @@ static int onyx_i2c_remove(struct i2c_client > *client) >         of_node_put(onyx->codec.node); >         kfree(onyx->codec_info); >         kfree(onyx); > -       return 0; >  } >   >  static const struct i2c_device_id onyx_i2c_id[] = { > diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c > index ab19a37e2a68..ab89475b7715 100644 > --- a/sound/aoa/codecs/tas.c > +++ b/sound/aoa/codecs/tas.c > @@ -912,7 +912,7 @@ static int tas_i2c_probe(struct i2c_client > *client, >         return -EINVAL; >  } >   > -static int tas_i2c_remove(struct i2c_client *client) > +static void tas_i2c_remove(struct i2c_client *client) >  { >         struct tas *tas = i2c_get_clientdata(client); >         u8 tmp = TAS_ACR_ANALOG_PDOWN; > @@ -925,7 +925,6 @@ static int tas_i2c_remove(struct i2c_client > *client) >   >         mutex_destroy(&tas->mtx); >         kfree(tas); > -       return 0; >  } >   >  static const struct i2c_device_id tas_i2c_id[] = { > diff --git a/sound/pci/hda/cs35l41_hda_i2c.c > b/sound/pci/hda/cs35l41_hda_i2c.c > index e810b278fb91..acab8c058e66 100644 > --- a/sound/pci/hda/cs35l41_hda_i2c.c > +++ b/sound/pci/hda/cs35l41_hda_i2c.c > @@ -30,11 +30,9 @@ static int cs35l41_hda_i2c_probe(struct i2c_client > *clt, const struct i2c_device >                                  devm_regmap_init_i2c(clt, > &cs35l41_regmap_i2c)); >  } >   > -static int cs35l41_hda_i2c_remove(struct i2c_client *clt) > +static void cs35l41_hda_i2c_remove(struct i2c_client *clt) >  { >         cs35l41_hda_remove(&clt->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cs35l41_hda_i2c_id[] = { > diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c > index 6e5daae18f9d..80e5108157ef 100644 > --- a/sound/ppc/keywest.c > +++ b/sound/ppc/keywest.c > @@ -71,14 +71,12 @@ static int keywest_attach_adapter(struct > i2c_adapter *adapter) >         return 0; >  } >   > -static int keywest_remove(struct i2c_client *client) > +static void keywest_remove(struct i2c_client *client) >  { >         if (! keywest_ctx) > -               return 0; > +               return; >         if (client == keywest_ctx->client) >                 keywest_ctx->client = NULL; > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/adau1761-i2c.c > b/sound/soc/codecs/adau1761-i2c.c > index 0683caf86aea..0cefff49569c 100644 > --- a/sound/soc/codecs/adau1761-i2c.c > +++ b/sound/soc/codecs/adau1761-i2c.c > @@ -30,10 +30,9 @@ static int adau1761_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1761_i2c_remove(struct i2c_client *client) > +static void adau1761_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1761_i2c_ids[] = { > diff --git a/sound/soc/codecs/adau1781-i2c.c > b/sound/soc/codecs/adau1781-i2c.c > index e046de0ebcc7..39021b8cfb62 100644 > --- a/sound/soc/codecs/adau1781-i2c.c > +++ b/sound/soc/codecs/adau1781-i2c.c > @@ -30,10 +30,9 @@ static int adau1781_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1781_i2c_remove(struct i2c_client *client) > +static void adau1781_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1781_i2c_ids[] = { > diff --git a/sound/soc/codecs/ak4375.c b/sound/soc/codecs/ak4375.c > index 9a7b662016b9..bfed08fe4b9e 100644 > --- a/sound/soc/codecs/ak4375.c > +++ b/sound/soc/codecs/ak4375.c > @@ -581,11 +581,9 @@ static int ak4375_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4375_i2c_remove(struct i2c_client *i2c) > +static void ak4375_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4375_of_match[] = { > diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c > index baa9ff5d0ce5..919aa0973050 100644 > --- a/sound/soc/codecs/ak4458.c > +++ b/sound/soc/codecs/ak4458.c > @@ -826,11 +826,9 @@ static int ak4458_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4458_i2c_remove(struct i2c_client *i2c) > +static void ak4458_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4458_of_match[] = { > diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c > index d8d9cc712d67..65a11cd39a43 100644 > --- a/sound/soc/codecs/ak4641.c > +++ b/sound/soc/codecs/ak4641.c > @@ -605,7 +605,7 @@ static int ak4641_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int ak4641_i2c_remove(struct i2c_client *i2c) > +static void ak4641_i2c_remove(struct i2c_client *i2c) >  { >         struct ak4641_platform_data *pdata = i2c->dev.platform_data; >   > @@ -617,8 +617,6 @@ static int ak4641_i2c_remove(struct i2c_client > *i2c) >                 if (gpio_is_valid(pdata->gpio_npdn)) >                         gpio_free(pdata->gpio_npdn); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ak4641_i2c_id[] = { > diff --git a/sound/soc/codecs/ak5558.c b/sound/soc/codecs/ak5558.c > index c94cfde3e4a8..df8140907ac5 100644 > --- a/sound/soc/codecs/ak5558.c > +++ b/sound/soc/codecs/ak5558.c > @@ -481,11 +481,9 @@ static int ak5558_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak5558_i2c_remove(struct i2c_client *i2c) > +static void ak5558_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak5558_i2c_dt_ids[] __maybe_unused > = { > diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c > index badfc55bc5fa..7aec12688da9 100644 > --- a/sound/soc/codecs/cs35l32.c > +++ b/sound/soc/codecs/cs35l32.c > @@ -498,14 +498,12 @@ static int cs35l32_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l32_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l32_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l32_private *cs35l32 = > i2c_get_clientdata(i2c_client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs35l32->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs35l33.c b/sound/soc/codecs/cs35l33.c > index 47dc0f6d90a2..46972c86fd88 100644 > --- a/sound/soc/codecs/cs35l33.c > +++ b/sound/soc/codecs/cs35l33.c > @@ -1251,7 +1251,7 @@ static int cs35l33_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l33_i2c_remove(struct i2c_client *client) > +static void cs35l33_i2c_remove(struct i2c_client *client) >  { >         struct cs35l33_private *cs35l33 = i2c_get_clientdata(client); >   > @@ -1260,8 +1260,6 @@ static int cs35l33_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l33->num_core_supplies, >                 cs35l33->core_supplies); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l33_of_match[] = { > diff --git a/sound/soc/codecs/cs35l34.c b/sound/soc/codecs/cs35l34.c > index 50d509a06071..c36b824b66e6 100644 > --- a/sound/soc/codecs/cs35l34.c > +++ b/sound/soc/codecs/cs35l34.c > @@ -1129,7 +1129,7 @@ static int cs35l34_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l34_i2c_remove(struct i2c_client *client) > +static void cs35l34_i2c_remove(struct i2c_client *client) >  { >         struct cs35l34_private *cs35l34 = i2c_get_clientdata(client); >   > @@ -1138,8 +1138,6 @@ static int cs35l34_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l34->num_core_supplies, >                 cs35l34->core_supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs35l34_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c > index 6b70afb70a67..0f6968a29ace 100644 > --- a/sound/soc/codecs/cs35l35.c > +++ b/sound/soc/codecs/cs35l35.c > @@ -1628,14 +1628,12 @@ static int cs35l35_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs35l35_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l35_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l35_private *cs35l35 = > i2c_get_clientdata(i2c_client); >   >         regulator_bulk_disable(cs35l35->num_supplies, cs35l35- > >supplies); >         gpiod_set_value_cansleep(cs35l35->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l35_of_match[] = { > diff --git a/sound/soc/codecs/cs35l36.c b/sound/soc/codecs/cs35l36.c > index dfe85dc2cd20..80844471309d 100644 > --- a/sound/soc/codecs/cs35l36.c > +++ b/sound/soc/codecs/cs35l36.c > @@ -1911,7 +1911,7 @@ static int cs35l36_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l36_i2c_remove(struct i2c_client *client) > +static void cs35l36_i2c_remove(struct i2c_client *client) >  { >         struct cs35l36_private *cs35l36 = i2c_get_clientdata(client); >   > @@ -1925,8 +1925,6 @@ static int cs35l36_i2c_remove(struct i2c_client > *client) >                 gpiod_set_value_cansleep(cs35l36->reset_gpio, 0); >   >         regulator_bulk_disable(cs35l36->num_supplies, cs35l36- > >supplies); > - > -       return 0; >  } >  static const struct of_device_id cs35l36_of_match[] = { >         {.compatible = "cirrus,cs35l36"}, > diff --git a/sound/soc/codecs/cs35l41-i2c.c > b/sound/soc/codecs/cs35l41-i2c.c > index 37c703c08fd5..3676b596f60b 100644 > --- a/sound/soc/codecs/cs35l41-i2c.c > +++ b/sound/soc/codecs/cs35l41-i2c.c > @@ -56,13 +56,11 @@ static int cs35l41_i2c_probe(struct i2c_client > *client) >         return cs35l41_probe(cs35l41, hw_cfg); >  } >   > -static int cs35l41_i2c_remove(struct i2c_client *client) > +static void cs35l41_i2c_remove(struct i2c_client *client) >  { >         struct cs35l41_private *cs35l41 = i2c_get_clientdata(client); >   >         cs35l41_remove(cs35l41); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/cs35l45-i2c.c > b/sound/soc/codecs/cs35l45-i2c.c > index 06c2ddffb9c5..39d28641429e 100644 > --- a/sound/soc/codecs/cs35l45-i2c.c > +++ b/sound/soc/codecs/cs35l45-i2c.c > @@ -36,13 +36,11 @@ static int cs35l45_i2c_probe(struct i2c_client > *client) >         return cs35l45_probe(cs35l45); >  } >   > -static int cs35l45_i2c_remove(struct i2c_client *client) > +static void cs35l45_i2c_remove(struct i2c_client *client) >  { >         struct cs35l45_private *cs35l45 = i2c_get_clientdata(client); >   >         cs35l45_remove(cs35l45); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l45_of_match[] = { > diff --git a/sound/soc/codecs/cs4234.c b/sound/soc/codecs/cs4234.c > index 881c5ba70c0e..18bddeb63762 100644 > --- a/sound/soc/codecs/cs4234.c > +++ b/sound/soc/codecs/cs4234.c > @@ -851,7 +851,7 @@ static int cs4234_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs4234_i2c_remove(struct i2c_client *i2c_client) > +static void cs4234_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4234 *cs4234 = i2c_get_clientdata(i2c_client); >         struct device *dev = &i2c_client->dev; > @@ -859,8 +859,6 @@ static int cs4234_i2c_remove(struct i2c_client > *i2c_client) >         snd_soc_unregister_component(dev); >         pm_runtime_disable(dev); >         cs4234_shutdown(cs4234); > - > -       return 0; >  } >   >  static int __maybe_unused cs4234_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c > index 86bfa8d5ec78..c16c0a0d3b56 100644 > --- a/sound/soc/codecs/cs4265.c > +++ b/sound/soc/codecs/cs4265.c > @@ -624,14 +624,12 @@ static int cs4265_i2c_probe(struct i2c_client > *i2c_client) >                         ARRAY_SIZE(cs4265_dai)); >  } >   > -static int cs4265_i2c_remove(struct i2c_client *i2c) > +static void cs4265_i2c_remove(struct i2c_client *i2c) >  { >         struct cs4265_private *cs4265 = i2c_get_clientdata(i2c); >   >         if (cs4265->reset_gpio) >                 gpiod_set_value_cansleep(cs4265->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs4265_of_match[] = { > diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c > index 531f63b01554..6bfddb1b9968 100644 > --- a/sound/soc/codecs/cs4270.c > +++ b/sound/soc/codecs/cs4270.c > @@ -651,13 +651,11 @@ static const struct regmap_config cs4270_regmap > = { >   * This function puts the chip into low power mode when the i2c > device >   * is removed. >   */ > -static int cs4270_i2c_remove(struct i2c_client *i2c_client) > +static void cs4270_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4270_private *cs4270 = > i2c_get_clientdata(i2c_client); >   >         gpiod_set_value_cansleep(cs4270->reset_gpio, 0); > - > -       return 0; >  } >   >  /** > diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c > index 4fade2388797..ab848fe5f721 100644 > --- a/sound/soc/codecs/cs42l42.c > +++ b/sound/soc/codecs/cs42l42.c > @@ -2342,7 +2342,7 @@ static int cs42l42_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs42l42_i2c_remove(struct i2c_client *i2c_client) > +static void cs42l42_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs42l42_private *cs42l42 = > i2c_get_clientdata(i2c_client); >   > @@ -2359,8 +2359,6 @@ static int cs42l42_i2c_remove(struct i2c_client > *i2c_client) >   >         gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); >         regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), > cs42l42->supplies); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l42_pm_ops = { > diff --git a/sound/soc/codecs/cs42l51-i2c.c > b/sound/soc/codecs/cs42l51-i2c.c > index 3613fb12d623..85238339fbca 100644 > --- a/sound/soc/codecs/cs42l51-i2c.c > +++ b/sound/soc/codecs/cs42l51-i2c.c > @@ -28,11 +28,9 @@ static int cs42l51_i2c_probe(struct i2c_client > *i2c) >         return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, > &config)); >  } >   > -static int cs42l51_i2c_remove(struct i2c_client *i2c) > +static void cs42l51_i2c_remove(struct i2c_client *i2c) >  { >         cs42l51_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l51_pm_ops = { > diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c > index 510c94265b1f..d1cae24d015f 100644 > --- a/sound/soc/codecs/cs42l56.c > +++ b/sound/soc/codecs/cs42l56.c > @@ -1321,13 +1321,12 @@ static int cs42l56_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs42l56_i2c_remove(struct i2c_client *client) > +static void cs42l56_i2c_remove(struct i2c_client *client) >  { >         struct cs42l56_private *cs42l56 = i2c_get_clientdata(client); >   >         regulator_bulk_disable(ARRAY_SIZE(cs42l56->supplies), >                                cs42l56->supplies); > -       return 0; >  } >   >  static const struct of_device_id cs42l56_of_match[] = { > diff --git a/sound/soc/codecs/cs42xx8-i2c.c > b/sound/soc/codecs/cs42xx8-i2c.c > index cb06a06d48b0..bd80e9fc907f 100644 > --- a/sound/soc/codecs/cs42xx8-i2c.c > +++ b/sound/soc/codecs/cs42xx8-i2c.c > @@ -30,11 +30,9 @@ static int cs42xx8_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cs42xx8_i2c_remove(struct i2c_client *i2c) > +static void cs42xx8_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_device_id cs42xx8_i2c_id[] = { > diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c > index a2bce0f9f247..944bb9a26ca9 100644 > --- a/sound/soc/codecs/cs43130.c > +++ b/sound/soc/codecs/cs43130.c > @@ -2584,7 +2584,7 @@ static int cs43130_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs43130_i2c_remove(struct i2c_client *client) > +static void cs43130_i2c_remove(struct i2c_client *client) >  { >         struct cs43130_private *cs43130 = i2c_get_clientdata(client); >   > @@ -2611,8 +2611,6 @@ static int cs43130_i2c_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130- > >supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs43130_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c > index 7069e9b54857..41472ed22209 100644 > --- a/sound/soc/codecs/cs4349.c > +++ b/sound/soc/codecs/cs4349.c > @@ -306,14 +306,12 @@ static int cs4349_i2c_probe(struct i2c_client > *client) >                 &cs4349_dai, 1); >  } >   > -static int cs4349_i2c_remove(struct i2c_client *client) > +static void cs4349_i2c_remove(struct i2c_client *client) >  { >         struct cs4349_private *cs4349 = i2c_get_clientdata(client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs4349->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c > index 360ca2ffd506..71298a18ee1a 100644 > --- a/sound/soc/codecs/cs53l30.c > +++ b/sound/soc/codecs/cs53l30.c > @@ -1044,7 +1044,7 @@ static int cs53l30_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs53l30_i2c_remove(struct i2c_client *client) > +static void cs53l30_i2c_remove(struct i2c_client *client) >  { >         struct cs53l30_private *cs53l30 = i2c_get_clientdata(client); >   > @@ -1053,8 +1053,6 @@ static int cs53l30_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_disable(ARRAY_SIZE(cs53l30->supplies), >                                cs53l30->supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cx2072x.c b/sound/soc/codecs/cx2072x.c > index b35debb5818d..c24915f7dec3 100644 > --- a/sound/soc/codecs/cx2072x.c > +++ b/sound/soc/codecs/cx2072x.c > @@ -1676,10 +1676,9 @@ static int cx2072x_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cx2072x_i2c_remove(struct i2c_client *i2c) > +static void cx2072x_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id cx2072x_i2c_id[] = { > diff --git a/sound/soc/codecs/max98090.c > b/sound/soc/codecs/max98090.c > index 576277a82d41..416e6f660541 100644 > --- a/sound/soc/codecs/max98090.c > +++ b/sound/soc/codecs/max98090.c > @@ -2618,11 +2618,9 @@ static void max98090_i2c_shutdown(struct > i2c_client *i2c) >         msleep(40); >  } >   > -static int max98090_i2c_remove(struct i2c_client *client) > +static void max98090_i2c_remove(struct i2c_client *client) >  { >         max98090_i2c_shutdown(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/max9860.c b/sound/soc/codecs/max9860.c > index 82f20a8e27ad..2b0d0298da83 100644 > --- a/sound/soc/codecs/max9860.c > +++ b/sound/soc/codecs/max9860.c > @@ -702,14 +702,13 @@ static int max9860_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max9860_remove(struct i2c_client *i2c) > +static void max9860_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct max9860_priv *max9860 = dev_get_drvdata(dev); >   >         pm_runtime_disable(dev); >         regulator_disable(max9860->dvddio); > -       return 0; >  } >   >  static const struct i2c_device_id max9860_i2c_id[] = { > diff --git a/sound/soc/codecs/max98927.c > b/sound/soc/codecs/max98927.c > index b7cff76d7b5b..c9694ba9c341 100644 > --- a/sound/soc/codecs/max98927.c > +++ b/sound/soc/codecs/max98927.c > @@ -935,15 +935,13 @@ static int max98927_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max98927_i2c_remove(struct i2c_client *i2c) > +static void max98927_i2c_remove(struct i2c_client *i2c) >  { >         struct max98927_priv *max98927 = i2c_get_clientdata(i2c); >   >         if (max98927->reset_gpio) { >                 gpiod_set_value_cansleep(max98927->reset_gpio, 1); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id max98927_i2c_id[] = { > diff --git a/sound/soc/codecs/mt6660.c b/sound/soc/codecs/mt6660.c > index ba11555796ad..4971cd0b90f8 100644 > --- a/sound/soc/codecs/mt6660.c > +++ b/sound/soc/codecs/mt6660.c > @@ -516,14 +516,13 @@ static int mt6660_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt6660_i2c_remove(struct i2c_client *client) > +static void mt6660_i2c_remove(struct i2c_client *client) >  { >         struct mt6660_chip *chip = i2c_get_clientdata(client); >   >         pm_runtime_disable(chip->dev); >         pm_runtime_set_suspended(chip->dev); >         mutex_destroy(&chip->io_lock); > -       return 0; >  } >   >  static int __maybe_unused mt6660_i2c_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/nau8821.c b/sound/soc/codecs/nau8821.c > index ce4e7f46bb06..dcae41ba2e02 100644 > --- a/sound/soc/codecs/nau8821.c > +++ b/sound/soc/codecs/nau8821.c > @@ -1665,13 +1665,11 @@ static int nau8821_i2c_probe(struct > i2c_client *i2c) >         return ret; >  } >   > -static int nau8821_i2c_remove(struct i2c_client *i2c_client) > +static void nau8821_i2c_remove(struct i2c_client *i2c_client) >  { >         struct nau8821 *nau8821 = i2c_get_clientdata(i2c_client); >   >         devm_free_irq(nau8821->dev, nau8821->irq, nau8821); > - > -       return 0; >  } >   >  static const struct i2c_device_id nau8821_i2c_ids[] = { > diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c > index 20e45a337b8f..bd34c84507da 100644 > --- a/sound/soc/codecs/nau8825.c > +++ b/sound/soc/codecs/nau8825.c > @@ -2669,10 +2669,8 @@ static int nau8825_i2c_probe(struct i2c_client > *i2c) >                 &nau8825_dai, 1); >  } >   > -static int nau8825_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void nau8825_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id nau8825_i2c_ids[] = { >         { "nau8825", 0 }, > diff --git a/sound/soc/codecs/pcm1789-i2c.c > b/sound/soc/codecs/pcm1789-i2c.c > index 1d2f7480a6e4..fafe0dcbe4ea 100644 > --- a/sound/soc/codecs/pcm1789-i2c.c > +++ b/sound/soc/codecs/pcm1789-i2c.c > @@ -27,11 +27,9 @@ static int pcm1789_i2c_probe(struct i2c_client > *client) >         return pcm1789_common_init(&client->dev, regmap); >  } >   > -static int pcm1789_i2c_remove(struct i2c_client *client) > +static void pcm1789_i2c_remove(struct i2c_client *client) >  { >         pcm1789_common_exit(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/pcm3168a-i2c.c > b/sound/soc/codecs/pcm3168a-i2c.c > index c0fa0dc80e8f..a0eec82e9872 100644 > --- a/sound/soc/codecs/pcm3168a-i2c.c > +++ b/sound/soc/codecs/pcm3168a-i2c.c > @@ -26,11 +26,9 @@ static int pcm3168a_i2c_probe(struct i2c_client > *i2c) >         return pcm3168a_probe(&i2c->dev, regmap); >  } >   > -static int pcm3168a_i2c_remove(struct i2c_client *i2c) > +static void pcm3168a_i2c_remove(struct i2c_client *i2c) >  { >         pcm3168a_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcm3168a_i2c_id[] = { > diff --git a/sound/soc/codecs/pcm512x-i2c.c > b/sound/soc/codecs/pcm512x-i2c.c > index 81754e141a55..9dfbbe8f4a0b 100644 > --- a/sound/soc/codecs/pcm512x-i2c.c > +++ b/sound/soc/codecs/pcm512x-i2c.c > @@ -29,10 +29,9 @@ static int pcm512x_i2c_probe(struct i2c_client > *i2c) >         return pcm512x_probe(&i2c->dev, regmap); >  } >   > -static int pcm512x_i2c_remove(struct i2c_client *i2c) > +static void pcm512x_i2c_remove(struct i2c_client *i2c) >  { >         pcm512x_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id pcm512x_i2c_id[] = { > diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c > index ab093bdb5552..cb2147f86818 100644 > --- a/sound/soc/codecs/rt274.c > +++ b/sound/soc/codecs/rt274.c > @@ -1207,14 +1207,12 @@ static int rt274_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt274_i2c_remove(struct i2c_client *i2c) > +static void rt274_i2c_remove(struct i2c_client *i2c) >  { >         struct rt274_priv *rt274 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt274); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c > index ad8ea1fa7c23..c66db0760a0f 100644 > --- a/sound/soc/codecs/rt286.c > +++ b/sound/soc/codecs/rt286.c > @@ -1254,14 +1254,12 @@ static int rt286_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt286_i2c_remove(struct i2c_client *i2c) > +static void rt286_i2c_remove(struct i2c_client *i2c) >  { >         struct rt286_priv *rt286 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt286); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c > index c291786dc82d..9f44eabfdbdb 100644 > --- a/sound/soc/codecs/rt298.c > +++ b/sound/soc/codecs/rt298.c > @@ -1297,14 +1297,12 @@ static int rt298_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt298_i2c_remove(struct i2c_client *i2c) > +static void rt298_i2c_remove(struct i2c_client *i2c) >  { >         struct rt298_priv *rt298 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt298); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c > index 37f1bf552eff..7a994abeedb0 100644 > --- a/sound/soc/codecs/rt5616.c > +++ b/sound/soc/codecs/rt5616.c > @@ -1389,10 +1389,8 @@ static int rt5616_i2c_probe(struct i2c_client > *i2c) >                                       rt5616_dai, > ARRAY_SIZE(rt5616_dai)); >  } >   > -static int rt5616_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void rt5616_i2c_remove(struct i2c_client *i2c) > +{} >   >  static void rt5616_i2c_shutdown(struct i2c_client *client) >  { > diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c > index c941e878471c..d82264edd25c 100644 > --- a/sound/soc/codecs/rt5631.c > +++ b/sound/soc/codecs/rt5631.c > @@ -1721,10 +1721,8 @@ static int rt5631_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5631_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void rt5631_i2c_remove(struct i2c_client *client) > +{} >   >  static struct i2c_driver rt5631_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c > index 507aba8de3cc..e77bdbc1a098 100644 > --- a/sound/soc/codecs/rt5645.c > +++ b/sound/soc/codecs/rt5645.c > @@ -4146,7 +4146,7 @@ static int rt5645_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5645_i2c_remove(struct i2c_client *i2c) > +static void rt5645_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5645_priv *rt5645 = i2c_get_clientdata(i2c); >   > @@ -4163,8 +4163,6 @@ static int rt5645_i2c_remove(struct i2c_client > *i2c) >         cancel_delayed_work_sync(&rt5645->rcclock_work); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5645->supplies), rt5645- > >supplies); > - > -       return 0; >  } >   >  static void rt5645_i2c_shutdown(struct i2c_client *i2c) > diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c > index e51eed8a79ab..15296e0fa545 100644 > --- a/sound/soc/codecs/rt5663.c > +++ b/sound/soc/codecs/rt5663.c > @@ -3711,7 +3711,7 @@ static int rt5663_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5663_i2c_remove(struct i2c_client *i2c) > +static void rt5663_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5663_priv *rt5663 = i2c_get_clientdata(i2c); >   > @@ -3719,8 +3719,6 @@ static int rt5663_i2c_remove(struct i2c_client > *i2c) >                 free_irq(i2c->irq, rt5663); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5663->supplies), rt5663- > >supplies); > - > -       return 0; >  } >   >  static void rt5663_i2c_shutdown(struct i2c_client *client) > diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c > index 8a97f6db04d5..eb73e262457c 100644 > --- a/sound/soc/codecs/rt5670.c > +++ b/sound/soc/codecs/rt5670.c > @@ -3321,11 +3321,9 @@ static int rt5670_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5670_i2c_remove(struct i2c_client *i2c) > +static void rt5670_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_driver rt5670_i2c_driver = { > diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c > index 4a8c267d4fbc..3161022f0757 100644 > --- a/sound/soc/codecs/rt5677.c > +++ b/sound/soc/codecs/rt5677.c > @@ -5694,11 +5694,9 @@ static int rt5677_i2c_probe(struct i2c_client > *i2c) >                                       rt5677_dai, > ARRAY_SIZE(rt5677_dai)); >  } >   > -static int rt5677_i2c_remove(struct i2c_client *i2c) > +static void rt5677_i2c_remove(struct i2c_client *i2c) >  { >         rt5677_free_gpio(i2c); > - > -       return 0; >  } >   >  static struct i2c_driver rt5677_i2c_driver = { > diff --git a/sound/soc/codecs/rt5682-i2c.c b/sound/soc/codecs/rt5682- > i2c.c > index 3f72f6093436..2935c1bb81f3 100644 > --- a/sound/soc/codecs/rt5682-i2c.c > +++ b/sound/soc/codecs/rt5682-i2c.c > @@ -302,11 +302,9 @@ static void rt5682_i2c_shutdown(struct > i2c_client *client) >         rt5682_reset(rt5682); >  } >   > -static int rt5682_i2c_remove(struct i2c_client *client) > +static void rt5682_i2c_remove(struct i2c_client *client) >  { >         rt5682_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682_of_match[] = { > diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c > index 4d44eddee901..a80c686613f4 100644 > --- a/sound/soc/codecs/rt5682s.c > +++ b/sound/soc/codecs/rt5682s.c > @@ -3195,11 +3195,9 @@ static void rt5682s_i2c_shutdown(struct > i2c_client *client) >         rt5682s_reset(rt5682s); >  } >   > -static int rt5682s_i2c_remove(struct i2c_client *client) > +static void rt5682s_i2c_remove(struct i2c_client *client) >  { >         rt5682s_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682s_of_match[] = { > diff --git a/sound/soc/codecs/rt9120.c b/sound/soc/codecs/rt9120.c > index da495bdc8415..644300e88b4c 100644 > --- a/sound/soc/codecs/rt9120.c > +++ b/sound/soc/codecs/rt9120.c > @@ -572,11 +572,10 @@ static int rt9120_probe(struct i2c_client *i2c) >                                                &rt9120_dai, 1); >  } >   > -static int rt9120_remove(struct i2c_client *i2c) > +static void rt9120_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); >         pm_runtime_set_suspended(&i2c->dev); > -       return 0; >  } >   >  static int __maybe_unused rt9120_runtime_suspend(struct device *dev) > diff --git a/sound/soc/codecs/sgtl5000.c > b/sound/soc/codecs/sgtl5000.c > index 2aa48aef6a97..f29bd50fe4cd 100644 > --- a/sound/soc/codecs/sgtl5000.c > +++ b/sound/soc/codecs/sgtl5000.c > @@ -1791,15 +1791,13 @@ static int sgtl5000_i2c_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int sgtl5000_i2c_remove(struct i2c_client *client) > +static void sgtl5000_i2c_remove(struct i2c_client *client) >  { >         struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client); >   >         clk_disable_unprepare(sgtl5000->mclk); >         regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000- > >supplies); >         regulator_bulk_free(sgtl5000->num_supplies, sgtl5000- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgtl5000_id[] = { > diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c > index 9189fb3648f7..0676c822458f 100644 > --- a/sound/soc/codecs/sta350.c > +++ b/sound/soc/codecs/sta350.c > @@ -1243,10 +1243,8 @@ static int sta350_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int sta350_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void sta350_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id sta350_i2c_id[] = { >         { "sta350", 0 }, > diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c > index b5c9c61ff5a8..0259ae96d97e 100644 > --- a/sound/soc/codecs/tas2552.c > +++ b/sound/soc/codecs/tas2552.c > @@ -737,10 +737,9 @@ static int tas2552_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas2552_i2c_remove(struct i2c_client *client) > +static void tas2552_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id tas2552_id[] = { > diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c > index 5c0df3cd4832..b0a73244ee31 100644 > --- a/sound/soc/codecs/tas5086.c > +++ b/sound/soc/codecs/tas5086.c > @@ -982,10 +982,8 @@ static int tas5086_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int tas5086_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void tas5086_i2c_remove(struct i2c_client *i2c) > +{} >   >  static struct i2c_driver tas5086_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c > index 7b599664db20..1a060e85621f 100644 > --- a/sound/soc/codecs/tas571x.c > +++ b/sound/soc/codecs/tas571x.c > @@ -885,13 +885,11 @@ static int tas571x_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas571x_i2c_remove(struct i2c_client *client) > +static void tas571x_i2c_remove(struct i2c_client *client) >  { >         struct tas571x_private *priv = i2c_get_clientdata(client); >   >         regulator_bulk_disable(priv->chip->num_supply_names, priv- > >supplies); > - > -       return 0; >  } >   >  static const struct of_device_id tas571x_of_match[] __maybe_unused = > { > diff --git a/sound/soc/codecs/tas5805m.c > b/sound/soc/codecs/tas5805m.c > index fa0e81ec875a..4782d9c47992 100644 > --- a/sound/soc/codecs/tas5805m.c > +++ b/sound/soc/codecs/tas5805m.c > @@ -523,7 +523,7 @@ static int tas5805m_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int tas5805m_i2c_remove(struct i2c_client *i2c) > +static void tas5805m_i2c_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct tas5805m_priv *tas5805m = dev_get_drvdata(dev); > @@ -532,7 +532,6 @@ static int tas5805m_i2c_remove(struct i2c_client > *i2c) >         gpiod_set_value(tas5805m->gpio_pdn_n, 0); >         usleep_range(10000, 15000); >         regulator_disable(tas5805m->pvdd); > -       return 0; >  } >   >  static const struct i2c_device_id tas5805m_i2c_id[] = { > diff --git a/sound/soc/codecs/tas6424.c b/sound/soc/codecs/tas6424.c > index 22b53856e691..fd1f37d48982 100644 > --- a/sound/soc/codecs/tas6424.c > +++ b/sound/soc/codecs/tas6424.c > @@ -775,7 +775,7 @@ static int tas6424_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas6424_i2c_remove(struct i2c_client *client) > +static void tas6424_i2c_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct tas6424_data *tas6424 = dev_get_drvdata(dev); > @@ -791,8 +791,6 @@ static int tas6424_i2c_remove(struct i2c_client > *client) >                                      tas6424->supplies); >         if (ret < 0) >                 dev_err(dev, "unable to disable supplies: %d\n", > ret); > - > -       return 0; >  } >   >  static const struct i2c_device_id tas6424_i2c_ids[] = { > diff --git a/sound/soc/codecs/tlv320adc3xxx.c > b/sound/soc/codecs/tlv320adc3xxx.c > index 82532ad00c3c..82d78e7c610e 100644 > --- a/sound/soc/codecs/tlv320adc3xxx.c > +++ b/sound/soc/codecs/tlv320adc3xxx.c > @@ -1427,7 +1427,7 @@ static int adc3xxx_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int __exit adc3xxx_i2c_remove(struct i2c_client *client) > +static void __exit adc3xxx_i2c_remove(struct i2c_client *client) >  { >         struct adc3xxx *adc3xxx = i2c_get_clientdata(client); >   > @@ -1435,7 +1435,6 @@ static int __exit adc3xxx_i2c_remove(struct > i2c_client *client) >                 clk_disable_unprepare(adc3xxx->mclk); >         adc3xxx_free_gpio(adc3xxx); >         snd_soc_unregister_component(&client->dev); > -       return 0; >  } >   >  static const struct of_device_id tlv320adc3xxx_of_match[] = { > diff --git a/sound/soc/codecs/tlv320aic32x4-i2c.c > b/sound/soc/codecs/tlv320aic32x4-i2c.c > index 0645239901b1..d1e543ca3521 100644 > --- a/sound/soc/codecs/tlv320aic32x4-i2c.c > +++ b/sound/soc/codecs/tlv320aic32x4-i2c.c > @@ -45,11 +45,9 @@ static int aic32x4_i2c_probe(struct i2c_client > *i2c) >         return aic32x4_probe(&i2c->dev, regmap); >  } >   > -static int aic32x4_i2c_remove(struct i2c_client *i2c) > +static void aic32x4_i2c_remove(struct i2c_client *i2c) >  { >         aic32x4_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id aic32x4_i2c_id[] = { > diff --git a/sound/soc/codecs/tlv320aic3x-i2c.c > b/sound/soc/codecs/tlv320aic3x-i2c.c > index 7bd9ce08bb7b..d7e94d564dbf 100644 > --- a/sound/soc/codecs/tlv320aic3x-i2c.c > +++ b/sound/soc/codecs/tlv320aic3x-i2c.c > @@ -41,11 +41,9 @@ static int aic3x_i2c_probe(struct i2c_client *i2c) >         return aic3x_probe(&i2c->dev, regmap, id->driver_data); >  } >   > -static int aic3x_i2c_remove(struct i2c_client *i2c) > +static void aic3x_i2c_remove(struct i2c_client *i2c) >  { >         aic3x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id aic3x_of_id[] = { > diff --git a/sound/soc/codecs/tlv320dac33.c > b/sound/soc/codecs/tlv320dac33.c > index 66f1d1cd6cf0..8a86bfe8266c 100644 > --- a/sound/soc/codecs/tlv320dac33.c > +++ b/sound/soc/codecs/tlv320dac33.c > @@ -1539,7 +1539,7 @@ static int dac33_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dac33_i2c_remove(struct i2c_client *client) > +static void dac33_i2c_remove(struct i2c_client *client) >  { >         struct tlv320dac33_priv *dac33 = i2c_get_clientdata(client); >   > @@ -1548,8 +1548,6 @@ static int dac33_i2c_remove(struct i2c_client > *client) >   >         if (dac33->power_gpio >= 0) >                 gpio_free(dac33->power_gpio); > - > -       return 0; >  } >   >  static const struct i2c_device_id tlv320dac33_i2c_id[] = { > diff --git a/sound/soc/codecs/wm1250-ev1.c b/sound/soc/codecs/wm1250- > ev1.c > index b6366dea15a6..49dbd19d26cc 100644 > --- a/sound/soc/codecs/wm1250-ev1.c > +++ b/sound/soc/codecs/wm1250-ev1.c > @@ -229,11 +229,9 @@ static int wm1250_ev1_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm1250_ev1_remove(struct i2c_client *i2c) > +static void wm1250_ev1_remove(struct i2c_client *i2c) >  { >         wm1250_ev1_free(i2c); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm1250_ev1_i2c_id[] = { > diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c > index 1cd544580c83..8557c33eeee7 100644 > --- a/sound/soc/codecs/wm2200.c > +++ b/sound/soc/codecs/wm2200.c > @@ -2415,7 +2415,7 @@ static int wm2200_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm2200_i2c_remove(struct i2c_client *i2c) > +static void wm2200_i2c_remove(struct i2c_client *i2c) >  { >         struct wm2200_priv *wm2200 = i2c_get_clientdata(i2c); >   > @@ -2428,8 +2428,6 @@ static int wm2200_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); >         regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), >                                wm2200->core_supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c > index a89870918174..211ef8190c61 100644 > --- a/sound/soc/codecs/wm5100.c > +++ b/sound/soc/codecs/wm5100.c > @@ -2636,7 +2636,7 @@ static int wm5100_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm5100_i2c_remove(struct i2c_client *i2c) > +static void wm5100_i2c_remove(struct i2c_client *i2c) >  { >         struct wm5100_priv *wm5100 = i2c_get_clientdata(i2c); >   > @@ -2652,8 +2652,6 @@ static int wm5100_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0); >                 gpio_free(wm5100->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8804-i2c.c b/sound/soc/codecs/wm8804- > i2c.c > index 04dc9fb5afb4..3ce1a39d76eb 100644 > --- a/sound/soc/codecs/wm8804-i2c.c > +++ b/sound/soc/codecs/wm8804-i2c.c > @@ -25,10 +25,9 @@ static int wm8804_i2c_probe(struct i2c_client > *i2c) >         return wm8804_probe(&i2c->dev, regmap); >  } >   > -static int wm8804_i2c_remove(struct i2c_client *i2c) > +static void wm8804_i2c_remove(struct i2c_client *i2c) >  { >         wm8804_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id wm8804_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c > index 84a3daf0c11e..28e296f2f969 100644 > --- a/sound/soc/codecs/wm8900.c > +++ b/sound/soc/codecs/wm8900.c > @@ -1283,10 +1283,8 @@ static int wm8900_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8900_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8900_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8900_i2c_id[] = { >         { "wm8900", 0 }, > diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c > index 3c95c2aea515..967be629b846 100644 > --- a/sound/soc/codecs/wm8903.c > +++ b/sound/soc/codecs/wm8903.c > @@ -2183,7 +2183,7 @@ static int wm8903_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8903_i2c_remove(struct i2c_client *client) > +static void wm8903_i2c_remove(struct i2c_client *client) >  { >         struct wm8903_priv *wm8903 = i2c_get_clientdata(client); >   > @@ -2192,8 +2192,6 @@ static int wm8903_i2c_remove(struct i2c_client > *client) >         if (client->irq) >                 free_irq(client->irq, wm8903); >         wm8903_free_gpio(wm8903); > - > -       return 0; >  } >   >  static const struct of_device_id wm8903_of_match[] = { > diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c > index 8c8f32b23083..3c4cd47f5ad9 100644 > --- a/sound/soc/codecs/wm8960.c > +++ b/sound/soc/codecs/wm8960.c > @@ -1487,10 +1487,8 @@ static int wm8960_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8960_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8960_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8960_i2c_id[] = { >         { "wm8960", 0 }, > diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c > index 5cca89364280..85089304f5e7 100644 > --- a/sound/soc/codecs/wm8962.c > +++ b/sound/soc/codecs/wm8962.c > @@ -3779,10 +3779,9 @@ static int wm8962_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8962_i2c_remove(struct i2c_client *client) > +static void wm8962_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c > index f4da77ec9d6c..fe1c5aab0ab6 100644 > --- a/sound/soc/codecs/wm8993.c > +++ b/sound/soc/codecs/wm8993.c > @@ -1723,15 +1723,13 @@ static int wm8993_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8993_i2c_remove(struct i2c_client *i2c) > +static void wm8993_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, wm8993); >         regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8993_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c > index f7bb27d1c76d..5f2b3af47c12 100644 > --- a/sound/soc/codecs/wm8996.c > +++ b/sound/soc/codecs/wm8996.c > @@ -3067,7 +3067,7 @@ static int wm8996_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8996_i2c_remove(struct i2c_client *client) > +static void wm8996_i2c_remove(struct i2c_client *client) >  { >         struct wm8996_priv *wm8996 = i2c_get_clientdata(client); >   > @@ -3076,8 +3076,6 @@ static int wm8996_i2c_remove(struct i2c_client > *client) >                 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); >                 gpio_free(wm8996->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8996_i2c_id[] = { > diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c > index 87b58448cea7..6184d8c06564 100644 > --- a/sound/soc/codecs/wm9081.c > +++ b/sound/soc/codecs/wm9081.c > @@ -1357,10 +1357,8 @@ static int wm9081_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm9081_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm9081_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm9081_i2c_id[] = { >         { "wm9081", 0 }, From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 33D37CCA47C for ; Wed, 29 Jun 2022 20:39:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B078710E0A8; Wed, 29 Jun 2022 20:39:18 +0000 (UTC) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1140110E3B9 for ; Wed, 29 Jun 2022 14:31:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656513105; x=1688049105; h=message-id:subject:from:to:cc:date:in-reply-to: references:mime-version:content-transfer-encoding; bh=ovERUMxy5cHPu6k6hYcCFHDSxfmFe62BgY6RoX75pBU=; b=UuQclhVnlfoRqMT5LPXA09oEUTw98cyMl8MUac+OdQTu0S8DJyU5B4Ty qaloISh6fBJGAbx7qjdbHJE5CM9QAmnDn2SWlr+70U4vhuEE8XZQ27Qbr wq3S/ZnL2vkQOUaXZ7PG+4rli2Xeju6ijGUhY6ragqD5vV8uUJ+L1vwEu 7gCrADNabIknPO4rZF/mFP4oFw+utCr0s3ROJhbFIrrUXbzFCkHTnMCsj CtvVICphiAwmox1TF9MhJgqux42D+g12COlHMG5Awnard/OxY22XmUc73 ClzBkcWe/mXrdpgKHyZ8RvAXVol4iwOWvL4/eQ/XisspUyf1Onh/FzygE w==; X-IronPort-AV: E=McAfee;i="6400,9594,10392"; a="343732487" X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="343732487" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP; 29 Jun 2022 07:31:23 -0700 X-IronPort-AV: E=Sophos;i="5.92,231,1650956400"; d="scan'208";a="647415537" Received: from egolubev-mobl.amr.corp.intel.com (HELO spandruv-desk1.amr.corp.intel.com) ([10.209.68.9]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2022 07:31:09 -0700 Message-ID: Subject: Re: [PATCH 6/6] i2c: Make remove callback return void From: srinivas pandruvada To: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Wolfram Sang Date: Wed, 29 Jun 2022 07:31:08 -0700 In-Reply-To: <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> References: <20220628140313.74984-1-u.kleine-koenig@pengutronix.de> <20220628140313.74984-7-u.kleine-koenig@pengutronix.de> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.4 (3.42.4-2.fc35) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Wed, 29 Jun 2022 20:39:17 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Lunn , Ricardo Ribalda , Jimmy Su , Sekhar Nori , Gwendal Grignou , dri-devel@lists.freedesktop.org, Jaroslav Kysela , Benjamin Tissoires , Paul Mackerras , Minghao Chi , Pavel Machek , Miquel Raynal , Heikki Krogerus , Evgeniy Polyakov , Matt Johnston , Olli Salonen , Angela Czubak , Mauro Carvalho Chehab , Luka Perkov , Sean Young , Dave Stevenson , Michael Ellerman , Zheyu Ma , Javier Martinez Canillas , Christophe Leroy , Chanwoo Choi , linux-omap@vger.kernel.org, Wenyou Yang , Dongchun Zhu , Miaoqian Lin , Steve Longerbeam , Bingbu Cao , Shunqian Zheng , lijian , Dan Carpenter , Bartlomiej Zolnierkiewicz , Viorel Suman , Petr Machata , Guido =?ISO-8859-1?Q?G=FCnther?= , Jean Delvare , linux-serial@vger.kernel.org, linux-pm@vger.kernel.org, linux-mtd@lists.infradead.org, Eddie James , Riku Voipio , James Schulman , Scott Wood , Cai Huoqing , Jonas Malaco , Hsin-Yi Wang , Haibo Chen , Petr Cvek , linux-leds@vger.kernel.org, Joe Tessler , Andrey Konovalov , Andy Shevchenko , Robert Jones , George Joseph , Vincent Knecht , Robin van der Gracht , Randy Dunlap , linux-stm32@st-md-mailman.stormreply.com, Michael Tretter , Geert Uytterhoeven , Phong LE , Daniel Beer , Krzysztof Opasiak , Bjorn Andersson , linux-crypto@vger.kernel.org, Pengutronix Kernel Team , Heungjun Kim , Hans Verkuil , David Lin , Vladimir Oltean , David Rhodes , Claudiu Beznea , Arnaud Ferraris , Jean-Baptiste Maneyrol , Alexandre Belloni , Dan Robertson , Martyn Welch , Jiri Slaby , devicetree@vger.kernel.org, David Airlie , Jon Nettleton , linux-staging@lists.linux.dev, Marco Felsch , Wim Van Sebroeck , Sebastian Reichel , Max Filippov , "Lad, Prabhakar" , Thierry Reding , linux-i2c@vger.kernel.org, Martiros Shakhzadyan , Guenter Roeck , Matthias Schwarzott , Sylwester Nawrocki , Dmitry Rokosov , Marek =?ISO-8859-1?Q?Beh=FAn?= , Saranya Gopal , Corey Minyard , Evgeny Novikov , Frank Rowand , Bartosz Golaszewski , Manivannan Sadhasivam , Pierre-Louis Bossart , Eric Dumazet , linux-clk@vger.kernel.org, Nathan Chancellor , alsa-devel@alsa-project.org, MyungJoo Ham , Charles Gorand , Jagan Teki , Vijendar Mukunda , Miguel Ojeda , Kyungmin Park , Tianshu Qiu , Martin Donnelly , Woojung Huh , Rudolf Marek , Charles Keepax , linux-watchdog@vger.kernel.org, Michael Hennerich , Ido Schimmel , acpi4asus-user@lists.sourceforge.net, Simon Trimmer , Ricard Wanderlof , Rikard Falkeborn , Alex Deucher , wengjianfeng , Jiri Valek - 2N , linux-rpi-kernel@lists.infradead.org, Biju Das , Wayne Chang , Chen-Yu Tsai , Sing-Han Chen , linux-arm-kernel@lists.infradead.org, Niklas =?ISO-8859-1?Q?S=F6derlund?= , Hans de Goede , Stephen Boyd , Maslov Dmitry , linux-gpio@vger.kernel.org, Jens Frederich , Douglas Anderson , Peter Rosin , Paul Kocialkowski , Jarkko Sakkinen , linux-usb@vger.kernel.org, Jacopo Mondi , Maxime Coquelin , CGEL ZTE , Colin Leroy , platform-driver-x86@vger.kernel.org, linux-integrity@vger.kernel.org, Kevin Tsai , Pali =?ISO-8859-1?Q?Roh=E1r?= , Jonathan Cameron , Heiner Kallweit , Arec Kao , Crt Mori , Jose Cazarin , Neil Armstrong , linux-iio@vger.kernel.org, Tom Rix , Michael Turquette , Peter Senna Tschudin , Benjamin Mugnier , Nuno =?ISO-8859-1?Q?S=E1?= , Jan-Simon Moeller , Wei Yongjun , Laurent Pinchart , Andrzej Hajda , Nikita Travkin , Jeremy Kerr , Jasmin Jessich , Sam Ravnborg , Kevin Cernekee , Alyssa Rosenzweig , linux-rtc@vger.kernel.org, Daniel Thompson , Florian Fainelli , Lucas Tanure , Stefan Mavrodiev , Masahiro Yamada , Sylvain Petinot , netdev@vger.kernel.org, Kieran Bingham , Jernej Skrabec , Xin Ji , Seven Lee , Matt Ranostay , Broadcom internal kernel review list , Adrien Grassein , Yang Yingliang , chrome-platform@lists.linux.dev, Mats Randgaard , Paolo Abeni , Alexey Dobriyan , Joel Stanley , linux-input@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Kees Cook , Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , Jonas Karlman , Yang Li , Jiri Kosina , Akinobu Mita , Mark Gross , Richard Fitzgerald , Mark Brown , linux-media@vger.kernel.org, Maxime Ripard , Sven Peter , Martin Kepplinger , openipmi-developer@lists.sourceforge.net, Robert Marko , "Daniel W. S. Almeida" , Chiranjeevi Rapolu , Alessandro Zummo , linux-hwmon@vger.kernel.org, Felipe Balbi , Stephan Gerhold , Support Opensource , Alexandru Ardelean , Dmitry Torokhov , Marc Hulsman , Corentin Chary , Stephen Kitt , Daniel Scally , linux-fbdev@vger.kernel.org, Andrey Ryabinin , Arnd Bergmann , Kirill Shilimanov , Sakari Ailus , patches@opensource.cirrus.com, Zheng Yongjun , Alejandro Tafalla , "David S. Miller" , Daniel Palmer , Hector Martin , Moses Christopher Bollavarapu , Vignesh Raghavendra , Nick Dyer , Greg Kroah-Hartman , Tony Lindgren , Alexandre Torgue , Takashi Iwai , Paul Cercueil , Mac Chiang , Antoniu Miclaus , Alexander Potapenko , Adam Ford , Peter Huewe , UNGLinuxDriver@microchip.com, Lee Jones , Alexey Khoroshilov , Marek Vasut , Yizhuo , Vincenzo Frascino , Eric Piel , Herbert Xu , Tobias Schrammm , Richard Weinberger , Tomasz Duszynski , Janusz Krzysztofik , Russell King , linux-pwm@vger.kernel.org, Jason Gunthorpe , Thomas Zimmermann , Bastien Nocera , Jingoo Han , Jakub Kicinski , Vivien Didelot , Shawn Tu , Leon Luo , Yan Lei , Akihiro Tsukada , Tudor Ambarus , Oliver Graute , Alistair Francis , Dongliang Mu , Jonathan =?ISO-8859-1?Q?Neusch=E4fer?= , Eduardo Valentin , Rui Miguel Silva , Michael Srba , Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , kasan-dev@googlegroups.com, "Paul J. Murphy" , Nicola Lunghi , Daniele Alessandrelli , Dmitry Vyukov , Ramesh Shanmugasundaram , Liam Girdwood , Juerg Haefliger , Oder Chiou , Shengjiu Wang , Nicolas Ferre , Robert Foss , Krzysztof Kozlowski , Alvin =?UTF-8?Q?=C5=A0ipraga?= , Luca Ceresoli , =?ISO-8859-1?Q?Jos=E9_Exp=F3sito?= , Johannes Berg , Colin Ian King , Maximilian Luz , Helge Deller Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Tue, 2022-06-28 at 16:03 +0200, Uwe Kleine-König wrote: > From: Uwe Kleine-König > > The value returned by an i2c driver's remove function is mostly > ignored. > (Only an error message is printed if the value is non-zero that the > error is ignored.) > > So change the prototype of the remove function to return no value. > This > way driver authors are not tempted to assume that passing an error to > the upper layer is a good idea. All drivers are adapted accordingly. > There is no intended change of behaviour, all callbacks were prepared > to > return 0 before. > > Signed-off-by: Uwe Kleine-König For drivers/iio/accel/bmc150-accel-i2c.c | 4 +--- drivers/iio/accel/kxcjk-1013.c | 4 +--- Acked-by: Srinivas Pandruvada Thanks, Srinivas > --- >  Documentation/i2c/writing-clients.rst                     | 2 +- >  arch/arm/mach-davinci/board-dm644x-evm.c                  | 3 +-- >  arch/arm/mach-davinci/board-dm646x-evm.c                  | 3 +-- >  arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c            | 3 +-- >  drivers/auxdisplay/ht16k33.c                              | 4 +--- >  drivers/auxdisplay/lcd2s.c                                | 3 +-- >  drivers/char/ipmi/ipmb_dev_int.c                          | 4 +--- >  drivers/char/ipmi/ipmi_ipmb.c                             | 4 +--- >  drivers/char/ipmi/ipmi_ssif.c                             | 6 ++---- >  drivers/char/tpm/st33zp24/i2c.c                           | 4 +--- >  drivers/char/tpm/tpm_i2c_atmel.c                          | 3 +-- >  drivers/char/tpm/tpm_i2c_infineon.c                       | 4 +--- >  drivers/char/tpm/tpm_i2c_nuvoton.c                        | 3 +-- >  drivers/char/tpm/tpm_tis_i2c_cr50.c                       | 6 ++---- >  drivers/clk/clk-cdce706.c                                 | 3 +-- >  drivers/clk/clk-cs2000-cp.c                               | 4 +--- >  drivers/clk/clk-si514.c                                   | 3 +-- >  drivers/clk/clk-si5341.c                                  | 4 +--- >  drivers/clk/clk-si5351.c                                  | 4 +--- >  drivers/clk/clk-si570.c                                   | 3 +-- >  drivers/clk/clk-versaclock5.c                             | 4 +--- >  drivers/crypto/atmel-ecc.c                                | 6 ++---- >  drivers/crypto/atmel-sha204a.c                            | 6 ++---- >  drivers/extcon/extcon-rt8973a.c                           | 4 +--- >  drivers/gpio/gpio-adp5588.c                               | 4 +--- >  drivers/gpio/gpio-max7300.c                               | 4 +--- >  drivers/gpio/gpio-pca953x.c                               | 4 +--- >  drivers/gpio/gpio-pcf857x.c                               | 4 +--- >  drivers/gpio/gpio-tpic2810.c                              | 4 +--- >  drivers/gpu/drm/bridge/adv7511/adv7511_drv.c              | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx6345.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c        | 4 +--- >  drivers/gpu/drm/bridge/analogix/anx7625.c                 | 4 +--- >  drivers/gpu/drm/bridge/chrontel-ch7033.c                  | 4 +--- >  drivers/gpu/drm/bridge/cros-ec-anx7688.c                  | 4 +--- >  drivers/gpu/drm/bridge/ite-it6505.c                       | 4 +--- >  drivers/gpu/drm/bridge/ite-it66121.c                      | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt8912b.c                  | 3 +-- >  drivers/gpu/drm/bridge/lontium-lt9211.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611.c                   | 4 +--- >  drivers/gpu/drm/bridge/lontium-lt9611uxc.c                | 4 +--- >  drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c  | 8 ++---- > -- >  drivers/gpu/drm/bridge/nxp-ptn3460.c                      | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8622.c                    | 4 +--- >  drivers/gpu/drm/bridge/parade-ps8640.c                    | 4 +--- >  drivers/gpu/drm/bridge/sii902x.c                          | 4 +--- >  drivers/gpu/drm/bridge/sii9234.c                          | 4 +--- >  drivers/gpu/drm/bridge/sil-sii8620.c                      | 4 +--- >  drivers/gpu/drm/bridge/tc358767.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358768.c                         | 4 +--- >  drivers/gpu/drm/bridge/tc358775.c                         | 4 +--- >  drivers/gpu/drm/bridge/ti-sn65dsi83.c                     | 4 +--- >  drivers/gpu/drm/bridge/ti-tfp410.c                        | 4 +--- >  drivers/gpu/drm/i2c/ch7006_drv.c                          | 4 +--- >  drivers/gpu/drm/i2c/tda9950.c                             | 4 +--- >  drivers/gpu/drm/i2c/tda998x_drv.c                         | 3 +-- >  drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c        | 4 +--- >  drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c     | 4 +--- >  drivers/gpu/drm/solomon/ssd130x-i2c.c                     | 4 +--- >  drivers/hid/i2c-hid/i2c-hid-core.c                        | 4 +--- >  drivers/hid/i2c-hid/i2c-hid.h                             | 2 +- >  drivers/hwmon/adc128d818.c                                | 4 +--- >  drivers/hwmon/adt7470.c                                   | 3 +-- >  drivers/hwmon/asb100.c                                    | 6 ++---- >  drivers/hwmon/asc7621.c                                   | 4 +--- >  drivers/hwmon/dme1737.c                                   | 4 +--- >  drivers/hwmon/f75375s.c                                   | 5 ++--- >  drivers/hwmon/fschmd.c                                    | 6 ++---- >  drivers/hwmon/ftsteutates.c                               | 3 +-- >  drivers/hwmon/ina209.c                                    | 4 +--- >  drivers/hwmon/ina3221.c                                   | 4 +--- >  drivers/hwmon/jc42.c                                      | 3 +-- >  drivers/hwmon/mcp3021.c                                   | 4 +--- >  drivers/hwmon/occ/p8_i2c.c                                | 4 +--- >  drivers/hwmon/pcf8591.c                                   | 3 +-- >  drivers/hwmon/smm665.c                                    | 3 +-- >  drivers/hwmon/tps23861.c                                  | 4 +--- >  drivers/hwmon/w83781d.c                                   | 4 +--- >  drivers/hwmon/w83791d.c                                   | 6 ++---- >  drivers/hwmon/w83792d.c                                   | 6 ++---- >  drivers/hwmon/w83793.c                                    | 6 ++---- >  drivers/hwmon/w83795.c                                    | 4 +--- >  drivers/hwmon/w83l785ts.c                                 | 6 ++---- >  drivers/i2c/i2c-core-base.c                               | 6 +----- >  drivers/i2c/i2c-slave-eeprom.c                            | 4 +--- >  drivers/i2c/i2c-slave-testunit.c                          | 3 +-- >  drivers/i2c/i2c-smbus.c                                   | 3 +-- >  drivers/i2c/muxes/i2c-mux-ltc4306.c                       | 4 +--- >  drivers/i2c/muxes/i2c-mux-pca9541.c                       | 3 +-- >  drivers/i2c/muxes/i2c-mux-pca954x.c                       | 3 +-- >  drivers/iio/accel/bma180.c                                | 4 +--- >  drivers/iio/accel/bma400_i2c.c                            | 4 +--- >  drivers/iio/accel/bmc150-accel-i2c.c                      | 4 +--- >  drivers/iio/accel/kxcjk-1013.c                            | 4 +--- >  drivers/iio/accel/kxsd9-i2c.c                             | 4 +--- >  drivers/iio/accel/mc3230.c                                | 4 +--- >  drivers/iio/accel/mma7455_i2c.c                           | 4 +--- >  drivers/iio/accel/mma7660.c                               | 4 +--- >  drivers/iio/accel/mma8452.c                               | 4 +--- >  drivers/iio/accel/mma9551.c                               | 4 +--- >  drivers/iio/accel/mma9553.c                               | 4 +--- >  drivers/iio/accel/stk8312.c                               | 4 +--- >  drivers/iio/accel/stk8ba50.c                              | 4 +--- >  drivers/iio/adc/ad799x.c                                  | 4 +--- >  drivers/iio/adc/ina2xx-adc.c                              | 4 +--- >  drivers/iio/adc/ltc2497.c                                 | 4 +--- >  drivers/iio/adc/ti-ads1015.c                              | 4 +--- >  drivers/iio/chemical/atlas-sensor.c                       | 4 +--- >  drivers/iio/chemical/ccs811.c                             | 4 +--- >  drivers/iio/chemical/sgp30.c                              | 4 +--- >  drivers/iio/dac/ad5380.c                                  | 4 +--- >  drivers/iio/dac/ad5446.c                                  | 4 +--- >  drivers/iio/dac/ad5593r.c                                 | 4 +--- >  drivers/iio/dac/ad5696-i2c.c                              | 4 +--- >  drivers/iio/dac/ds4424.c                                  | 4 +--- >  drivers/iio/dac/m62332.c                                  | 4 +--- >  drivers/iio/dac/mcp4725.c                                 | 4 +--- >  drivers/iio/dac/ti-dac5571.c                              | 4 +--- >  drivers/iio/gyro/bmg160_i2c.c                             | 4 +--- >  drivers/iio/gyro/fxas21002c_i2c.c                         | 4 +--- >  drivers/iio/gyro/itg3200_core.c                           | 4 +--- >  drivers/iio/gyro/mpu3050-i2c.c                            | 4 +--- >  drivers/iio/health/afe4404.c                              | 4 +--- >  drivers/iio/health/max30100.c                             | 4 +--- >  drivers/iio/health/max30102.c                             | 4 +--- >  drivers/iio/humidity/hdc2010.c                            | 4 +--- >  drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c                 | 4 +--- >  drivers/iio/imu/kmx61.c                                   | 4 +--- >  drivers/iio/light/apds9300.c                              | 4 +--- >  drivers/iio/light/apds9960.c                              | 4 +--- >  drivers/iio/light/bh1750.c                                | 4 +--- >  drivers/iio/light/bh1780.c                                | 4 +--- >  drivers/iio/light/cm3232.c                                | 4 +--- >  drivers/iio/light/cm36651.c                               | 4 +--- >  drivers/iio/light/gp2ap002.c                              | 4 +--- >  drivers/iio/light/gp2ap020a00f.c                          | 4 +--- >  drivers/iio/light/isl29028.c                              | 4 +--- >  drivers/iio/light/isl29125.c                              | 4 +--- >  drivers/iio/light/jsa1212.c                               | 4 +--- >  drivers/iio/light/ltr501.c                                | 4 +--- >  drivers/iio/light/opt3001.c                               | 6 ++---- >  drivers/iio/light/pa12203001.c                            | 4 +--- >  drivers/iio/light/rpr0521.c                               | 4 +--- >  drivers/iio/light/stk3310.c                               | 4 +--- >  drivers/iio/light/tcs3472.c                               | 4 +--- >  drivers/iio/light/tsl2563.c                               | 4 +--- >  drivers/iio/light/tsl2583.c                               | 4 +--- >  drivers/iio/light/tsl4531.c                               | 4 +--- >  drivers/iio/light/us5182d.c                               | 4 +--- >  drivers/iio/light/vcnl4000.c                              | 4 +--- >  drivers/iio/light/vcnl4035.c                              | 4 +--- >  drivers/iio/light/veml6070.c                              | 4 +--- >  drivers/iio/magnetometer/ak8974.c                         | 4 +--- >  drivers/iio/magnetometer/ak8975.c                         | 4 +--- >  drivers/iio/magnetometer/bmc150_magn_i2c.c                | 4 +--- >  drivers/iio/magnetometer/hmc5843_i2c.c                    | 4 +--- >  drivers/iio/magnetometer/mag3110.c                        | 4 +--- >  drivers/iio/magnetometer/yamaha-yas530.c                  | 4 +--- >  drivers/iio/potentiostat/lmp91000.c                       | 4 +--- >  drivers/iio/pressure/mpl3115.c                            | 4 +--- >  drivers/iio/pressure/ms5611_i2c.c                         | 4 +--- >  drivers/iio/pressure/zpa2326_i2c.c                        | 4 +--- >  drivers/iio/proximity/pulsedlight-lidar-lite-v2.c         | 4 +--- >  drivers/iio/proximity/sx9500.c                            | 4 +--- >  drivers/iio/temperature/mlx90614.c                        | 4 +--- >  drivers/iio/temperature/mlx90632.c                        | 4 +--- >  drivers/input/joystick/as5011.c                           | 4 +--- >  drivers/input/keyboard/adp5588-keys.c                     | 4 +--- >  drivers/input/keyboard/lm8323.c                           | 4 +--- >  drivers/input/keyboard/lm8333.c                           | 4 +--- >  drivers/input/keyboard/mcs_touchkey.c                     | 4 +--- >  drivers/input/keyboard/qt1070.c                           | 4 +--- >  drivers/input/keyboard/qt2160.c                           | 4 +--- >  drivers/input/keyboard/tca6416-keypad.c                   | 4 +--- >  drivers/input/misc/adxl34x-i2c.c                          | 4 +--- >  drivers/input/misc/bma150.c                               | 4 +--- >  drivers/input/misc/cma3000_d0x_i2c.c                      | 4 +--- >  drivers/input/misc/pcf8574_keypad.c                       | 4 +--- >  drivers/input/mouse/synaptics_i2c.c                       | 4 +--- >  drivers/input/rmi4/rmi_smbus.c                            | 4 +--- >  drivers/input/touchscreen/atmel_mxt_ts.c                  | 4 +--- >  drivers/input/touchscreen/bu21013_ts.c                    | 4 +--- >  drivers/input/touchscreen/cyttsp4_i2c.c                   | 4 +--- >  drivers/input/touchscreen/edt-ft5x06.c                    | 4 +--- >  drivers/input/touchscreen/goodix.c                        | 4 +--- >  drivers/input/touchscreen/migor_ts.c                      | 4 +--- >  drivers/input/touchscreen/s6sy761.c                       | 4 +--- >  drivers/input/touchscreen/stmfts.c                        | 4 +--- >  drivers/input/touchscreen/tsc2004.c                       | 4 +--- >  drivers/leds/flash/leds-as3645a.c                         | 4 +--- >  drivers/leds/flash/leds-lm3601x.c                         | 4 +--- >  drivers/leds/flash/leds-rt4505.c                          | 3 +-- >  drivers/leds/leds-an30259a.c                              | 4 +--- >  drivers/leds/leds-aw2013.c                                | 4 +--- >  drivers/leds/leds-bd2802.c                                | 4 +--- >  drivers/leds/leds-blinkm.c                                | 3 +-- >  drivers/leds/leds-is31fl319x.c                            | 3 +-- >  drivers/leds/leds-is31fl32xx.c                            | 4 +--- >  drivers/leds/leds-lm3530.c                                | 3 +-- >  drivers/leds/leds-lm3532.c                                | 4 +--- >  drivers/leds/leds-lm355x.c                                | 4 +--- >  drivers/leds/leds-lm3642.c                                | 3 +-- >  drivers/leds/leds-lm3692x.c                               | 4 +--- >  drivers/leds/leds-lm3697.c                                | 4 +--- >  drivers/leds/leds-lp3944.c                                | 4 +--- >  drivers/leds/leds-lp3952.c                                | 4 +--- >  drivers/leds/leds-lp50xx.c                                | 4 +--- >  drivers/leds/leds-lp5521.c                                | 4 +--- >  drivers/leds/leds-lp5523.c                                | 4 +--- >  drivers/leds/leds-lp5562.c                                | 4 +--- >  drivers/leds/leds-lp8501.c                                | 4 +--- >  drivers/leds/leds-lp8860.c                                | 4 +--- >  drivers/leds/leds-pca9532.c                               | 6 ++---- >  drivers/leds/leds-tca6507.c                               | 4 +--- >  drivers/leds/leds-turris-omnia.c                          | 4 +--- >  drivers/macintosh/ams/ams-i2c.c                           | 4 +--- >  drivers/macintosh/therm_adt746x.c                         | 4 +--- >  drivers/macintosh/therm_windtunnel.c                      | 4 +--- >  drivers/macintosh/windfarm_ad7417_sensor.c                | 4 +--- >  drivers/macintosh/windfarm_fcu_controls.c                 | 3 +-- >  drivers/macintosh/windfarm_lm75_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_lm87_sensor.c                  | 4 +--- >  drivers/macintosh/windfarm_max6690_sensor.c               | 4 +--- >  drivers/macintosh/windfarm_smu_sat.c                      | 4 +--- >  drivers/media/cec/i2c/ch7322.c                            | 4 +--- >  drivers/media/dvb-frontends/a8293.c                       | 3 +-- >  drivers/media/dvb-frontends/af9013.c                      | 4 +--- >  drivers/media/dvb-frontends/af9033.c                      | 4 +--- >  drivers/media/dvb-frontends/au8522_decoder.c              | 3 +-- >  drivers/media/dvb-frontends/cxd2099.c                     | 4 +--- >  drivers/media/dvb-frontends/cxd2820r_core.c               | 4 +--- >  drivers/media/dvb-frontends/dvb-pll.c                     | 3 +-- >  drivers/media/dvb-frontends/lgdt3306a.c                   | 4 +--- >  drivers/media/dvb-frontends/lgdt330x.c                    | 4 +--- >  drivers/media/dvb-frontends/m88ds3103.c                   | 3 +-- >  drivers/media/dvb-frontends/mn88443x.c                    | 4 +--- >  drivers/media/dvb-frontends/mn88472.c                     | 4 +--- >  drivers/media/dvb-frontends/mn88473.c                     | 4 +--- >  drivers/media/dvb-frontends/mxl692.c                      | 4 +--- >  drivers/media/dvb-frontends/rtl2830.c                     | 4 +--- >  drivers/media/dvb-frontends/rtl2832.c                     | 4 +--- >  drivers/media/dvb-frontends/si2165.c                      | 3 +-- >  drivers/media/dvb-frontends/si2168.c                      | 4 +--- >  drivers/media/dvb-frontends/sp2.c                         | 3 +-- >  drivers/media/dvb-frontends/stv090x.c                     | 3 +-- >  drivers/media/dvb-frontends/stv6110x.c                    | 3 +-- >  drivers/media/dvb-frontends/tc90522.c                     | 3 +-- >  drivers/media/dvb-frontends/tda10071.c                    | 3 +-- >  drivers/media/dvb-frontends/ts2020.c                      | 3 +-- >  drivers/media/i2c/ad5820.c                                | 3 +-- >  drivers/media/i2c/ad9389b.c                               | 3 +-- >  drivers/media/i2c/adp1653.c                               | 4 +--- >  drivers/media/i2c/adv7170.c                               | 3 +-- >  drivers/media/i2c/adv7175.c                               | 3 +-- >  drivers/media/i2c/adv7180.c                               | 4 +--- >  drivers/media/i2c/adv7183.c                               | 3 +-- >  drivers/media/i2c/adv7343.c                               | 4 +--- >  drivers/media/i2c/adv7393.c                               | 4 +--- >  drivers/media/i2c/adv748x/adv748x-core.c                  | 4 +--- >  drivers/media/i2c/adv7511-v4l2.c                          | 3 +-- >  drivers/media/i2c/adv7604.c                               | 3 +-- >  drivers/media/i2c/adv7842.c                               | 3 +-- >  drivers/media/i2c/ak7375.c                                | 4 +--- >  drivers/media/i2c/ak881x.c                                | 4 +--- >  drivers/media/i2c/bt819.c                                 | 3 +-- >  drivers/media/i2c/bt856.c                                 | 3 +-- >  drivers/media/i2c/bt866.c                                 | 3 +-- >  drivers/media/i2c/ccs/ccs-core.c                          | 4 +--- >  drivers/media/i2c/cs3308.c                                | 3 +-- >  drivers/media/i2c/cs5345.c                                | 3 +-- >  drivers/media/i2c/cs53l32a.c                              | 3 +-- >  drivers/media/i2c/cx25840/cx25840-core.c                  | 3 +-- >  drivers/media/i2c/dw9714.c                                | 4 +--- >  drivers/media/i2c/dw9768.c                                | 4 +--- >  drivers/media/i2c/dw9807-vcm.c                            | 4 +--- >  drivers/media/i2c/et8ek8/et8ek8_driver.c                  | 4 +--- >  drivers/media/i2c/hi556.c                                 | 4 +--- >  drivers/media/i2c/hi846.c                                 | 4 +--- >  drivers/media/i2c/hi847.c                                 | 4 +--- >  drivers/media/i2c/imx208.c                                | 4 +--- >  drivers/media/i2c/imx214.c                                | 4 +--- >  drivers/media/i2c/imx219.c                                | 4 +--- >  drivers/media/i2c/imx258.c                                | 4 +--- >  drivers/media/i2c/imx274.c                                | 3 +-- >  drivers/media/i2c/imx290.c                                | 4 +--- >  drivers/media/i2c/imx319.c                                | 4 +--- >  drivers/media/i2c/imx334.c                                | 4 +--- >  drivers/media/i2c/imx335.c                                | 4 +--- >  drivers/media/i2c/imx355.c                                | 4 +--- >  drivers/media/i2c/imx412.c                                | 4 +--- >  drivers/media/i2c/ir-kbd-i2c.c                            | 4 +--- >  drivers/media/i2c/isl7998x.c                              | 4 +--- >  drivers/media/i2c/ks0127.c                                | 3 +-- >  drivers/media/i2c/lm3560.c                                | 4 +--- >  drivers/media/i2c/lm3646.c                                | 4 +--- >  drivers/media/i2c/m52790.c                                | 3 +-- >  drivers/media/i2c/m5mols/m5mols_core.c                    | 4 +--- >  drivers/media/i2c/max2175.c                               | 4 +--- >  drivers/media/i2c/max9286.c                               | 4 +--- >  drivers/media/i2c/ml86v7667.c                             | 4 +--- >  drivers/media/i2c/msp3400-driver.c                        | 3 +-- >  drivers/media/i2c/mt9m001.c                               | 4 +--- >  drivers/media/i2c/mt9m032.c                               | 3 +-- >  drivers/media/i2c/mt9m111.c                               | 4 +--- >  drivers/media/i2c/mt9p031.c                               | 4 +--- >  drivers/media/i2c/mt9t001.c                               | 3 +-- >  drivers/media/i2c/mt9t112.c                               | 4 +--- >  drivers/media/i2c/mt9v011.c                               | 4 +--- >  drivers/media/i2c/mt9v032.c                               | 4 +--- >  drivers/media/i2c/mt9v111.c                               | 4 +--- >  drivers/media/i2c/noon010pc30.c                           | 4 +--- >  drivers/media/i2c/og01a1b.c                               | 4 +--- >  drivers/media/i2c/ov02a10.c                               | 4 +--- >  drivers/media/i2c/ov08d10.c                               | 4 +--- >  drivers/media/i2c/ov13858.c                               | 4 +--- >  drivers/media/i2c/ov13b10.c                               | 4 +--- >  drivers/media/i2c/ov2640.c                                | 3 +-- >  drivers/media/i2c/ov2659.c                                | 4 +--- >  drivers/media/i2c/ov2680.c                                | 4 +--- >  drivers/media/i2c/ov2685.c                                | 4 +--- >  drivers/media/i2c/ov2740.c                                | 4 +--- >  drivers/media/i2c/ov5640.c                                | 4 +--- >  drivers/media/i2c/ov5645.c                                | 4 +--- >  drivers/media/i2c/ov5647.c                                | 4 +--- >  drivers/media/i2c/ov5648.c                                | 4 +--- >  drivers/media/i2c/ov5670.c                                | 4 +--- >  drivers/media/i2c/ov5675.c                                | 4 +--- >  drivers/media/i2c/ov5693.c                                | 4 +--- >  drivers/media/i2c/ov5695.c                                | 4 +--- >  drivers/media/i2c/ov6650.c                                | 3 +-- >  drivers/media/i2c/ov7251.c                                | 4 +--- >  drivers/media/i2c/ov7640.c                                | 4 +--- >  drivers/media/i2c/ov7670.c                                | 3 +-- >  drivers/media/i2c/ov772x.c                                | 4 +--- >  drivers/media/i2c/ov7740.c                                | 3 +-- >  drivers/media/i2c/ov8856.c                                | 4 +--- >  drivers/media/i2c/ov8865.c                                | 4 +--- >  drivers/media/i2c/ov9282.c                                | 4 +--- >  drivers/media/i2c/ov9640.c                                | 4 +--- >  drivers/media/i2c/ov9650.c                                | 4 +--- >  drivers/media/i2c/ov9734.c                                | 4 +--- >  drivers/media/i2c/rdacm20.c                               | 4 +--- >  drivers/media/i2c/rdacm21.c                               | 4 +--- >  drivers/media/i2c/rj54n1cb0c.c                            | 4 +--- >  drivers/media/i2c/s5c73m3/s5c73m3-core.c                  | 4 +--- >  drivers/media/i2c/s5k4ecgx.c                              | 4 +--- >  drivers/media/i2c/s5k5baf.c                               | 4 +--- >  drivers/media/i2c/s5k6a3.c                                | 3 +-- >  drivers/media/i2c/s5k6aa.c                                | 4 +--- >  drivers/media/i2c/saa6588.c                               | 4 +--- >  drivers/media/i2c/saa6752hs.c                             | 3 +-- >  drivers/media/i2c/saa7110.c                               | 3 +-- >  drivers/media/i2c/saa7115.c                               | 3 +-- >  drivers/media/i2c/saa7127.c                               | 3 +-- >  drivers/media/i2c/saa717x.c                               | 3 +-- >  drivers/media/i2c/saa7185.c                               | 3 +-- >  drivers/media/i2c/sony-btf-mpx.c                          | 4 +--- >  drivers/media/i2c/sr030pc30.c                             | 3 +-- >  drivers/media/i2c/st-mipid02.c                            | 4 +--- >  drivers/media/i2c/tc358743.c                              | 4 +--- >  drivers/media/i2c/tda1997x.c                              | 4 +--- >  drivers/media/i2c/tda7432.c                               | 3 +-- >  drivers/media/i2c/tda9840.c                               | 3 +-- >  drivers/media/i2c/tea6415c.c                              | 3 +-- >  drivers/media/i2c/tea6420.c                               | 3 +-- >  drivers/media/i2c/ths7303.c                               | 4 +--- >  drivers/media/i2c/ths8200.c                               | 4 +--- >  drivers/media/i2c/tlv320aic23b.c                          | 3 +-- >  drivers/media/i2c/tvaudio.c                               | 3 +-- >  drivers/media/i2c/tvp514x.c                               | 3 +-- >  drivers/media/i2c/tvp5150.c                               | 4 +--- >  drivers/media/i2c/tvp7002.c                               | 3 +-- >  drivers/media/i2c/tw2804.c                                | 3 +-- >  drivers/media/i2c/tw9903.c                                | 3 +-- >  drivers/media/i2c/tw9906.c                                | 3 +-- >  drivers/media/i2c/tw9910.c                                | 4 +--- >  drivers/media/i2c/uda1342.c                               | 3 +-- >  drivers/media/i2c/upd64031a.c                             | 3 +-- >  drivers/media/i2c/upd64083.c                              | 3 +-- >  drivers/media/i2c/video-i2c.c                             | 4 +--- >  drivers/media/i2c/vp27smpx.c                              | 3 +-- >  drivers/media/i2c/vpx3220.c                               | 4 +--- >  drivers/media/i2c/vs6624.c                                | 3 +-- >  drivers/media/i2c/wm8739.c                                | 3 +-- >  drivers/media/i2c/wm8775.c                                | 3 +-- >  drivers/media/radio/radio-tea5764.c                       | 3 +-- >  drivers/media/radio/saa7706h.c                            | 3 +-- >  drivers/media/radio/si470x/radio-si470x-i2c.c             | 3 +-- >  drivers/media/radio/si4713/si4713.c                       | 4 +--- >  drivers/media/radio/tef6862.c                             | 3 +-- >  drivers/media/test-drivers/vidtv/vidtv_demod.c            | 4 +--- >  drivers/media/test-drivers/vidtv/vidtv_tuner.c            | 4 +--- >  drivers/media/tuners/e4000.c                              | 4 +--- >  drivers/media/tuners/fc2580.c                             | 3 +-- >  drivers/media/tuners/m88rs6000t.c                         | 4 +--- >  drivers/media/tuners/mt2060.c                             | 4 +--- >  drivers/media/tuners/mxl301rf.c                           | 3 +-- >  drivers/media/tuners/qm1d1b0004.c                         | 3 +-- >  drivers/media/tuners/qm1d1c0042.c                         | 3 +-- >  drivers/media/tuners/si2157.c                             | 4 +--- >  drivers/media/tuners/tda18212.c                           | 4 +--- >  drivers/media/tuners/tda18250.c                           | 4 +--- >  drivers/media/tuners/tua9001.c                            | 3 +-- >  drivers/media/usb/go7007/s2250-board.c                    | 3 +-- >  drivers/media/v4l2-core/tuner-core.c                      | 3 +-- >  drivers/mfd/88pm800.c                                     | 4 +--- >  drivers/mfd/88pm805.c                                     | 4 +--- >  drivers/mfd/88pm860x-core.c                               | 3 +-- >  drivers/mfd/acer-ec-a500.c                                | 4 +--- >  drivers/mfd/arizona-i2c.c                                 | 4 +--- >  drivers/mfd/axp20x-i2c.c                                  | 4 +--- >  drivers/mfd/da903x.c                                      | 3 +-- >  drivers/mfd/da9052-i2c.c                                  | 3 +-- >  drivers/mfd/da9055-i2c.c                                  | 4 +--- >  drivers/mfd/da9062-core.c                                 | 4 +--- >  drivers/mfd/da9150-core.c                                 | 4 +--- >  drivers/mfd/dm355evm_msp.c                                | 3 +-- >  drivers/mfd/ene-kb3930.c                                  | 4 +--- >  drivers/mfd/gateworks-gsc.c                               | 4 +--- >  drivers/mfd/intel_soc_pmic_core.c                         | 4 +--- >  drivers/mfd/iqs62x.c                                      | 4 +--- >  drivers/mfd/lm3533-core.c                                 | 4 +--- >  drivers/mfd/lp8788.c                                      | 3 +-- >  drivers/mfd/madera-i2c.c                                  | 4 +--- >  drivers/mfd/max14577.c                                    | 4 +--- >  drivers/mfd/max77693.c                                    | 4 +--- >  drivers/mfd/max8907.c                                     | 4 +--- >  drivers/mfd/max8925-i2c.c                                 | 3 +-- >  drivers/mfd/mc13xxx-i2c.c                                 | 3 +-- >  drivers/mfd/menelaus.c                                    | 3 +-- >  drivers/mfd/ntxec.c                                       | 4 +--- >  drivers/mfd/palmas.c                                      | 4 +--- >  drivers/mfd/pcf50633-core.c                               | 4 +--- >  drivers/mfd/retu-mfd.c                                    | 4 +--- >  drivers/mfd/rk808.c                                       | 4 +--- >  drivers/mfd/rn5t618.c                                     | 4 +--- >  drivers/mfd/rsmu_i2c.c                                    | 4 +--- >  drivers/mfd/rt4831.c                                      | 4 +--- >  drivers/mfd/si476x-i2c.c                                  | 4 +--- >  drivers/mfd/stmfx.c                                       | 4 +--- >  drivers/mfd/stmpe-i2c.c                                   | 4 +--- >  drivers/mfd/tc3589x.c                                     | 4 +--- >  drivers/mfd/tps6105x.c                                    | 4 +--- >  drivers/mfd/tps65010.c                                    | 3 +-- >  drivers/mfd/tps65086.c                                    | 4 +--- >  drivers/mfd/tps65217.c                                    | 4 +--- >  drivers/mfd/tps6586x.c                                    | 3 +-- >  drivers/mfd/tps65912-i2c.c                                | 4 +--- >  drivers/mfd/twl-core.c                                    | 3 +-- >  drivers/mfd/twl6040.c                                     | 4 +--- >  drivers/mfd/wm8994-core.c                                 | 4 +--- >  drivers/misc/ad525x_dpot-i2c.c                            | 3 +-- >  drivers/misc/apds9802als.c                                | 3 +-- >  drivers/misc/apds990x.c                                   | 3 +-- >  drivers/misc/bh1770glc.c                                  | 4 +--- >  drivers/misc/ds1682.c                                     | 3 +-- >  drivers/misc/eeprom/at24.c                                | 4 +--- >  drivers/misc/eeprom/ee1004.c                              | 4 +--- >  drivers/misc/eeprom/eeprom.c                              | 4 +--- >  drivers/misc/eeprom/idt_89hpesx.c                         | 4 +--- >  drivers/misc/eeprom/max6875.c                             | 4 +--- >  drivers/misc/hmc6352.c                                    | 3 +-- >  drivers/misc/ics932s401.c                                 | 5 ++--- >  drivers/misc/isl29003.c                                   | 3 +-- >  drivers/misc/isl29020.c                                   | 3 +-- >  drivers/misc/lis3lv02d/lis3lv02d_i2c.c                    | 3 +-- >  drivers/misc/tsl2550.c                                    | 4 +--- >  drivers/mtd/maps/pismo.c                                  | 4 +--- >  drivers/net/dsa/lan9303_i2c.c                             | 6 ++---- >  drivers/net/dsa/microchip/ksz9477_i2c.c                   | 4 +--- >  drivers/net/dsa/xrs700x/xrs700x_i2c.c                     | 6 ++---- >  drivers/net/ethernet/mellanox/mlxsw/i2c.c                 | 4 +--- >  drivers/net/mctp/mctp-i2c.c                               | 3 +-- >  drivers/nfc/fdp/i2c.c                                     | 4 +--- >  drivers/nfc/microread/i2c.c                               | 4 +--- >  drivers/nfc/nfcmrvl/i2c.c                                 | 4 +--- >  drivers/nfc/nxp-nci/i2c.c                                 | 4 +--- >  drivers/nfc/pn533/i2c.c                                   | 4 +--- >  drivers/nfc/pn544/i2c.c                                   | 4 +--- >  drivers/nfc/s3fwrn5/i2c.c                                 | 4 +--- >  drivers/nfc/st-nci/i2c.c                                  | 4 +--- >  drivers/nfc/st21nfca/i2c.c                                | 4 +--- >  drivers/of/unittest.c                                     | 6 ++---- >  drivers/platform/chrome/cros_ec_i2c.c                     | 4 +--- >  drivers/platform/surface/surface3_power.c                 | 4 +--- >  drivers/platform/x86/asus-tf103c-dock.c                   | 4 +--- >  drivers/platform/x86/intel/int3472/tps68470.c             | 4 +--- >  drivers/power/supply/bq2415x_charger.c                    | 4 +--- >  drivers/power/supply/bq24190_charger.c                    | 4 +--- >  drivers/power/supply/bq24257_charger.c                    | 4 +--- >  drivers/power/supply/bq25890_charger.c                    | 4 +--- >  drivers/power/supply/bq27xxx_battery_i2c.c                | 4 +--- >  drivers/power/supply/cw2015_battery.c                     | 3 +-- >  drivers/power/supply/ds2782_battery.c                     | 4 +--- >  drivers/power/supply/lp8727_charger.c                     | 3 +-- >  drivers/power/supply/rt5033_battery.c                     | 4 +--- >  drivers/power/supply/rt9455_charger.c                     | 4 +--- >  drivers/power/supply/smb347-charger.c                     | 4 +--- >  drivers/power/supply/z2_battery.c                         | 4 +--- >  drivers/pwm/pwm-pca9685.c                                 | 4 +--- >  drivers/regulator/da9121-regulator.c                      | 3 +-- >  drivers/regulator/lp8755.c                                | 4 +--- >  drivers/regulator/rpi-panel-attiny-regulator.c            | 4 +--- >  drivers/rtc/rtc-bq32k.c                                   | 4 +--- >  drivers/rtc/rtc-ds1374.c                                  | 4 +--- >  drivers/rtc/rtc-isl12026.c                                | 3 +-- >  drivers/rtc/rtc-m41t80.c                                  | 4 +--- >  drivers/rtc/rtc-rs5c372.c                                 | 3 +-- >  drivers/rtc/rtc-x1205.c                                   | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-gc0310.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-gc2235.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-lm3554.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c       | 3 +-- >  drivers/staging/media/atomisp/i2c/atomisp-ov2680.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/atomisp-ov2722.c        | 4 +--- >  drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c | 4 +--- >  drivers/staging/media/max96712/max96712.c                 | 4 +--- >  drivers/staging/most/i2c/i2c.c                            | 4 +--- >  drivers/staging/olpc_dcon/olpc_dcon.c                     | 4 +--- >  drivers/tty/serial/sc16is7xx.c                            | 4 +--- >  drivers/usb/misc/usb3503.c                                | 4 +--- >  drivers/usb/phy/phy-isp1301-omap.c                        | 4 +--- >  drivers/usb/phy/phy-isp1301.c                             | 4 +--- >  drivers/usb/typec/hd3ss3220.c                             | 4 +--- >  drivers/usb/typec/mux/fsa4480.c                           | 4 +--- >  drivers/usb/typec/mux/pi3usb30532.c                       | 3 +-- >  drivers/usb/typec/rt1719.c                                | 4 +--- >  drivers/usb/typec/stusb160x.c                             | 4 +--- >  drivers/usb/typec/tcpm/fusb302.c                          | 4 +--- >  drivers/usb/typec/tcpm/tcpci.c                            | 4 +--- >  drivers/usb/typec/tcpm/tcpci_maxim.c                      | 4 +--- >  drivers/usb/typec/tcpm/tcpci_rt1711h.c                    | 3 +-- >  drivers/usb/typec/tipd/core.c                             | 4 +--- >  drivers/usb/typec/ucsi/ucsi_ccg.c                         | 4 +--- >  drivers/usb/typec/wusb3801.c                              | 4 +--- >  drivers/video/backlight/adp8860_bl.c                      | 4 +--- >  drivers/video/backlight/adp8870_bl.c                      | 4 +--- >  drivers/video/backlight/arcxcnn_bl.c                      | 4 +--- >  drivers/video/backlight/bd6107.c                          | 4 +--- >  drivers/video/backlight/lm3630a_bl.c                      | 3 +-- >  drivers/video/backlight/lm3639_bl.c                       | 3 +-- >  drivers/video/backlight/lp855x_bl.c                       | 4 +--- >  drivers/video/backlight/lv5207lp.c                        | 4 +--- >  drivers/video/backlight/tosa_bl.c                         | 3 +-- >  drivers/video/fbdev/matrox/matroxfb_maven.c               | 3 +-- >  drivers/video/fbdev/ssd1307fb.c                           | 4 +--- >  drivers/w1/masters/ds2482.c                               | 3 +-- >  drivers/watchdog/ziirave_wdt.c                            | 4 +--- >  include/linux/i2c.h                                       | 2 +- >  lib/Kconfig.kasan                                         | 1 + >  sound/aoa/codecs/onyx.c                                   | 3 +-- >  sound/aoa/codecs/tas.c                                    | 3 +-- >  sound/pci/hda/cs35l41_hda_i2c.c                           | 4 +--- >  sound/ppc/keywest.c                                       | 6 ++---- >  sound/soc/codecs/adau1761-i2c.c                           | 3 +-- >  sound/soc/codecs/adau1781-i2c.c                           | 3 +-- >  sound/soc/codecs/ak4375.c                                 | 4 +--- >  sound/soc/codecs/ak4458.c                                 | 4 +--- >  sound/soc/codecs/ak4641.c                                 | 4 +--- >  sound/soc/codecs/ak5558.c                                 | 4 +--- >  sound/soc/codecs/cs35l32.c                                | 4 +--- >  sound/soc/codecs/cs35l33.c                                | 4 +--- >  sound/soc/codecs/cs35l34.c                                | 4 +--- >  sound/soc/codecs/cs35l35.c                                | 4 +--- >  sound/soc/codecs/cs35l36.c                                | 4 +--- >  sound/soc/codecs/cs35l41-i2c.c                            | 4 +--- >  sound/soc/codecs/cs35l45-i2c.c                            | 4 +--- >  sound/soc/codecs/cs4234.c                                 | 4 +--- >  sound/soc/codecs/cs4265.c                                 | 4 +--- >  sound/soc/codecs/cs4270.c                                 | 4 +--- >  sound/soc/codecs/cs42l42.c                                | 4 +--- >  sound/soc/codecs/cs42l51-i2c.c                            | 4 +--- >  sound/soc/codecs/cs42l56.c                                | 3 +-- >  sound/soc/codecs/cs42xx8-i2c.c                            | 4 +--- >  sound/soc/codecs/cs43130.c                                | 4 +--- >  sound/soc/codecs/cs4349.c                                 | 4 +--- >  sound/soc/codecs/cs53l30.c                                | 4 +--- >  sound/soc/codecs/cx2072x.c                                | 3 +-- >  sound/soc/codecs/max98090.c                               | 4 +--- >  sound/soc/codecs/max9860.c                                | 3 +-- >  sound/soc/codecs/max98927.c                               | 4 +--- >  sound/soc/codecs/mt6660.c                                 | 3 +-- >  sound/soc/codecs/nau8821.c                                | 4 +--- >  sound/soc/codecs/nau8825.c                                | 6 ++---- >  sound/soc/codecs/pcm1789-i2c.c                            | 4 +--- >  sound/soc/codecs/pcm3168a-i2c.c                           | 4 +--- >  sound/soc/codecs/pcm512x-i2c.c                            | 3 +-- >  sound/soc/codecs/rt274.c                                  | 4 +--- >  sound/soc/codecs/rt286.c                                  | 4 +--- >  sound/soc/codecs/rt298.c                                  | 4 +--- >  sound/soc/codecs/rt5616.c                                 | 6 ++---- >  sound/soc/codecs/rt5631.c                                 | 6 ++---- >  sound/soc/codecs/rt5645.c                                 | 4 +--- >  sound/soc/codecs/rt5663.c                                 | 4 +--- >  sound/soc/codecs/rt5670.c                                 | 4 +--- >  sound/soc/codecs/rt5677.c                                 | 4 +--- >  sound/soc/codecs/rt5682-i2c.c                             | 4 +--- >  sound/soc/codecs/rt5682s.c                                | 4 +--- >  sound/soc/codecs/rt9120.c                                 | 3 +-- >  sound/soc/codecs/sgtl5000.c                               | 4 +--- >  sound/soc/codecs/sta350.c                                 | 6 ++---- >  sound/soc/codecs/tas2552.c                                | 3 +-- >  sound/soc/codecs/tas5086.c                                | 6 ++---- >  sound/soc/codecs/tas571x.c                                | 4 +--- >  sound/soc/codecs/tas5805m.c                               | 3 +-- >  sound/soc/codecs/tas6424.c                                | 4 +--- >  sound/soc/codecs/tlv320adc3xxx.c                          | 3 +-- >  sound/soc/codecs/tlv320aic32x4-i2c.c                      | 4 +--- >  sound/soc/codecs/tlv320aic3x-i2c.c                        | 4 +--- >  sound/soc/codecs/tlv320dac33.c                            | 4 +--- >  sound/soc/codecs/wm1250-ev1.c                             | 4 +--- >  sound/soc/codecs/wm2200.c                                 | 4 +--- >  sound/soc/codecs/wm5100.c                                 | 4 +--- >  sound/soc/codecs/wm8804-i2c.c                             | 3 +-- >  sound/soc/codecs/wm8900.c                                 | 6 ++---- >  sound/soc/codecs/wm8903.c                                 | 4 +--- >  sound/soc/codecs/wm8960.c                                 | 6 ++---- >  sound/soc/codecs/wm8962.c                                 | 3 +-- >  sound/soc/codecs/wm8993.c                                 | 4 +--- >  sound/soc/codecs/wm8996.c                                 | 4 +--- >  sound/soc/codecs/wm9081.c                                 | 6 ++---- >  621 files changed, 648 insertions(+), 1735 deletions(-) > > diff --git a/Documentation/i2c/writing-clients.rst > b/Documentation/i2c/writing-clients.rst > index e3b126cf4a3b..c1b46844b0fb 100644 > --- a/Documentation/i2c/writing-clients.rst > +++ b/Documentation/i2c/writing-clients.rst > @@ -156,7 +156,7 @@ those devices, and a remove() method to unbind. >  :: >   >         static int foo_probe(struct i2c_client *client); > -       static int foo_remove(struct i2c_client *client); > +       static void foo_remove(struct i2c_client *client); >   >  Remember that the i2c_driver does not create those client handles.  > The >  handle may be used during foo_probe().  If foo_probe() reports > success > diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c > b/arch/arm/mach-davinci/board-dm644x-evm.c > index 9f405af36a6f..9055da325a3f 100644 > --- a/arch/arm/mach-davinci/board-dm644x-evm.c > +++ b/arch/arm/mach-davinci/board-dm644x-evm.c > @@ -554,10 +554,9 @@ static int dm6446evm_msp_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int dm6446evm_msp_remove(struct i2c_client *client) > +static void dm6446evm_msp_remove(struct i2c_client *client) >  { >         dm6446evm_msp = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id dm6446evm_msp_ids[] = { > diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c > b/arch/arm/mach-davinci/board-dm646x-evm.c > index 84ad065e98c2..287bb5833ec0 100644 > --- a/arch/arm/mach-davinci/board-dm646x-evm.c > +++ b/arch/arm/mach-davinci/board-dm646x-evm.c > @@ -403,10 +403,9 @@ static int cpld_video_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int cpld_video_remove(struct i2c_client *client) > +static void cpld_video_remove(struct i2c_client *client) >  { >         cpld_client = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id cpld_video_id[] = { > diff --git a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > index abb62fa630ef..77ed61306a73 100644 > --- a/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > +++ b/arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c > @@ -178,7 +178,7 @@ static int mcu_probe(struct i2c_client *client) >         return ret; >  } >   > -static int mcu_remove(struct i2c_client *client) > +static void mcu_remove(struct i2c_client *client) >  { >         struct mcu *mcu = i2c_get_clientdata(client); >   > @@ -193,7 +193,6 @@ static int mcu_remove(struct i2c_client *client) >   >         mcu_gpiochip_remove(mcu); >         kfree(mcu); > -       return 0; >  } >   >  static const struct i2c_device_id mcu_ids[] = { > diff --git a/drivers/auxdisplay/ht16k33.c > b/drivers/auxdisplay/ht16k33.c > index 4fab3b2c7023..02425991c159 100644 > --- a/drivers/auxdisplay/ht16k33.c > +++ b/drivers/auxdisplay/ht16k33.c > @@ -775,7 +775,7 @@ static int ht16k33_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ht16k33_remove(struct i2c_client *client) > +static void ht16k33_remove(struct i2c_client *client) >  { >         struct ht16k33_priv *priv = i2c_get_clientdata(client); >         struct ht16k33_fbdev *fbdev = &priv->fbdev; > @@ -796,8 +796,6 @@ static int ht16k33_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, > &dev_attr_map_seg14); >                 break; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ht16k33_i2c_match[] = { > diff --git a/drivers/auxdisplay/lcd2s.c b/drivers/auxdisplay/lcd2s.c > index e465108d9998..135831a16514 100644 > --- a/drivers/auxdisplay/lcd2s.c > +++ b/drivers/auxdisplay/lcd2s.c > @@ -340,13 +340,12 @@ static int lcd2s_i2c_probe(struct i2c_client > *i2c) >         return err; >  } >   > -static int lcd2s_i2c_remove(struct i2c_client *i2c) > +static void lcd2s_i2c_remove(struct i2c_client *i2c) >  { >         struct lcd2s_data *lcd2s = i2c_get_clientdata(i2c); >   >         charlcd_unregister(lcd2s->charlcd); >         charlcd_free(lcd2s->charlcd); > -       return 0; >  } >   >  static const struct i2c_device_id lcd2s_i2c_id[] = { > diff --git a/drivers/char/ipmi/ipmb_dev_int.c > b/drivers/char/ipmi/ipmb_dev_int.c > index db40037eb347..a0e9e80d92ee 100644 > --- a/drivers/char/ipmi/ipmb_dev_int.c > +++ b/drivers/char/ipmi/ipmb_dev_int.c > @@ -341,14 +341,12 @@ static int ipmb_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ipmb_remove(struct i2c_client *client) > +static void ipmb_remove(struct i2c_client *client) >  { >         struct ipmb_dev *ipmb_dev = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         misc_deregister(&ipmb_dev->miscdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ipmb_id[] = { > diff --git a/drivers/char/ipmi/ipmi_ipmb.c > b/drivers/char/ipmi/ipmi_ipmb.c > index ab19b4b3317e..25c010c9ec25 100644 > --- a/drivers/char/ipmi/ipmi_ipmb.c > +++ b/drivers/char/ipmi/ipmi_ipmb.c > @@ -424,7 +424,7 @@ static void ipmi_ipmb_request_events(void > *send_info) >         /* We don't fetch events here. */ >  } >   > -static int ipmi_ipmb_remove(struct i2c_client *client) > +static void ipmi_ipmb_remove(struct i2c_client *client) >  { >         struct ipmi_ipmb_dev *iidev = i2c_get_clientdata(client); >   > @@ -438,8 +438,6 @@ static int ipmi_ipmb_remove(struct i2c_client > *client) >         ipmi_ipmb_stop_thread(iidev); >   >         ipmi_unregister_smi(iidev->intf); > - > -       return 0; >  } >   >  static int ipmi_ipmb_probe(struct i2c_client *client) > diff --git a/drivers/char/ipmi/ipmi_ssif.c > b/drivers/char/ipmi/ipmi_ssif.c > index fc742ee9c046..13da021e7c6b 100644 > --- a/drivers/char/ipmi/ipmi_ssif.c > +++ b/drivers/char/ipmi/ipmi_ssif.c > @@ -1281,13 +1281,13 @@ static void shutdown_ssif(void *send_info) >         } >  } >   > -static int ssif_remove(struct i2c_client *client) > +static void ssif_remove(struct i2c_client *client) >  { >         struct ssif_info *ssif_info = i2c_get_clientdata(client); >         struct ssif_addr_info *addr_info; >   >         if (!ssif_info) > -               return 0; > +               return; >   >         /* >          * After this point, we won't deliver anything asychronously > @@ -1303,8 +1303,6 @@ static int ssif_remove(struct i2c_client > *client) >         } >   >         kfree(ssif_info); > - > -       return 0; >  } >   >  static int read_response(struct i2c_client *client, unsigned char > *resp) > diff --git a/drivers/char/tpm/st33zp24/i2c.c > b/drivers/char/tpm/st33zp24/i2c.c > index 3170d59d660c..a3aa411389e7 100644 > --- a/drivers/char/tpm/st33zp24/i2c.c > +++ b/drivers/char/tpm/st33zp24/i2c.c > @@ -264,13 +264,11 @@ static int st33zp24_i2c_probe(struct i2c_client > *client, >   * @param: client, the i2c_client description (TPM I2C description). >   * @return: 0 in case of success. >   */ > -static int st33zp24_i2c_remove(struct i2c_client *client) > +static void st33zp24_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         st33zp24_remove(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id st33zp24_i2c_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_atmel.c > b/drivers/char/tpm/tpm_i2c_atmel.c > index d5ac85558214..4be3677c1463 100644 > --- a/drivers/char/tpm/tpm_i2c_atmel.c > +++ b/drivers/char/tpm/tpm_i2c_atmel.c > @@ -179,12 +179,11 @@ static int i2c_atmel_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_atmel_remove(struct i2c_client *client) > +static void i2c_atmel_remove(struct i2c_client *client) >  { >         struct device *dev = &(client->dev); >         struct tpm_chip *chip = dev_get_drvdata(dev); >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_atmel_id[] = { > diff --git a/drivers/char/tpm/tpm_i2c_infineon.c > b/drivers/char/tpm/tpm_i2c_infineon.c > index a19d32cb4e94..fd3c3661e646 100644 > --- a/drivers/char/tpm/tpm_i2c_infineon.c > +++ b/drivers/char/tpm/tpm_i2c_infineon.c > @@ -706,15 +706,13 @@ static int tpm_tis_i2c_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int tpm_tis_i2c_remove(struct i2c_client *client) > +static void tpm_tis_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = tpm_dev.chip; >   >         tpm_chip_unregister(chip); >         release_locality(chip, tpm_dev.locality, 1); >         tpm_dev.client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver tpm_tis_i2c_driver = { > diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c > b/drivers/char/tpm/tpm_i2c_nuvoton.c > index b77c18e38662..95c37350cc8e 100644 > --- a/drivers/char/tpm/tpm_i2c_nuvoton.c > +++ b/drivers/char/tpm/tpm_i2c_nuvoton.c > @@ -622,12 +622,11 @@ static int i2c_nuvoton_probe(struct i2c_client > *client, >         return tpm_chip_register(chip); >  } >   > -static int i2c_nuvoton_remove(struct i2c_client *client) > +static void i2c_nuvoton_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >   >         tpm_chip_unregister(chip); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_nuvoton_id[] = { > diff --git a/drivers/char/tpm/tpm_tis_i2c_cr50.c > b/drivers/char/tpm/tpm_tis_i2c_cr50.c > index 974479a1ec5a..77cea5b31c6e 100644 > --- a/drivers/char/tpm/tpm_tis_i2c_cr50.c > +++ b/drivers/char/tpm/tpm_tis_i2c_cr50.c > @@ -763,20 +763,18 @@ static int tpm_cr50_i2c_probe(struct i2c_client > *client) >   * - 0:                Success. >   * - -errno:   A POSIX error code. >   */ > -static int tpm_cr50_i2c_remove(struct i2c_client *client) > +static void tpm_cr50_i2c_remove(struct i2c_client *client) >  { >         struct tpm_chip *chip = i2c_get_clientdata(client); >         struct device *dev = &client->dev; >   >         if (!chip) { >                 dev_crit(dev, "Could not get client data at remove, > memory corruption ahead\n"); > -               return 0; > +               return; >         } >   >         tpm_chip_unregister(chip); >         tpm_cr50_release_locality(chip, true); > - > -       return 0; >  } >   >  static SIMPLE_DEV_PM_OPS(cr50_i2c_pm, tpm_pm_suspend, > tpm_pm_resume); > diff --git a/drivers/clk/clk-cdce706.c b/drivers/clk/clk-cdce706.c > index 5467d941ddfd..1449d0537674 100644 > --- a/drivers/clk/clk-cdce706.c > +++ b/drivers/clk/clk-cdce706.c > @@ -665,10 +665,9 @@ static int cdce706_probe(struct i2c_client > *client) >                                       cdce); >  } >   > -static int cdce706_remove(struct i2c_client *client) > +static void cdce706_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >   > diff --git a/drivers/clk/clk-cs2000-cp.c b/drivers/clk/clk-cs2000- > cp.c > index aa5c72bab83e..320d39922206 100644 > --- a/drivers/clk/clk-cs2000-cp.c > +++ b/drivers/clk/clk-cs2000-cp.c > @@ -557,7 +557,7 @@ static int cs2000_version_print(struct > cs2000_priv *priv) >         return 0; >  } >   > -static int cs2000_remove(struct i2c_client *client) > +static void cs2000_remove(struct i2c_client *client) >  { >         struct cs2000_priv *priv = i2c_get_clientdata(client); >         struct device *dev = priv_to_dev(priv); > @@ -566,8 +566,6 @@ static int cs2000_remove(struct i2c_client > *client) >         of_clk_del_provider(np); >   >         clk_hw_unregister(&priv->hw); > - > -       return 0; >  } >   >  static int cs2000_probe(struct i2c_client *client) > diff --git a/drivers/clk/clk-si514.c b/drivers/clk/clk-si514.c > index 4481c4303534..c028fa103bed 100644 > --- a/drivers/clk/clk-si514.c > +++ b/drivers/clk/clk-si514.c > @@ -370,10 +370,9 @@ static int si514_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si514_remove(struct i2c_client *client) > +static void si514_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct i2c_device_id si514_id[] = { > diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c > index 4bca73212662..0e528d7ba656 100644 > --- a/drivers/clk/clk-si5341.c > +++ b/drivers/clk/clk-si5341.c > @@ -1796,7 +1796,7 @@ static int si5341_probe(struct i2c_client > *client) >         return err; >  } >   > -static int si5341_remove(struct i2c_client *client) > +static void si5341_remove(struct i2c_client *client) >  { >         struct clk_si5341 *data = i2c_get_clientdata(client); >         int i; > @@ -1807,8 +1807,6 @@ static int si5341_remove(struct i2c_client > *client) >                 if (data->clk[i].vddo_reg) >                         regulator_disable(data->clk[i].vddo_reg); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id si5341_id[] = { > diff --git a/drivers/clk/clk-si5351.c b/drivers/clk/clk-si5351.c > index b9f088c4ba2f..9e939c98a455 100644 > --- a/drivers/clk/clk-si5351.c > +++ b/drivers/clk/clk-si5351.c > @@ -1651,11 +1651,9 @@ static int si5351_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si5351_i2c_remove(struct i2c_client *client) > +static void si5351_i2c_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > - > -       return 0; >  } >   >  static struct i2c_driver si5351_driver = { > diff --git a/drivers/clk/clk-si570.c b/drivers/clk/clk-si570.c > index 1ff8f32f734d..0a6d70c49726 100644 > --- a/drivers/clk/clk-si570.c > +++ b/drivers/clk/clk-si570.c > @@ -498,10 +498,9 @@ static int si570_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int si570_remove(struct i2c_client *client) > +static void si570_remove(struct i2c_client *client) >  { >         of_clk_del_provider(client->dev.of_node); > -       return 0; >  } >   >  static const struct of_device_id clk_si570_of_match[] = { > diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk- > versaclock5.c > index e7be3e54b9be..657493ecce4c 100644 > --- a/drivers/clk/clk-versaclock5.c > +++ b/drivers/clk/clk-versaclock5.c > @@ -1138,7 +1138,7 @@ static int vc5_probe(struct i2c_client *client) >         return ret; >  } >   > -static int vc5_remove(struct i2c_client *client) > +static void vc5_remove(struct i2c_client *client) >  { >         struct vc5_driver_data *vc5 = i2c_get_clientdata(client); >   > @@ -1146,8 +1146,6 @@ static int vc5_remove(struct i2c_client > *client) >   >         if (vc5->chip_info->flags & VC5_HAS_INTERNAL_XTAL) >                 clk_unregister_fixed_rate(vc5->pin_xin); > - > -       return 0; >  } >   >  static int __maybe_unused vc5_suspend(struct device *dev) > diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c > index a4b13d326cfc..82bf15d49561 100644 > --- a/drivers/crypto/atmel-ecc.c > +++ b/drivers/crypto/atmel-ecc.c > @@ -343,7 +343,7 @@ static int atmel_ecc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int atmel_ecc_remove(struct i2c_client *client) > +static void atmel_ecc_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   > @@ -358,7 +358,7 @@ static int atmel_ecc_remove(struct i2c_client > *client) >                  * accessing the freed memory. >                  */ >                 dev_emerg(&client->dev, "Device is busy, expect > memory corruption.\n"); > -               return 0; > +               return; >         } >   >         crypto_unregister_kpp(&atmel_ecdh_nist_p256); > @@ -366,8 +366,6 @@ static int atmel_ecc_remove(struct i2c_client > *client) >         spin_lock(&driver_data.i2c_list_lock); >         list_del(&i2c_priv->i2c_client_list_node); >         spin_unlock(&driver_data.i2c_list_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/crypto/atmel-sha204a.c b/drivers/crypto/atmel- > sha204a.c > index e4087bdd2475..a84b657598c6 100644 > --- a/drivers/crypto/atmel-sha204a.c > +++ b/drivers/crypto/atmel-sha204a.c > @@ -116,18 +116,16 @@ static int atmel_sha204a_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int atmel_sha204a_remove(struct i2c_client *client) > +static void atmel_sha204a_remove(struct i2c_client *client) >  { >         struct atmel_i2c_client_priv *i2c_priv = > i2c_get_clientdata(client); >   >         if (atomic_read(&i2c_priv->tfm_count)) { >                 dev_emerg(&client->dev, "Device is busy, will remove > it anyhow\n"); > -               return 0; > +               return; >         } >   >         kfree((void *)i2c_priv->hwrng.priv); > - > -       return 0; >  } >   >  static const struct of_device_id atmel_sha204a_dt_ids[] = { > diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon- > rt8973a.c > index 40c07f4d656e..d1c674f3f2b9 100644 > --- a/drivers/extcon/extcon-rt8973a.c > +++ b/drivers/extcon/extcon-rt8973a.c > @@ -647,13 +647,11 @@ static int rt8973a_muic_i2c_probe(struct > i2c_client *i2c, >         return 0; >  } >   > -static int rt8973a_muic_i2c_remove(struct i2c_client *i2c) > +static void rt8973a_muic_i2c_remove(struct i2c_client *i2c) >  { >         struct rt8973a_muic_info *info = i2c_get_clientdata(i2c); >   >         regmap_del_irq_chip(info->irq, info->irq_data); > - > -       return 0; >  } >   >  static const struct of_device_id rt8973a_dt_match[] = { > diff --git a/drivers/gpio/gpio-adp5588.c b/drivers/gpio/gpio- > adp5588.c > index e388e75103f4..acb673dc9005 100644 > --- a/drivers/gpio/gpio-adp5588.c > +++ b/drivers/gpio/gpio-adp5588.c > @@ -411,14 +411,12 @@ static int adp5588_gpio_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adp5588_gpio_remove(struct i2c_client *client) > +static void adp5588_gpio_remove(struct i2c_client *client) >  { >         struct adp5588_gpio *dev = i2c_get_clientdata(client); >   >         if (dev->client->irq) >                 free_irq(dev->client->irq, dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp5588_gpio_id[] = { > diff --git a/drivers/gpio/gpio-max7300.c b/drivers/gpio/gpio- > max7300.c > index b2b547dd6e84..43da381a4d7e 100644 > --- a/drivers/gpio/gpio-max7300.c > +++ b/drivers/gpio/gpio-max7300.c > @@ -48,11 +48,9 @@ static int max7300_probe(struct i2c_client > *client, >         return __max730x_probe(ts); >  } >   > -static int max7300_remove(struct i2c_client *client) > +static void max7300_remove(struct i2c_client *client) >  { >         __max730x_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id max7300_id[] = { > diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio- > pca953x.c > index 3eedeac9ec8d..fc5f037aaf64 100644 > --- a/drivers/gpio/gpio-pca953x.c > +++ b/drivers/gpio/gpio-pca953x.c > @@ -1095,7 +1095,7 @@ static int pca953x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca953x_remove(struct i2c_client *client) > +static void pca953x_remove(struct i2c_client *client) >  { >         struct pca953x_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct pca953x_chip *chip = i2c_get_clientdata(client); > @@ -1106,8 +1106,6 @@ static int pca953x_remove(struct i2c_client > *client) >         } >   >         regulator_disable(chip->regulator); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio- > pcf857x.c > index 59cc27e4de51..e98ea47d7237 100644 > --- a/drivers/gpio/gpio-pcf857x.c > +++ b/drivers/gpio/gpio-pcf857x.c > @@ -399,7 +399,7 @@ static int pcf857x_probe(struct i2c_client > *client, >         return status; >  } >   > -static int pcf857x_remove(struct i2c_client *client) > +static void pcf857x_remove(struct i2c_client *client) >  { >         struct pcf857x_platform_data    *pdata = > dev_get_platdata(&client->dev); >         struct pcf857x                  *gpio = > i2c_get_clientdata(client); > @@ -407,8 +407,6 @@ static int pcf857x_remove(struct i2c_client > *client) >         if (pdata && pdata->teardown) >                 pdata->teardown(client, gpio->chip.base, gpio- > >chip.ngpio, >                                 pdata->context); > - > -       return 0; >  } >   >  static void pcf857x_shutdown(struct i2c_client *client) > diff --git a/drivers/gpio/gpio-tpic2810.c b/drivers/gpio/gpio- > tpic2810.c > index 99d5a84a9129..8d8290f36c8a 100644 > --- a/drivers/gpio/gpio-tpic2810.c > +++ b/drivers/gpio/gpio-tpic2810.c > @@ -134,13 +134,11 @@ static int tpic2810_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tpic2810_remove(struct i2c_client *client) > +static void tpic2810_remove(struct i2c_client *client) >  { >         struct tpic2810 *gpio = i2c_get_clientdata(client); >   >         gpiochip_remove(&gpio->chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id tpic2810_id_table[] = { > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 5bb9300040dd..06107b01e169 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -1335,7 +1335,7 @@ static int adv7511_probe(struct i2c_client > *i2c, const struct i2c_device_id *id) >         return ret; >  } >   > -static int adv7511_remove(struct i2c_client *i2c) > +static void adv7511_remove(struct i2c_client *i2c) >  { >         struct adv7511 *adv7511 = i2c_get_clientdata(i2c); >   > @@ -1352,8 +1352,6 @@ static int adv7511_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(adv7511->i2c_packet); >         i2c_unregister_device(adv7511->i2c_edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7511_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > index ae3d6e9a606c..660a54857929 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c > @@ -787,7 +787,7 @@ static int anx6345_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx6345_i2c_remove(struct i2c_client *client) > +static void anx6345_i2c_remove(struct i2c_client *client) >  { >         struct anx6345 *anx6345 = i2c_get_clientdata(client); >   > @@ -798,8 +798,6 @@ static int anx6345_i2c_remove(struct i2c_client > *client) >         kfree(anx6345->edid); >   >         mutex_destroy(&anx6345->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx6345_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > index d2fc8676fab6..5997049fde5b 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c > @@ -1357,7 +1357,7 @@ static int anx78xx_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int anx78xx_i2c_remove(struct i2c_client *client) > +static void anx78xx_i2c_remove(struct i2c_client *client) >  { >         struct anx78xx *anx78xx = i2c_get_clientdata(client); >   > @@ -1366,8 +1366,6 @@ static int anx78xx_i2c_remove(struct i2c_client > *client) >         unregister_i2c_dummy_clients(anx78xx); >   >         kfree(anx78xx->edid); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx78xx_id[] = { > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c > b/drivers/gpu/drm/bridge/analogix/anx7625.c > index 53a5da6c49dd..73f1d3338c81 100644 > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c > @@ -2733,7 +2733,7 @@ static int anx7625_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int anx7625_i2c_remove(struct i2c_client *client) > +static void anx7625_i2c_remove(struct i2c_client *client) >  { >         struct anx7625_data *platform = i2c_get_clientdata(client); >   > @@ -2755,8 +2755,6 @@ static int anx7625_i2c_remove(struct i2c_client > *client) >   >         if (platform->pdata.audio_en) >                 anx7625_unregister_audio(platform); > - > -       return 0; >  } >   >  static const struct i2c_device_id anx7625_id[] = { > diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c > b/drivers/gpu/drm/bridge/chrontel-ch7033.c > index 486f405c2e16..efd587d2075f 100644 > --- a/drivers/gpu/drm/bridge/chrontel-ch7033.c > +++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c > @@ -582,14 +582,12 @@ static int ch7033_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ch7033_remove(struct i2c_client *client) > +static void ch7033_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct ch7033_priv *priv = dev_get_drvdata(dev); >   >         drm_bridge_remove(&priv->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ch7033_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > index 0f6d907432e3..fa91bdeddef0 100644 > --- a/drivers/gpu/drm/bridge/cros-ec-anx7688.c > +++ b/drivers/gpu/drm/bridge/cros-ec-anx7688.c > @@ -159,13 +159,11 @@ static int cros_ec_anx7688_bridge_probe(struct > i2c_client *client) >         return 0; >  } >   > -static int cros_ec_anx7688_bridge_remove(struct i2c_client *client) > +static void cros_ec_anx7688_bridge_remove(struct i2c_client *client) >  { >         struct cros_ec_anx7688 *anx7688 = i2c_get_clientdata(client); >   >         drm_bridge_remove(&anx7688->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id > cros_ec_anx7688_bridge_match_table[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it6505.c > b/drivers/gpu/drm/bridge/ite-it6505.c > index 4b673c4792d7..547e0c9d3bdc 100644 > --- a/drivers/gpu/drm/bridge/ite-it6505.c > +++ b/drivers/gpu/drm/bridge/ite-it6505.c > @@ -3316,7 +3316,7 @@ static int it6505_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it6505_i2c_remove(struct i2c_client *client) > +static void it6505_i2c_remove(struct i2c_client *client) >  { >         struct it6505 *it6505 = i2c_get_clientdata(client); >   > @@ -3324,8 +3324,6 @@ static int it6505_i2c_remove(struct i2c_client > *client) >         drm_dp_aux_unregister(&it6505->aux); >         it6505_debugfs_remove(it6505); >         it6505_poweroff(it6505); > - > -       return 0; >  } >   >  static const struct i2c_device_id it6505_id[] = { > diff --git a/drivers/gpu/drm/bridge/ite-it66121.c > b/drivers/gpu/drm/bridge/ite-it66121.c > index 448c58e60c11..8d05ac2192f2 100644 > --- a/drivers/gpu/drm/bridge/ite-it66121.c > +++ b/drivers/gpu/drm/bridge/ite-it66121.c > @@ -1622,15 +1622,13 @@ static int it66121_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int it66121_remove(struct i2c_client *client) > +static void it66121_remove(struct i2c_client *client) >  { >         struct it66121_ctx *ctx = i2c_get_clientdata(client); >   >         ite66121_power_off(ctx); >         drm_bridge_remove(&ctx->bridge); >         mutex_destroy(&ctx->lock); > - > -       return 0; >  } >   >  static const struct of_device_id it66121_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c > b/drivers/gpu/drm/bridge/lontium-lt8912b.c > index c642d1e02b2f..2f5c9ea46e93 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt8912b.c > +++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c > @@ -717,7 +717,7 @@ static int lt8912_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt8912_remove(struct i2c_client *client) > +static void lt8912_remove(struct i2c_client *client) >  { >         struct lt8912 *lt = i2c_get_clientdata(client); >   > @@ -725,7 +725,6 @@ static int lt8912_remove(struct i2c_client > *client) >         drm_bridge_remove(<->bridge); >         lt8912_free_i2c(lt); >         lt8912_put_dt(lt); > -       return 0; >  } >   >  static const struct of_device_id lt8912_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c > b/drivers/gpu/drm/bridge/lontium-lt9211.c > index e92821fbc639..0646ec28ad17 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9211.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c > @@ -765,13 +765,11 @@ static int lt9211_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9211_remove(struct i2c_client *client) > +static void lt9211_remove(struct i2c_client *client) >  { >         struct lt9211 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9211_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c > b/drivers/gpu/drm/bridge/lontium-lt9611.c > index 7ef8fe5abc12..492e948d624f 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c > @@ -1220,7 +1220,7 @@ static int lt9611_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611_remove(struct i2c_client *client) > +static void lt9611_remove(struct i2c_client *client) >  { >         struct lt9611 *lt9611 = i2c_get_clientdata(client); >   > @@ -1232,8 +1232,6 @@ static int lt9611_remove(struct i2c_client > *client) >   >         of_node_put(lt9611->dsi1_node); >         of_node_put(lt9611->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611_id[] = { > diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > index 3d62e6bf6892..b5a58106c328 100644 > --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c > @@ -977,7 +977,7 @@ static int lt9611uxc_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lt9611uxc_remove(struct i2c_client *client) > +static void lt9611uxc_remove(struct i2c_client *client) >  { >         struct lt9611uxc *lt9611uxc = i2c_get_clientdata(client); >   > @@ -992,8 +992,6 @@ static int lt9611uxc_remove(struct i2c_client > *client) >   >         of_node_put(lt9611uxc->dsi1_node); >         of_node_put(lt9611uxc->dsi0_node); > - > -       return 0; >  } >   >  static struct i2c_device_id lt9611uxc_id[] = { > diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > index cce98bf2a4e7..9f175df11581 100644 > --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c > @@ -355,11 +355,9 @@ static int stdp4028_ge_b850v3_fw_probe(struct > i2c_client *stdp4028_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) > +static void stdp4028_ge_b850v3_fw_remove(struct i2c_client > *stdp4028_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp4028_ge_b850v3_fw_i2c_table[] > = { > @@ -405,11 +403,9 @@ static int stdp2690_ge_b850v3_fw_probe(struct > i2c_client *stdp2690_i2c, >         return ge_b850v3_register(); >  } >   > -static int stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) > +static void stdp2690_ge_b850v3_fw_remove(struct i2c_client > *stdp2690_i2c) >  { >         ge_b850v3_lvds_remove(); > - > -       return 0; >  } >   >  static const struct i2c_device_id stdp2690_ge_b850v3_fw_i2c_table[] > = { > diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c > b/drivers/gpu/drm/bridge/nxp-ptn3460.c > index 1ab91f4e057b..0851101a8c72 100644 > --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c > +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c > @@ -315,13 +315,11 @@ static int ptn3460_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ptn3460_remove(struct i2c_client *client) > +static void ptn3460_remove(struct i2c_client *client) >  { >         struct ptn3460_bridge *ptn_bridge = > i2c_get_clientdata(client); >   >         drm_bridge_remove(&ptn_bridge->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ptn3460_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c > b/drivers/gpu/drm/bridge/parade-ps8622.c > index 37b308850b4e..b54f418d2b7b 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8622.c > +++ b/drivers/gpu/drm/bridge/parade-ps8622.c > @@ -524,14 +524,12 @@ static int ps8622_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ps8622_remove(struct i2c_client *client) > +static void ps8622_remove(struct i2c_client *client) >  { >         struct ps8622_bridge *ps8622 = i2c_get_clientdata(client); >   >         backlight_device_unregister(ps8622->bl); >         drm_bridge_remove(&ps8622->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id ps8622_i2c_table[] = { > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c > b/drivers/gpu/drm/bridge/parade-ps8640.c > index edb939b14c04..a09d1828d8e1 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -690,13 +690,11 @@ static int ps8640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ps8640_remove(struct i2c_client *client) > +static void ps8640_remove(struct i2c_client *client) >  { >         struct ps8640 *ps_bridge = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ps_bridge->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id ps8640_match[] = { > diff --git a/drivers/gpu/drm/bridge/sii902x.c > b/drivers/gpu/drm/bridge/sii902x.c > index 65549fbfdc87..c5e5f83b97ce 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -1143,7 +1143,7 @@ static int sii902x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sii902x_remove(struct i2c_client *client) > +static void sii902x_remove(struct i2c_client *client) >   >  { >         struct sii902x *sii902x = i2c_get_clientdata(client); > @@ -1152,8 +1152,6 @@ static int sii902x_remove(struct i2c_client > *client) >         drm_bridge_remove(&sii902x->bridge); >         regulator_bulk_disable(ARRAY_SIZE(sii902x->supplies), >                                sii902x->supplies); > - > -       return 0; >  } >   >  static const struct of_device_id sii902x_dt_ids[] = { > diff --git a/drivers/gpu/drm/bridge/sii9234.c > b/drivers/gpu/drm/bridge/sii9234.c > index 15c98a7bd81c..5b3061d4b5c3 100644 > --- a/drivers/gpu/drm/bridge/sii9234.c > +++ b/drivers/gpu/drm/bridge/sii9234.c > @@ -936,14 +936,12 @@ static int sii9234_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii9234_remove(struct i2c_client *client) > +static void sii9234_remove(struct i2c_client *client) >  { >         struct sii9234 *ctx = i2c_get_clientdata(client); >   >         sii9234_cable_out(ctx); >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii9234_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c > b/drivers/gpu/drm/bridge/sil-sii8620.c > index ec7745c31da0..eabd3e09adfa 100644 > --- a/drivers/gpu/drm/bridge/sil-sii8620.c > +++ b/drivers/gpu/drm/bridge/sil-sii8620.c > @@ -2346,7 +2346,7 @@ static int sii8620_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sii8620_remove(struct i2c_client *client) > +static void sii8620_remove(struct i2c_client *client) >  { >         struct sii8620 *ctx = i2c_get_clientdata(client); >   > @@ -2360,8 +2360,6 @@ static int sii8620_remove(struct i2c_client > *client) >                 sii8620_cable_out(ctx); >         } >         drm_bridge_remove(&ctx->bridge); > - > -       return 0; >  } >   >  static const struct of_device_id sii8620_dt_match[] = { > diff --git a/drivers/gpu/drm/bridge/tc358767.c > b/drivers/gpu/drm/bridge/tc358767.c > index 485717c8f0b4..a50316538a9b 100644 > --- a/drivers/gpu/drm/bridge/tc358767.c > +++ b/drivers/gpu/drm/bridge/tc358767.c > @@ -2148,13 +2148,11 @@ static int tc_probe(struct i2c_client > *client, const struct i2c_device_id *id) >         return 0; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358767_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/tc358768.c > b/drivers/gpu/drm/bridge/tc358768.c > index fd585bf925fe..4c4b77ce8aba 100644 > --- a/drivers/gpu/drm/bridge/tc358768.c > +++ b/drivers/gpu/drm/bridge/tc358768.c > @@ -1072,13 +1072,11 @@ static int tc358768_i2c_probe(struct > i2c_client *client, >         return mipi_dsi_host_register(&priv->dsi_host); >  } >   > -static int tc358768_i2c_remove(struct i2c_client *client) > +static void tc358768_i2c_remove(struct i2c_client *client) >  { >         struct tc358768_priv *priv = i2c_get_clientdata(client); >   >         mipi_dsi_host_unregister(&priv->dsi_host); > - > -       return 0; >  } >   >  static struct i2c_driver tc358768_driver = { > diff --git a/drivers/gpu/drm/bridge/tc358775.c > b/drivers/gpu/drm/bridge/tc358775.c > index 62a7ef352daa..1d097717b47b 100644 > --- a/drivers/gpu/drm/bridge/tc358775.c > +++ b/drivers/gpu/drm/bridge/tc358775.c > @@ -713,13 +713,11 @@ static int tc_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tc_remove(struct i2c_client *client) > +static void tc_remove(struct i2c_client *client) >  { >         struct tc_data *tc = i2c_get_clientdata(client); >   >         drm_bridge_remove(&tc->bridge); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358775_i2c_ids[] = { > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > index ac66f408b40c..8f93e374848c 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > @@ -726,14 +726,12 @@ static int sn65dsi83_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sn65dsi83_remove(struct i2c_client *client) > +static void sn65dsi83_remove(struct i2c_client *client) >  { >         struct sn65dsi83 *ctx = i2c_get_clientdata(client); >   >         drm_bridge_remove(&ctx->bridge); >         of_node_put(ctx->host_node); > - > -       return 0; >  } >   >  static struct i2c_device_id sn65dsi83_id[] = { > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c > b/drivers/gpu/drm/bridge/ti-tfp410.c > index 756b3e6e776b..281ceb7b9840 100644 > --- a/drivers/gpu/drm/bridge/ti-tfp410.c > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c > @@ -392,11 +392,9 @@ static int tfp410_i2c_probe(struct i2c_client > *client, >         return tfp410_init(&client->dev, true); >  } >   > -static int tfp410_i2c_remove(struct i2c_client *client) > +static void tfp410_i2c_remove(struct i2c_client *client) >  { >         tfp410_fini(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tfp410_i2c_ids[] = { > diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c > b/drivers/gpu/drm/i2c/ch7006_drv.c > index b91e48d2190d..578b738859b9 100644 > --- a/drivers/gpu/drm/i2c/ch7006_drv.c > +++ b/drivers/gpu/drm/i2c/ch7006_drv.c > @@ -417,11 +417,9 @@ static int ch7006_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return -ENODEV; >  } >   > -static int ch7006_remove(struct i2c_client *client) > +static void ch7006_remove(struct i2c_client *client) >  { >         ch7006_dbg(client, "\n"); > - > -       return 0; >  } >   >  static int ch7006_resume(struct device *dev) > diff --git a/drivers/gpu/drm/i2c/tda9950.c > b/drivers/gpu/drm/i2c/tda9950.c > index 5b03fdd1eaa4..9ed54e7ccff2 100644 > --- a/drivers/gpu/drm/i2c/tda9950.c > +++ b/drivers/gpu/drm/i2c/tda9950.c > @@ -478,14 +478,12 @@ static int tda9950_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9950_remove(struct i2c_client *client) > +static void tda9950_remove(struct i2c_client *client) >  { >         struct tda9950_priv *priv = i2c_get_clientdata(client); >   >         cec_notifier_cec_adap_unregister(priv->notify, priv->adap); >         cec_unregister_adapter(priv->adap); > - > -       return 0; >  } >   >  static struct i2c_device_id tda9950_ids[] = { > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c > b/drivers/gpu/drm/i2c/tda998x_drv.c > index b7ec6c374fbd..1f5ce292f5b1 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -2075,11 +2075,10 @@ tda998x_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int tda998x_remove(struct i2c_client *client) > +static void tda998x_remove(struct i2c_client *client) >  { >         component_del(&client->dev, &tda998x_ops); >         tda998x_destroy(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > index cb5cb27462df..36a46cb7fe1c 100644 > --- a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > +++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > @@ -288,7 +288,7 @@ static int lcd_olinuxino_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lcd_olinuxino_remove(struct i2c_client *client) > +static void lcd_olinuxino_remove(struct i2c_client *client) >  { >         struct lcd_olinuxino *panel = i2c_get_clientdata(client); >   > @@ -296,8 +296,6 @@ static int lcd_olinuxino_remove(struct i2c_client > *client) >   >         drm_panel_disable(&panel->panel); >         drm_panel_unprepare(&panel->panel); > - > -       return 0; >  } >   >  static const struct of_device_id lcd_olinuxino_of_ids[] = { > diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > index 145047e19394..6dc67b609873 100644 > --- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > +++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c > @@ -445,7 +445,7 @@ static int rpi_touchscreen_probe(struct > i2c_client *i2c, >         return -ENODEV; >  } >   > -static int rpi_touchscreen_remove(struct i2c_client *i2c) > +static void rpi_touchscreen_remove(struct i2c_client *i2c) >  { >         struct rpi_touchscreen *ts = i2c_get_clientdata(i2c); >   > @@ -454,8 +454,6 @@ static int rpi_touchscreen_remove(struct > i2c_client *i2c) >         drm_panel_remove(&ts->base); >   >         mipi_dsi_device_unregister(ts->dsi); > - > -       return 0; >  } >   >  static int rpi_touchscreen_dsi_probe(struct mipi_dsi_device *dsi) > diff --git a/drivers/gpu/drm/solomon/ssd130x-i2c.c > b/drivers/gpu/drm/solomon/ssd130x-i2c.c > index 1e0fcec7be47..ddfa0bb5d9c9 100644 > --- a/drivers/gpu/drm/solomon/ssd130x-i2c.c > +++ b/drivers/gpu/drm/solomon/ssd130x-i2c.c > @@ -39,13 +39,11 @@ static int ssd130x_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ssd130x_i2c_remove(struct i2c_client *client) > +static void ssd130x_i2c_remove(struct i2c_client *client) >  { >         struct ssd130x_device *ssd130x = i2c_get_clientdata(client); >   >         ssd130x_remove(ssd130x); > - > -       return 0; >  } >   >  static void ssd130x_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c- > hid/i2c-hid-core.c > index c078f09a2318..95cefae47adf 100644 > --- a/drivers/hid/i2c-hid/i2c-hid-core.c > +++ b/drivers/hid/i2c-hid/i2c-hid-core.c > @@ -1064,7 +1064,7 @@ int i2c_hid_core_probe(struct i2c_client > *client, struct i2chid_ops *ops, >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_probe); >   > -int i2c_hid_core_remove(struct i2c_client *client) > +void i2c_hid_core_remove(struct i2c_client *client) >  { >         struct i2c_hid *ihid = i2c_get_clientdata(client); >         struct hid_device *hid; > @@ -1078,8 +1078,6 @@ int i2c_hid_core_remove(struct i2c_client > *client) >                 i2c_hid_free_buffers(ihid); >   >         i2c_hid_core_power_down(ihid); > - > -       return 0; >  } >  EXPORT_SYMBOL_GPL(i2c_hid_core_remove); >   > diff --git a/drivers/hid/i2c-hid/i2c-hid.h b/drivers/hid/i2c-hid/i2c- > hid.h > index 236cc062d5ef..96c75510ad3f 100644 > --- a/drivers/hid/i2c-hid/i2c-hid.h > +++ b/drivers/hid/i2c-hid/i2c-hid.h > @@ -33,7 +33,7 @@ struct i2chid_ops { >   >  int i2c_hid_core_probe(struct i2c_client *client, struct i2chid_ops > *ops, >                        u16 hid_descriptor_address, u32 quirks); > -int i2c_hid_core_remove(struct i2c_client *client); > +void i2c_hid_core_remove(struct i2c_client *client); >   >  void i2c_hid_core_shutdown(struct i2c_client *client); >   > diff --git a/drivers/hwmon/adc128d818.c b/drivers/hwmon/adc128d818.c > index fd938c70293f..299160543b35 100644 > --- a/drivers/hwmon/adc128d818.c > +++ b/drivers/hwmon/adc128d818.c > @@ -495,14 +495,12 @@ static int adc128_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adc128_remove(struct i2c_client *client) > +static void adc128_remove(struct i2c_client *client) >  { >         struct adc128_data *data = i2c_get_clientdata(client); >   >         if (data->regulator) >                 regulator_disable(data->regulator); > - > -       return 0; >  } >   >  static const struct i2c_device_id adc128_id[] = { > diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c > index c67cd037a93f..927f8df05b7c 100644 > --- a/drivers/hwmon/adt7470.c > +++ b/drivers/hwmon/adt7470.c > @@ -1296,12 +1296,11 @@ static int adt7470_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int adt7470_remove(struct i2c_client *client) > +static void adt7470_remove(struct i2c_client *client) >  { >         struct adt7470_data *data = i2c_get_clientdata(client); >   >         kthread_stop(data->auto_update); > -       return 0; >  } >   >  static const struct i2c_device_id adt7470_id[] = { > diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c > index 8cf0bcb85eb4..a9166c8555c5 100644 > --- a/drivers/hwmon/asb100.c > +++ b/drivers/hwmon/asb100.c > @@ -208,7 +208,7 @@ static void asb100_write_value(struct i2c_client > *client, u16 reg, u16 val); >  static int asb100_probe(struct i2c_client *client); >  static int asb100_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int asb100_remove(struct i2c_client *client); > +static void asb100_remove(struct i2c_client *client); >  static struct asb100_data *asb100_update_device(struct device *dev); >  static void asb100_init_client(struct i2c_client *client); >   > @@ -822,7 +822,7 @@ static int asb100_probe(struct i2c_client > *client) >         return err; >  } >   > -static int asb100_remove(struct i2c_client *client) > +static void asb100_remove(struct i2c_client *client) >  { >         struct asb100_data *data = i2c_get_clientdata(client); >   > @@ -831,8 +831,6 @@ static int asb100_remove(struct i2c_client > *client) >   >         i2c_unregister_device(data->lm75[1]); >         i2c_unregister_device(data->lm75[0]); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/hwmon/asc7621.c b/drivers/hwmon/asc7621.c > index e835605a7456..4f90fdee9cc7 100644 > --- a/drivers/hwmon/asc7621.c > +++ b/drivers/hwmon/asc7621.c > @@ -1165,7 +1165,7 @@ static int asc7621_detect(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int asc7621_remove(struct i2c_client *client) > +static void asc7621_remove(struct i2c_client *client) >  { >         struct asc7621_data *data = i2c_get_clientdata(client); >         int i; > @@ -1176,8 +1176,6 @@ static int asc7621_remove(struct i2c_client > *client) >                 device_remove_file(&client->dev, >                                    > &(asc7621_params[i].sda.dev_attr)); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id asc7621_id[] = { > diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c > index e3ad4c2d0038..b1cd028c8277 100644 > --- a/drivers/hwmon/dme1737.c > +++ b/drivers/hwmon/dme1737.c > @@ -2508,14 +2508,12 @@ static int dme1737_i2c_probe(struct > i2c_client *client) >         return err; >  } >   > -static int dme1737_i2c_remove(struct i2c_client *client) > +static void dme1737_i2c_remove(struct i2c_client *client) >  { >         struct dme1737_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         dme1737_remove_files(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id dme1737_id[] = { > diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c > index 57c8a473698d..ffeed6c1e20b 100644 > --- a/drivers/hwmon/f75375s.c > +++ b/drivers/hwmon/f75375s.c > @@ -114,7 +114,7 @@ struct f75375_data { >  static int f75375_detect(struct i2c_client *client, >                          struct i2c_board_info *info); >  static int f75375_probe(struct i2c_client *client); > -static int f75375_remove(struct i2c_client *client); > +static void f75375_remove(struct i2c_client *client); >   >  static const struct i2c_device_id f75375_id[] = { >         { "f75373", f75373 }, > @@ -864,12 +864,11 @@ static int f75375_probe(struct i2c_client > *client) >         return err; >  } >   > -static int f75375_remove(struct i2c_client *client) > +static void f75375_remove(struct i2c_client *client) >  { >         struct f75375_data *data = i2c_get_clientdata(client); >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &f75375_group); > -       return 0; >  } >   >  /* Return 0 if detection is successful, -ENODEV otherwise */ > diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c > index c26195e3aad7..343e227ca38a 100644 > --- a/drivers/hwmon/fschmd.c > +++ b/drivers/hwmon/fschmd.c > @@ -217,7 +217,7 @@ static const int FSCHMD_NO_TEMP_SENSORS[7] = { 3, > 3, 4, 3, 5, 5, 11 }; >  static int fschmd_probe(struct i2c_client *client); >  static int fschmd_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int fschmd_remove(struct i2c_client *client); > +static void fschmd_remove(struct i2c_client *client); >  static struct fschmd_data *fschmd_update_device(struct device *dev); >   >  /* > @@ -1248,7 +1248,7 @@ static int fschmd_probe(struct i2c_client > *client) >         return err; >  } >   > -static int fschmd_remove(struct i2c_client *client) > +static void fschmd_remove(struct i2c_client *client) >  { >         struct fschmd_data *data = i2c_get_clientdata(client); >         int i; > @@ -1291,8 +1291,6 @@ static int fschmd_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, fschmd_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static struct fschmd_data *fschmd_update_device(struct device *dev) > diff --git a/drivers/hwmon/ftsteutates.c > b/drivers/hwmon/ftsteutates.c > index ceffc76a0c51..918763832432 100644 > --- a/drivers/hwmon/ftsteutates.c > +++ b/drivers/hwmon/ftsteutates.c > @@ -744,12 +744,11 @@ static int fts_detect(struct i2c_client > *client, >         return 0; >  } >   > -static int fts_remove(struct i2c_client *client) > +static void fts_remove(struct i2c_client *client) >  { >         struct fts_data *data = dev_get_drvdata(&client->dev); >   >         watchdog_unregister_device(&data->wdd); > -       return 0; >  } >   >  static int fts_probe(struct i2c_client *client) > diff --git a/drivers/hwmon/ina209.c b/drivers/hwmon/ina209.c > index fc3007c3e85c..9b58655d2de4 100644 > --- a/drivers/hwmon/ina209.c > +++ b/drivers/hwmon/ina209.c > @@ -568,13 +568,11 @@ static int ina209_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina209_remove(struct i2c_client *client) > +static void ina209_remove(struct i2c_client *client) >  { >         struct ina209_data *data = i2c_get_clientdata(client); >   >         ina209_restore_conf(client, data); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina209_id[] = { > diff --git a/drivers/hwmon/ina3221.c b/drivers/hwmon/ina3221.c > index 58d3828e2ec0..f89bac19bd73 100644 > --- a/drivers/hwmon/ina3221.c > +++ b/drivers/hwmon/ina3221.c > @@ -913,7 +913,7 @@ static int ina3221_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ina3221_remove(struct i2c_client *client) > +static void ina3221_remove(struct i2c_client *client) >  { >         struct ina3221_data *ina = dev_get_drvdata(&client->dev); >         int i; > @@ -926,8 +926,6 @@ static int ina3221_remove(struct i2c_client > *client) >                 pm_runtime_put_noidle(ina->pm_dev); >   >         mutex_destroy(&ina->lock); > - > -       return 0; >  } >   >  static int __maybe_unused ina3221_suspend(struct device *dev) > diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c > index 07f7f8b5b73d..7b3c190959d3 100644 > --- a/drivers/hwmon/jc42.c > +++ b/drivers/hwmon/jc42.c > @@ -524,7 +524,7 @@ static int jc42_probe(struct i2c_client *client) >         return PTR_ERR_OR_ZERO(hwmon_dev); >  } >   > -static int jc42_remove(struct i2c_client *client) > +static void jc42_remove(struct i2c_client *client) >  { >         struct jc42_data *data = i2c_get_clientdata(client); >   > @@ -537,7 +537,6 @@ static int jc42_remove(struct i2c_client *client) >                   | (data->config & JC42_CFG_HYST_MASK); >                 i2c_smbus_write_word_swapped(client, JC42_REG_CONFIG, > config); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/hwmon/mcp3021.c b/drivers/hwmon/mcp3021.c > index ce2780768074..99c29ced084c 100644 > --- a/drivers/hwmon/mcp3021.c > +++ b/drivers/hwmon/mcp3021.c > @@ -167,14 +167,12 @@ static int mcp3021_probe(struct i2c_client > *client) >         return err; >  } >   > -static int mcp3021_remove(struct i2c_client *client) > +static void mcp3021_remove(struct i2c_client *client) >  { >         struct mcp3021_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_file(&client->dev.kobj, > &dev_attr_in0_input.attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp3021_id[] = { > diff --git a/drivers/hwmon/occ/p8_i2c.c b/drivers/hwmon/occ/p8_i2c.c > index da39ea28df31..d82a4873a0c6 100644 > --- a/drivers/hwmon/occ/p8_i2c.c > +++ b/drivers/hwmon/occ/p8_i2c.c > @@ -226,13 +226,11 @@ static int p8_i2c_occ_probe(struct i2c_client > *client) >         return occ_setup(occ); >  } >   > -static int p8_i2c_occ_remove(struct i2c_client *client) > +static void p8_i2c_occ_remove(struct i2c_client *client) >  { >         struct occ *occ = dev_get_drvdata(&client->dev); >   >         occ_shutdown(occ); > - > -       return 0; >  } >   >  static const struct of_device_id p8_i2c_occ_of_match[] = { > diff --git a/drivers/hwmon/pcf8591.c b/drivers/hwmon/pcf8591.c > index a97a51005c61..af9614e918a4 100644 > --- a/drivers/hwmon/pcf8591.c > +++ b/drivers/hwmon/pcf8591.c > @@ -228,14 +228,13 @@ static int pcf8591_probe(struct i2c_client > *client) >         return err; >  } >   > -static int pcf8591_remove(struct i2c_client *client) > +static void pcf8591_remove(struct i2c_client *client) >  { >         struct pcf8591_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, > &pcf8591_attr_group_opt); >         sysfs_remove_group(&client->dev.kobj, &pcf8591_attr_group); > -       return 0; >  } >   >  /* Called when we have found a new PCF8591. */ > diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c > index 8c4ed72e5d68..c36bdbe423de 100644 > --- a/drivers/hwmon/smm665.c > +++ b/drivers/hwmon/smm665.c > @@ -671,12 +671,11 @@ static int smm665_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int smm665_remove(struct i2c_client *client) > +static void smm665_remove(struct i2c_client *client) >  { >         struct smm665_data *data = i2c_get_clientdata(client); >   >         i2c_unregister_device(data->cmdreg); > -       return 0; >  } >   >  static const struct i2c_device_id smm665_id[] = { > diff --git a/drivers/hwmon/tps23861.c b/drivers/hwmon/tps23861.c > index 8bd6435c13e8..9cf693287235 100644 > --- a/drivers/hwmon/tps23861.c > +++ b/drivers/hwmon/tps23861.c > @@ -584,13 +584,11 @@ static int tps23861_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps23861_remove(struct i2c_client *client) > +static void tps23861_remove(struct i2c_client *client) >  { >         struct tps23861_data *data = i2c_get_clientdata(client); >   >         debugfs_remove_recursive(data->debugfs_dir); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused tps23861_of_match[] > = { > diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c > index b3579721265f..55c78e12bbbe 100644 > --- a/drivers/hwmon/w83781d.c > +++ b/drivers/hwmon/w83781d.c > @@ -1239,7 +1239,7 @@ static int w83781d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int > +static void >  w83781d_remove(struct i2c_client *client) >  { >         struct w83781d_data *data = i2c_get_clientdata(client); > @@ -1250,8 +1250,6 @@ w83781d_remove(struct i2c_client *client) >   >         i2c_unregister_device(data->lm75[0]); >         i2c_unregister_device(data->lm75[1]); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c > index 80a9a78d7ce9..5fe5c93856af 100644 > --- a/drivers/hwmon/w83791d.c > +++ b/drivers/hwmon/w83791d.c > @@ -315,7 +315,7 @@ struct w83791d_data { >  static int w83791d_probe(struct i2c_client *client); >  static int w83791d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83791d_remove(struct i2c_client *client); > +static void w83791d_remove(struct i2c_client *client); >   >  static int w83791d_read(struct i2c_client *client, u8 reg); >  static int w83791d_write(struct i2c_client *client, u8 reg, u8 > value); > @@ -1405,14 +1405,12 @@ static int w83791d_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83791d_remove(struct i2c_client *client) > +static void w83791d_remove(struct i2c_client *client) >  { >         struct w83791d_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         sysfs_remove_group(&client->dev.kobj, &w83791d_group); > - > -       return 0; >  } >   >  static void w83791d_init_client(struct i2c_client *client) > diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c > index 31a1cdc30877..2ee8ee4f0f1c 100644 > --- a/drivers/hwmon/w83792d.c > +++ b/drivers/hwmon/w83792d.c > @@ -286,7 +286,7 @@ struct w83792d_data { >  static int w83792d_probe(struct i2c_client *client); >  static int w83792d_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int w83792d_remove(struct i2c_client *client); > +static void w83792d_remove(struct i2c_client *client); >  static struct w83792d_data *w83792d_update_device(struct device > *dev); >   >  #ifdef DEBUG > @@ -1429,7 +1429,7 @@ w83792d_probe(struct i2c_client *client) >         return err; >  } >   > -static int > +static void >  w83792d_remove(struct i2c_client *client) >  { >         struct w83792d_data *data = i2c_get_clientdata(client); > @@ -1440,8 +1440,6 @@ w83792d_remove(struct i2c_client *client) >         for (i = 0; i < ARRAY_SIZE(w83792d_group_fan); i++) >                 sysfs_remove_group(&client->dev.kobj, >                                    &w83792d_group_fan[i]); > - > -       return 0; >  } >   >  static void > diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c > index 0a65d164c8f0..daeaaded6b76 100644 > --- a/drivers/hwmon/w83793.c > +++ b/drivers/hwmon/w83793.c > @@ -285,7 +285,7 @@ static int w83793_write_value(struct i2c_client > *client, u16 reg, u8 value); >  static int w83793_probe(struct i2c_client *client); >  static int w83793_detect(struct i2c_client *client, >                          struct i2c_board_info *info); > -static int w83793_remove(struct i2c_client *client); > +static void w83793_remove(struct i2c_client *client); >  static void w83793_init_client(struct i2c_client *client); >  static void w83793_update_nonvolatile(struct device *dev); >  static struct w83793_data *w83793_update_device(struct device *dev); > @@ -1495,7 +1495,7 @@ static struct notifier_block watchdog_notifier > = { >   * Init / remove routines >   */ >   > -static int w83793_remove(struct i2c_client *client) > +static void w83793_remove(struct i2c_client *client) >  { >         struct w83793_data *data = i2c_get_clientdata(client); >         struct device *dev = &client->dev; > @@ -1554,8 +1554,6 @@ static int w83793_remove(struct i2c_client > *client) >         mutex_lock(&watchdog_data_mutex); >         kref_put(&data->kref, w83793_release_resources); >         mutex_unlock(&watchdog_data_mutex); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c > index 45b12c4287df..b170cdf3c2be 100644 > --- a/drivers/hwmon/w83795.c > +++ b/drivers/hwmon/w83795.c > @@ -2235,14 +2235,12 @@ static int w83795_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83795_remove(struct i2c_client *client) > +static void w83795_remove(struct i2c_client *client) >  { >         struct w83795_data *data = i2c_get_clientdata(client); >   >         hwmon_device_unregister(data->hwmon_dev); >         w83795_handle_files(&client->dev, > device_remove_file_wrapper); > - > -       return 0; >  } >   >   > diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c > index a41f989d66e2..99f68358378b 100644 > --- a/drivers/hwmon/w83l785ts.c > +++ b/drivers/hwmon/w83l785ts.c > @@ -65,7 +65,7 @@ static const unsigned short normal_i2c[] = { 0x2e, > I2C_CLIENT_END }; >  static int w83l785ts_probe(struct i2c_client *client); >  static int w83l785ts_detect(struct i2c_client *client, >                             struct i2c_board_info *info); > -static int w83l785ts_remove(struct i2c_client *client); > +static void w83l785ts_remove(struct i2c_client *client); >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval); >  static struct w83l785ts_data *w83l785ts_update_device(struct device > *dev); >   > @@ -203,7 +203,7 @@ static int w83l785ts_probe(struct i2c_client > *client) >         return err; >  } >   > -static int w83l785ts_remove(struct i2c_client *client) > +static void w83l785ts_remove(struct i2c_client *client) >  { >         struct w83l785ts_data *data = i2c_get_clientdata(client); >   > @@ -212,8 +212,6 @@ static int w83l785ts_remove(struct i2c_client > *client) >                            &sensor_dev_attr_temp1_input.dev_attr); >         device_remove_file(&client->dev, >                            &sensor_dev_attr_temp1_max.dev_attr); > - > -       return 0; >  } >   >  static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 > defval) > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core- > base.c > index 8ae47e0bbd67..68fc66a424ef 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -599,13 +599,9 @@ static void i2c_device_remove(struct device > *dev) >   >         driver = to_i2c_driver(dev->driver); >         if (driver->remove) { > -               int status; > - >                 dev_dbg(dev, "remove\n"); >   > -               status = driver->remove(client); > -               if (status) > -                       dev_warn(dev, "remove failed (%pe), will be > ignored\n", ERR_PTR(status)); > +               driver->remove(client); >         } >   >         devres_release_group(&client->dev, client->devres_group_id); > diff --git a/drivers/i2c/i2c-slave-eeprom.c b/drivers/i2c/i2c-slave- > eeprom.c > index 5c7ae421cacf..4abc2d919881 100644 > --- a/drivers/i2c/i2c-slave-eeprom.c > +++ b/drivers/i2c/i2c-slave-eeprom.c > @@ -181,14 +181,12 @@ static int i2c_slave_eeprom_probe(struct > i2c_client *client, const struct i2c_de >         return 0; >  }; >   > -static int i2c_slave_eeprom_remove(struct i2c_client *client) > +static void i2c_slave_eeprom_remove(struct i2c_client *client) >  { >         struct eeprom_data *eeprom = i2c_get_clientdata(client); >   >         i2c_slave_unregister(client); >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom->bin); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_eeprom_id[] = { > diff --git a/drivers/i2c/i2c-slave-testunit.c b/drivers/i2c/i2c- > slave-testunit.c > index 56dae08dfd48..75ee7ebdb614 100644 > --- a/drivers/i2c/i2c-slave-testunit.c > +++ b/drivers/i2c/i2c-slave-testunit.c > @@ -153,13 +153,12 @@ static int i2c_slave_testunit_probe(struct > i2c_client *client) >         return i2c_slave_register(client, > i2c_slave_testunit_slave_cb); >  }; >   > -static int i2c_slave_testunit_remove(struct i2c_client *client) > +static void i2c_slave_testunit_remove(struct i2c_client *client) >  { >         struct testunit_data *tu = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&tu->worker); >         i2c_slave_unregister(client); > -       return 0; >  } >   >  static const struct i2c_device_id i2c_slave_testunit_id[] = { > diff --git a/drivers/i2c/i2c-smbus.c b/drivers/i2c/i2c-smbus.c > index 775332945ad0..b0f1da7ec0f2 100644 > --- a/drivers/i2c/i2c-smbus.c > +++ b/drivers/i2c/i2c-smbus.c > @@ -153,12 +153,11 @@ static int smbalert_probe(struct i2c_client > *ara, >  } >   >  /* IRQ and memory resources are managed so they are freed > automatically */ > -static int smbalert_remove(struct i2c_client *ara) > +static void smbalert_remove(struct i2c_client *ara) >  { >         struct i2c_smbus_alert *alert = i2c_get_clientdata(ara); >   >         cancel_work_sync(&alert->alert); > -       return 0; >  } >   >  static const struct i2c_device_id smbalert_ids[] = { > diff --git a/drivers/i2c/muxes/i2c-mux-ltc4306.c > b/drivers/i2c/muxes/i2c-mux-ltc4306.c > index 704f1e50f6f4..70835825083f 100644 > --- a/drivers/i2c/muxes/i2c-mux-ltc4306.c > +++ b/drivers/i2c/muxes/i2c-mux-ltc4306.c > @@ -294,13 +294,11 @@ static int ltc4306_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ltc4306_remove(struct i2c_client *client) > +static void ltc4306_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > - > -       return 0; >  } >   >  static struct i2c_driver ltc4306_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca9541.c > b/drivers/i2c/muxes/i2c-mux-pca9541.c > index 6daec8d3d331..ea83de78f52d 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca9541.c > +++ b/drivers/i2c/muxes/i2c-mux-pca9541.c > @@ -325,12 +325,11 @@ static int pca9541_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9541_remove(struct i2c_client *client) > +static void pca9541_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static struct i2c_driver pca9541_driver = { > diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c > b/drivers/i2c/muxes/i2c-mux-pca954x.c > index 4ad665757dd8..a5f458b635df 100644 > --- a/drivers/i2c/muxes/i2c-mux-pca954x.c > +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c > @@ -521,14 +521,13 @@ static int pca954x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pca954x_remove(struct i2c_client *client) > +static void pca954x_remove(struct i2c_client *client) >  { >         struct i2c_mux_core *muxc = i2c_get_clientdata(client); >   >         device_remove_file(&client->dev, &dev_attr_idle_state); >   >         pca954x_cleanup(muxc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c > index 9c9e98578667..d03fc3400f94 100644 > --- a/drivers/iio/accel/bma180.c > +++ b/drivers/iio/accel/bma180.c > @@ -1045,7 +1045,7 @@ static int bma180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bma180_remove(struct i2c_client *client) > +static void bma180_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bma180_data *data = iio_priv(indio_dev); > @@ -1062,8 +1062,6 @@ static int bma180_remove(struct i2c_client > *client) >         mutex_unlock(&data->mutex); >         regulator_disable(data->vddio_supply); >         regulator_disable(data->vdd_supply); > - > -       return 0; >  } >   >  static int bma180_suspend(struct device *dev) > diff --git a/drivers/iio/accel/bma400_i2c.c > b/drivers/iio/accel/bma400_i2c.c > index da104ffd3fe0..90c99ab8c8f2 100644 > --- a/drivers/iio/accel/bma400_i2c.c > +++ b/drivers/iio/accel/bma400_i2c.c > @@ -27,11 +27,9 @@ static int bma400_i2c_probe(struct i2c_client > *client, >         return bma400_probe(&client->dev, regmap, id->name); >  } >   > -static int bma400_i2c_remove(struct i2c_client *client) > +static void bma400_i2c_remove(struct i2c_client *client) >  { >         bma400_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bma400_i2c_ids[] = { > diff --git a/drivers/iio/accel/bmc150-accel-i2c.c > b/drivers/iio/accel/bmc150-accel-i2c.c > index dff4d7dd101c..be8cc598b88e 100644 > --- a/drivers/iio/accel/bmc150-accel-i2c.c > +++ b/drivers/iio/accel/bmc150-accel-i2c.c > @@ -209,13 +209,11 @@ static int bmc150_accel_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bmc150_accel_remove(struct i2c_client *client) > +static void bmc150_accel_remove(struct i2c_client *client) >  { >         bmc150_acpi_dual_accel_remove(client); >   >         bmc150_accel_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_accel_acpi_match[] = { > diff --git a/drivers/iio/accel/kxcjk-1013.c > b/drivers/iio/accel/kxcjk-1013.c > index 748b35c2f0c3..94f7b6ac5c87 100644 > --- a/drivers/iio/accel/kxcjk-1013.c > +++ b/drivers/iio/accel/kxcjk-1013.c > @@ -1611,7 +1611,7 @@ static int kxcjk1013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kxcjk1013_remove(struct i2c_client *client) > +static void kxcjk1013_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct kxcjk1013_data *data = iio_priv(indio_dev); > @@ -1630,8 +1630,6 @@ static int kxcjk1013_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         kxcjk1013_set_mode(data, STANDBY); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9- > i2c.c > index c8dc52f11037..86c0d70d0da7 100644 > --- a/drivers/iio/accel/kxsd9-i2c.c > +++ b/drivers/iio/accel/kxsd9-i2c.c > @@ -32,11 +32,9 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c, >                                   i2c->name); >  } >   > -static int kxsd9_i2c_remove(struct i2c_client *client) > +static void kxsd9_i2c_remove(struct i2c_client *client) >  { >         kxsd9_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id kxsd9_of_match[] = { > diff --git a/drivers/iio/accel/mc3230.c b/drivers/iio/accel/mc3230.c > index c15d16e7f1da..2462000e0519 100644 > --- a/drivers/iio/accel/mc3230.c > +++ b/drivers/iio/accel/mc3230.c > @@ -151,15 +151,13 @@ static int mc3230_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mc3230_remove(struct i2c_client *client) > +static void mc3230_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >   >         mc3230_set_opcon(iio_priv(indio_dev), > MC3230_MODE_OPCON_STANDBY); > - > -       return 0; >  } >   >  static int mc3230_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma7455_i2c.c > b/drivers/iio/accel/mma7455_i2c.c > index a3b84e8a3ea8..c63b321b01cd 100644 > --- a/drivers/iio/accel/mma7455_i2c.c > +++ b/drivers/iio/accel/mma7455_i2c.c > @@ -26,11 +26,9 @@ static int mma7455_i2c_probe(struct i2c_client > *i2c, >         return mma7455_core_probe(&i2c->dev, regmap, name); >  } >   > -static int mma7455_i2c_remove(struct i2c_client *i2c) > +static void mma7455_i2c_remove(struct i2c_client *i2c) >  { >         mma7455_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mma7455_i2c_ids[] = { > diff --git a/drivers/iio/accel/mma7660.c > b/drivers/iio/accel/mma7660.c > index 112a5a33c29f..ad2aac0ec1d4 100644 > --- a/drivers/iio/accel/mma7660.c > +++ b/drivers/iio/accel/mma7660.c > @@ -207,7 +207,7 @@ static int mma7660_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma7660_remove(struct i2c_client *client) > +static void mma7660_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -218,8 +218,6 @@ static int mma7660_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device in > stand-by mode (%pe), ignoring\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int mma7660_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma8452.c > b/drivers/iio/accel/mma8452.c > index c7d9ca96dbaa..3ba28c2ff68a 100644 > --- a/drivers/iio/accel/mma8452.c > +++ b/drivers/iio/accel/mma8452.c > @@ -1735,7 +1735,7 @@ static int mma8452_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma8452_remove(struct i2c_client *client) > +static void mma8452_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma8452_data *data = iio_priv(indio_dev); > @@ -1751,8 +1751,6 @@ static int mma8452_remove(struct i2c_client > *client) >   >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/accel/mma9551.c > b/drivers/iio/accel/mma9551.c > index 123cdbbb265c..f7a793f4a8e3 100644 > --- a/drivers/iio/accel/mma9551.c > +++ b/drivers/iio/accel/mma9551.c > @@ -509,7 +509,7 @@ static int mma9551_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9551_remove(struct i2c_client *client) > +static void mma9551_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9551_data *data = iio_priv(indio_dev); > @@ -522,8 +522,6 @@ static int mma9551_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9551_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/mma9553.c > b/drivers/iio/accel/mma9553.c > index 09df58d4be33..2da0e005b13e 100644 > --- a/drivers/iio/accel/mma9553.c > +++ b/drivers/iio/accel/mma9553.c > @@ -1148,7 +1148,7 @@ static int mma9553_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mma9553_remove(struct i2c_client *client) > +static void mma9553_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mma9553_data *data = iio_priv(indio_dev); > @@ -1161,8 +1161,6 @@ static int mma9553_remove(struct i2c_client > *client) >         mutex_lock(&data->mutex); >         mma9551_set_device_state(data->client, false); >         mutex_unlock(&data->mutex); > - > -       return 0; >  } >   >  static int mma9553_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8312.c > b/drivers/iio/accel/stk8312.c > index ceca28913355..7b1d6fb692b3 100644 > --- a/drivers/iio/accel/stk8312.c > +++ b/drivers/iio/accel/stk8312.c > @@ -597,7 +597,7 @@ static int stk8312_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8312_remove(struct i2c_client *client) > +static void stk8312_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8312_data *data = iio_priv(indio_dev); > @@ -609,8 +609,6 @@ static int stk8312_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8312_set_mode(data, STK8312_MODE_STANDBY); > - > -       return 0; >  } >   >  static int stk8312_suspend(struct device *dev) > diff --git a/drivers/iio/accel/stk8ba50.c > b/drivers/iio/accel/stk8ba50.c > index 7d59efb41e22..2f5e4ab2a6e7 100644 > --- a/drivers/iio/accel/stk8ba50.c > +++ b/drivers/iio/accel/stk8ba50.c > @@ -490,7 +490,7 @@ static int stk8ba50_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk8ba50_remove(struct i2c_client *client) > +static void stk8ba50_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct stk8ba50_data *data = iio_priv(indio_dev); > @@ -502,8 +502,6 @@ static int stk8ba50_remove(struct i2c_client > *client) >                 iio_trigger_unregister(data->dready_trig); >   >         stk8ba50_set_power(data, STK8BA50_MODE_SUSPEND); > - > -       return 0; >  } >   >  static int stk8ba50_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c > index 220228c375d3..746bf9a01c25 100644 > --- a/drivers/iio/adc/ad799x.c > +++ b/drivers/iio/adc/ad799x.c > @@ -880,7 +880,7 @@ static int ad799x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad799x_remove(struct i2c_client *client) > +static void ad799x_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ad799x_state *st = iio_priv(indio_dev); > @@ -892,8 +892,6 @@ static int ad799x_remove(struct i2c_client > *client) >                 regulator_disable(st->vref); >         regulator_disable(st->reg); >         kfree(st->rx_buf); > - > -       return 0; >  } >   >  static int __maybe_unused ad799x_suspend(struct device *dev) > diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx- > adc.c > index 240e6c420701..910e7e965fc4 100644 > --- a/drivers/iio/adc/ina2xx-adc.c > +++ b/drivers/iio/adc/ina2xx-adc.c > @@ -1034,7 +1034,7 @@ static int ina2xx_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int ina2xx_remove(struct i2c_client *client) > +static void ina2xx_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ina2xx_chip_info *chip = iio_priv(indio_dev); > @@ -1048,8 +1048,6 @@ static int ina2xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ina2xx_id[] = { > diff --git a/drivers/iio/adc/ltc2497.c b/drivers/iio/adc/ltc2497.c > index 1adddf5a88a9..be57f1157796 100644 > --- a/drivers/iio/adc/ltc2497.c > +++ b/drivers/iio/adc/ltc2497.c > @@ -74,13 +74,11 @@ static int ltc2497_probe(struct i2c_client > *client, >         return ltc2497core_probe(dev, indio_dev); >  } >   > -static int ltc2497_remove(struct i2c_client *client) > +static void ltc2497_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         ltc2497core_remove(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ltc2497_id[] = { > diff --git a/drivers/iio/adc/ti-ads1015.c b/drivers/iio/adc/ti- > ads1015.c > index e3dfc155fbe2..8bceba694026 100644 > --- a/drivers/iio/adc/ti-ads1015.c > +++ b/drivers/iio/adc/ti-ads1015.c > @@ -1094,7 +1094,7 @@ static int ads1015_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ads1015_remove(struct i2c_client *client) > +static void ads1015_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ads1015_data *data = iio_priv(indio_dev); > @@ -1110,8 +1110,6 @@ static int ads1015_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/chemical/atlas-sensor.c > b/drivers/iio/chemical/atlas-sensor.c > index 8378c00fa2ff..7cac77a931c7 100644 > --- a/drivers/iio/chemical/atlas-sensor.c > +++ b/drivers/iio/chemical/atlas-sensor.c > @@ -722,7 +722,7 @@ static int atlas_probe(struct i2c_client *client, >         return ret; >  } >   > -static int atlas_remove(struct i2c_client *client) > +static void atlas_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct atlas_data *data = iio_priv(indio_dev); > @@ -739,8 +739,6 @@ static int atlas_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to power down device > (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int atlas_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/chemical/ccs811.c > b/drivers/iio/chemical/ccs811.c > index 560183efb36f..ba4045e20303 100644 > --- a/drivers/iio/chemical/ccs811.c > +++ b/drivers/iio/chemical/ccs811.c > @@ -532,7 +532,7 @@ static int ccs811_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ccs811_remove(struct i2c_client *client) > +static void ccs811_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ccs811_data *data = iio_priv(indio_dev); > @@ -548,8 +548,6 @@ static int ccs811_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down device > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id ccs811_id[] = { > diff --git a/drivers/iio/chemical/sgp30.c > b/drivers/iio/chemical/sgp30.c > index 2343d444604d..e2c13c78c7e0 100644 > --- a/drivers/iio/chemical/sgp30.c > +++ b/drivers/iio/chemical/sgp30.c > @@ -552,15 +552,13 @@ static int sgp_probe(struct i2c_client *client, >         return 0; >  } >   > -static int sgp_remove(struct i2c_client *client) > +static void sgp_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sgp_data *data = iio_priv(indio_dev); >   >         if (data->iaq_thread) >                 kthread_stop(data->iaq_thread); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgp_id[] = { > diff --git a/drivers/iio/dac/ad5380.c b/drivers/iio/dac/ad5380.c > index a44c83242fb1..62d7fc53c7f4 100644 > --- a/drivers/iio/dac/ad5380.c > +++ b/drivers/iio/dac/ad5380.c > @@ -561,11 +561,9 @@ static int ad5380_i2c_probe(struct i2c_client > *i2c, >         return ad5380_probe(&i2c->dev, regmap, id->driver_data, id- > >name); >  } >   > -static int ad5380_i2c_remove(struct i2c_client *i2c) > +static void ad5380_i2c_remove(struct i2c_client *i2c) >  { >         ad5380_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5380_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c > index 09e242949cd0..7324065d3782 100644 > --- a/drivers/iio/dac/ad5446.c > +++ b/drivers/iio/dac/ad5446.c > @@ -575,11 +575,9 @@ static int ad5446_i2c_probe(struct i2c_client > *i2c, >                 &ad5446_i2c_chip_info[id->driver_data]); >  } >   > -static int ad5446_i2c_remove(struct i2c_client *i2c) > +static void ad5446_i2c_remove(struct i2c_client *i2c) >  { >         ad5446_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5446_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5593r.c b/drivers/iio/dac/ad5593r.c > index 34e1319a9712..92be661034a6 100644 > --- a/drivers/iio/dac/ad5593r.c > +++ b/drivers/iio/dac/ad5593r.c > @@ -97,11 +97,9 @@ static int ad5593r_i2c_probe(struct i2c_client > *i2c, >         return ad5592r_probe(&i2c->dev, id->name, &ad5593r_rw_ops); >  } >   > -static int ad5593r_i2c_remove(struct i2c_client *i2c) > +static void ad5593r_i2c_remove(struct i2c_client *i2c) >  { >         ad5592r_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5593r_i2c_ids[] = { > diff --git a/drivers/iio/dac/ad5696-i2c.c b/drivers/iio/dac/ad5696- > i2c.c > index 762503c1901b..aa36cbf0137c 100644 > --- a/drivers/iio/dac/ad5696-i2c.c > +++ b/drivers/iio/dac/ad5696-i2c.c > @@ -65,11 +65,9 @@ static int ad5686_i2c_probe(struct i2c_client > *i2c, >                             ad5686_i2c_write, ad5686_i2c_read); >  } >   > -static int ad5686_i2c_remove(struct i2c_client *i2c) > +static void ad5686_i2c_remove(struct i2c_client *i2c) >  { >         ad5686_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ad5686_i2c_id[] = { > diff --git a/drivers/iio/dac/ds4424.c b/drivers/iio/dac/ds4424.c > index 5a5e967b0be4..e3dcf1efb7fa 100644 > --- a/drivers/iio/dac/ds4424.c > +++ b/drivers/iio/dac/ds4424.c > @@ -281,15 +281,13 @@ static int ds4424_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ds4424_remove(struct i2c_client *client) > +static void ds4424_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ds4424_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vcc_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id ds4424_id[] = { > diff --git a/drivers/iio/dac/m62332.c b/drivers/iio/dac/m62332.c > index 22b02f50fe41..5a812f87970c 100644 > --- a/drivers/iio/dac/m62332.c > +++ b/drivers/iio/dac/m62332.c > @@ -218,7 +218,7 @@ static int m62332_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m62332_remove(struct i2c_client *client) > +static void m62332_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -226,8 +226,6 @@ static int m62332_remove(struct i2c_client > *client) >         iio_map_array_unregister(indio_dev); >         m62332_set_value(indio_dev, 0, 0); >         m62332_set_value(indio_dev, 0, 1); > - > -       return 0; >  } >   >  static const struct i2c_device_id m62332_id[] = { > diff --git a/drivers/iio/dac/mcp4725.c b/drivers/iio/dac/mcp4725.c > index 7fcb86288823..29ab21904aca 100644 > --- a/drivers/iio/dac/mcp4725.c > +++ b/drivers/iio/dac/mcp4725.c > @@ -485,7 +485,7 @@ static int mcp4725_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mcp4725_remove(struct i2c_client *client) > +static void mcp4725_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mcp4725_data *data = iio_priv(indio_dev); > @@ -495,8 +495,6 @@ static int mcp4725_remove(struct i2c_client > *client) >         if (data->vref_reg) >                 regulator_disable(data->vref_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id mcp4725_id[] = { > diff --git a/drivers/iio/dac/ti-dac5571.c b/drivers/iio/dac/ti- > dac5571.c > index 4b6b04038e94..96b8d80b72a0 100644 > --- a/drivers/iio/dac/ti-dac5571.c > +++ b/drivers/iio/dac/ti-dac5571.c > @@ -381,15 +381,13 @@ static int dac5571_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int dac5571_remove(struct i2c_client *i2c) > +static void dac5571_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct dac5571_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         regulator_disable(data->vref); > - > -       return 0; >  } >   >  static const struct of_device_id dac5571_of_id[] = { > diff --git a/drivers/iio/gyro/bmg160_i2c.c > b/drivers/iio/gyro/bmg160_i2c.c > index b3fa46bd02cb..908ccc385254 100644 > --- a/drivers/iio/gyro/bmg160_i2c.c > +++ b/drivers/iio/gyro/bmg160_i2c.c > @@ -32,11 +32,9 @@ static int bmg160_i2c_probe(struct i2c_client > *client, >         return bmg160_core_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmg160_i2c_remove(struct i2c_client *client) > +static void bmg160_i2c_remove(struct i2c_client *client) >  { >         bmg160_core_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmg160_acpi_match[] = { > diff --git a/drivers/iio/gyro/fxas21002c_i2c.c > b/drivers/iio/gyro/fxas21002c_i2c.c > index a7807fd97483..13bb52c594d1 100644 > --- a/drivers/iio/gyro/fxas21002c_i2c.c > +++ b/drivers/iio/gyro/fxas21002c_i2c.c > @@ -33,11 +33,9 @@ static int fxas21002c_i2c_probe(struct i2c_client > *i2c) >         return fxas21002c_core_probe(&i2c->dev, regmap, i2c->irq, > i2c->name); >  } >   > -static int fxas21002c_i2c_remove(struct i2c_client *i2c) > +static void fxas21002c_i2c_remove(struct i2c_client *i2c) >  { >         fxas21002c_core_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id fxas21002c_i2c_id[] = { > diff --git a/drivers/iio/gyro/itg3200_core.c > b/drivers/iio/gyro/itg3200_core.c > index a7f1bbb5f289..8b3758e3b9e8 100644 > --- a/drivers/iio/gyro/itg3200_core.c > +++ b/drivers/iio/gyro/itg3200_core.c > @@ -350,7 +350,7 @@ static int itg3200_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int itg3200_remove(struct i2c_client *client) > +static void itg3200_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -360,8 +360,6 @@ static int itg3200_remove(struct i2c_client > *client) >                 itg3200_remove_trigger(indio_dev); >   >         itg3200_buffer_unconfigure(indio_dev); > - > -       return 0; >  } >   >  static int __maybe_unused itg3200_suspend(struct device *dev) > diff --git a/drivers/iio/gyro/mpu3050-i2c.c > b/drivers/iio/gyro/mpu3050-i2c.c > index 5b5f58baaf7f..4d5e4b04745d 100644 > --- a/drivers/iio/gyro/mpu3050-i2c.c > +++ b/drivers/iio/gyro/mpu3050-i2c.c > @@ -78,7 +78,7 @@ static int mpu3050_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mpu3050_i2c_remove(struct i2c_client *client) > +static void mpu3050_i2c_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = dev_get_drvdata(&client->dev); >         struct mpu3050 *mpu3050 = iio_priv(indio_dev); > @@ -87,8 +87,6 @@ static int mpu3050_i2c_remove(struct i2c_client > *client) >                 i2c_mux_del_adapters(mpu3050->i2cmux); >   >         mpu3050_common_remove(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/health/afe4404.c > b/drivers/iio/health/afe4404.c > index 1bb7de60f8ca..a87337453824 100644 > --- a/drivers/iio/health/afe4404.c > +++ b/drivers/iio/health/afe4404.c > @@ -577,7 +577,7 @@ static int afe4404_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int afe4404_remove(struct i2c_client *client) > +static void afe4404_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct afe4404_data *afe = iio_priv(indio_dev); > @@ -593,8 +593,6 @@ static int afe4404_remove(struct i2c_client > *client) >         ret = regulator_disable(afe->regulator); >         if (ret) >                 dev_err(afe->dev, "Unable to disable regulator\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id afe4404_ids[] = { > diff --git a/drivers/iio/health/max30100.c > b/drivers/iio/health/max30100.c > index ad5717965223..2cca5e0519f8 100644 > --- a/drivers/iio/health/max30100.c > +++ b/drivers/iio/health/max30100.c > @@ -471,15 +471,13 @@ static int max30100_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30100_remove(struct i2c_client *client) > +static void max30100_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30100_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30100_set_powermode(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30100_id[] = { > diff --git a/drivers/iio/health/max30102.c > b/drivers/iio/health/max30102.c > index abbcef563807..437298a29f2d 100644 > --- a/drivers/iio/health/max30102.c > +++ b/drivers/iio/health/max30102.c > @@ -592,15 +592,13 @@ static int max30102_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int max30102_remove(struct i2c_client *client) > +static void max30102_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct max30102_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         max30102_set_power(data, false); > - > -       return 0; >  } >   >  static const struct i2c_device_id max30102_id[] = { > diff --git a/drivers/iio/humidity/hdc2010.c > b/drivers/iio/humidity/hdc2010.c > index 1381df46187c..d6858ccb056e 100644 > --- a/drivers/iio/humidity/hdc2010.c > +++ b/drivers/iio/humidity/hdc2010.c > @@ -308,7 +308,7 @@ static int hdc2010_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int hdc2010_remove(struct i2c_client *client) > +static void hdc2010_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct hdc2010_data *data = iio_priv(indio_dev); > @@ -318,8 +318,6 @@ static int hdc2010_remove(struct i2c_client > *client) >         /* Disable Automatic Measurement Mode */ >         if (hdc2010_update_drdy_config(data, HDC2010_AMM, 0)) >                 dev_warn(&client->dev, "Unable to restore default > AMM\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id hdc2010_id[] = { > diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > index 2aa647704a79..14255a918eb1 100644 > --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c > @@ -157,7 +157,7 @@ static int inv_mpu_probe(struct i2c_client > *client, >         return result; >  } >   > -static int inv_mpu_remove(struct i2c_client *client) > +static void inv_mpu_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct inv_mpu6050_state *st = iio_priv(indio_dev); > @@ -166,8 +166,6 @@ static int inv_mpu_remove(struct i2c_client > *client) >                 inv_mpu_acpi_delete_mux_client(client); >                 i2c_mux_del_adapters(st->muxc); >         } > - > -       return 0; >  } >   >  /* > diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c > index ec23b1ee472b..b10c0dcac0bb 100644 > --- a/drivers/iio/imu/kmx61.c > +++ b/drivers/iio/imu/kmx61.c > @@ -1418,7 +1418,7 @@ static int kmx61_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int kmx61_remove(struct i2c_client *client) > +static void kmx61_remove(struct i2c_client *client) >  { >         struct kmx61_data *data = i2c_get_clientdata(client); >   > @@ -1439,8 +1439,6 @@ static int kmx61_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, > true); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int kmx61_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9300.c > b/drivers/iio/light/apds9300.c > index 0f9d77598997..b70f2681bcb3 100644 > --- a/drivers/iio/light/apds9300.c > +++ b/drivers/iio/light/apds9300.c > @@ -452,7 +452,7 @@ static int apds9300_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9300_remove(struct i2c_client *client) > +static void apds9300_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9300_data *data = iio_priv(indio_dev); > @@ -462,8 +462,6 @@ static int apds9300_remove(struct i2c_client > *client) >         /* Ensure that power off and interrupts are disabled */ >         apds9300_set_intr_state(data, 0); >         apds9300_set_power_state(data, 0); > - > -       return 0; >  } >   >  static int apds9300_suspend(struct device *dev) > diff --git a/drivers/iio/light/apds9960.c > b/drivers/iio/light/apds9960.c > index 09b831f9f40b..b62c139baf41 100644 > --- a/drivers/iio/light/apds9960.c > +++ b/drivers/iio/light/apds9960.c > @@ -1067,7 +1067,7 @@ static int apds9960_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int apds9960_remove(struct i2c_client *client) > +static void apds9960_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct apds9960_data *data = iio_priv(indio_dev); > @@ -1076,8 +1076,6 @@ static int apds9960_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         apds9960_set_powermode(data, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/iio/light/bh1750.c b/drivers/iio/light/bh1750.c > index 48484b9401b9..034c47ef6e33 100644 > --- a/drivers/iio/light/bh1750.c > +++ b/drivers/iio/light/bh1750.c > @@ -263,7 +263,7 @@ static int bh1750_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int bh1750_remove(struct i2c_client *client) > +static void bh1750_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1750_data *data = iio_priv(indio_dev); > @@ -273,8 +273,6 @@ static int bh1750_remove(struct i2c_client > *client) >         mutex_lock(&data->lock); >         i2c_smbus_write_byte(client, BH1750_POWER_DOWN); >         mutex_unlock(&data->lock); > - > -       return 0; >  } >   >  static int __maybe_unused bh1750_suspend(struct device *dev) > diff --git a/drivers/iio/light/bh1780.c b/drivers/iio/light/bh1780.c > index fc7141390117..90bca392b262 100644 > --- a/drivers/iio/light/bh1780.c > +++ b/drivers/iio/light/bh1780.c > @@ -202,7 +202,7 @@ static int bh1780_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bh1780_remove(struct i2c_client *client) > +static void bh1780_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct bh1780_data *bh1780 = iio_priv(indio_dev); > @@ -216,8 +216,6 @@ static int bh1780_remove(struct i2c_client > *client) >         if (ret < 0) >                 dev_err(&client->dev, "failed to power off (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int bh1780_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/cm3232.c b/drivers/iio/light/cm3232.c > index 2c80a0535d2c..5214cd014cf8 100644 > --- a/drivers/iio/light/cm3232.c > +++ b/drivers/iio/light/cm3232.c > @@ -357,7 +357,7 @@ static int cm3232_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int cm3232_remove(struct i2c_client *client) > +static void cm3232_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -365,8 +365,6 @@ static int cm3232_remove(struct i2c_client > *client) >                 CM3232_CMD_ALS_DISABLE); >   >         iio_device_unregister(indio_dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm3232_id[] = { > diff --git a/drivers/iio/light/cm36651.c > b/drivers/iio/light/cm36651.c > index 89f5e48a6642..6615c98b601c 100644 > --- a/drivers/iio/light/cm36651.c > +++ b/drivers/iio/light/cm36651.c > @@ -700,7 +700,7 @@ static int cm36651_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cm36651_remove(struct i2c_client *client) > +static void cm36651_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct cm36651_data *cm36651 = iio_priv(indio_dev); > @@ -710,8 +710,6 @@ static int cm36651_remove(struct i2c_client > *client) >         free_irq(client->irq, indio_dev); >         i2c_unregister_device(cm36651->ps_client); >         i2c_unregister_device(cm36651->ara_client); > - > -       return 0; >  } >   >  static const struct i2c_device_id cm36651_id[] = { > diff --git a/drivers/iio/light/gp2ap002.c > b/drivers/iio/light/gp2ap002.c > index c6d1d88d3775..855dc63fb0a5 100644 > --- a/drivers/iio/light/gp2ap002.c > +++ b/drivers/iio/light/gp2ap002.c > @@ -619,7 +619,7 @@ static int gp2ap002_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int gp2ap002_remove(struct i2c_client *client) > +static void gp2ap002_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap002 *gp2ap002 = iio_priv(indio_dev); > @@ -631,8 +631,6 @@ static int gp2ap002_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >         regulator_disable(gp2ap002->vio); >         regulator_disable(gp2ap002->vdd); > - > -       return 0; >  } >   >  static int __maybe_unused gp2ap002_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/gp2ap020a00f.c > b/drivers/iio/light/gp2ap020a00f.c > index b820041159f7..826439299e8b 100644 > --- a/drivers/iio/light/gp2ap020a00f.c > +++ b/drivers/iio/light/gp2ap020a00f.c > @@ -1573,7 +1573,7 @@ static int gp2ap020a00f_probe(struct i2c_client > *client, >         return err; >  } >   > -static int gp2ap020a00f_remove(struct i2c_client *client) > +static void gp2ap020a00f_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct gp2ap020a00f_data *data = iio_priv(indio_dev); > @@ -1589,8 +1589,6 @@ static int gp2ap020a00f_remove(struct > i2c_client *client) >         free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         regulator_disable(data->vled_reg); > - > -       return 0; >  } >   >  static const struct i2c_device_id gp2ap020a00f_id[] = { > diff --git a/drivers/iio/light/isl29028.c > b/drivers/iio/light/isl29028.c > index 720fa83d44e0..6c344875c791 100644 > --- a/drivers/iio/light/isl29028.c > +++ b/drivers/iio/light/isl29028.c > @@ -636,7 +636,7 @@ static int isl29028_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isl29028_remove(struct i2c_client *client) > +static void isl29028_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct isl29028_chip *chip = iio_priv(indio_dev); > @@ -647,8 +647,6 @@ static int isl29028_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         isl29028_clear_configure_reg(chip); > - > -       return 0; >  } >   >  static int __maybe_unused isl29028_suspend(struct device *dev) > diff --git a/drivers/iio/light/isl29125.c > b/drivers/iio/light/isl29125.c > index eb68a52aab82..c199e63cce82 100644 > --- a/drivers/iio/light/isl29125.c > +++ b/drivers/iio/light/isl29125.c > @@ -300,15 +300,13 @@ static int isl29125_powerdown(struct > isl29125_data *data) >                 (data->conf1 & ~ISL29125_MODE_MASK) | > ISL29125_MODE_PD); >  } >   > -static int isl29125_remove(struct i2c_client *client) > +static void isl29125_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         isl29125_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int isl29125_suspend(struct device *dev) > diff --git a/drivers/iio/light/jsa1212.c > b/drivers/iio/light/jsa1212.c > index 5387c12231cf..57ce6d75966c 100644 > --- a/drivers/iio/light/jsa1212.c > +++ b/drivers/iio/light/jsa1212.c > @@ -373,7 +373,7 @@ static int jsa1212_power_off(struct jsa1212_data > *data) >         return ret; >  } >   > -static int jsa1212_remove(struct i2c_client *client) > +static void jsa1212_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct jsa1212_data *data = iio_priv(indio_dev); > @@ -381,8 +381,6 @@ static int jsa1212_remove(struct i2c_client > *client) >         iio_device_unregister(indio_dev); >   >         jsa1212_power_off(data); > - > -       return 0; >  } >   >  static int jsa1212_suspend(struct device *dev) > diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c > index 679a1e1086ae..74a1ccda8b9c 100644 > --- a/drivers/iio/light/ltr501.c > +++ b/drivers/iio/light/ltr501.c > @@ -1600,15 +1600,13 @@ static int ltr501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ltr501_remove(struct i2c_client *client) > +static void ltr501_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         ltr501_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int ltr501_suspend(struct device *dev) > diff --git a/drivers/iio/light/opt3001.c > b/drivers/iio/light/opt3001.c > index a326d47afc9b..a26d1c3f9543 100644 > --- a/drivers/iio/light/opt3001.c > +++ b/drivers/iio/light/opt3001.c > @@ -794,7 +794,7 @@ static int opt3001_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int opt3001_remove(struct i2c_client *client) > +static void opt3001_remove(struct i2c_client *client) >  { >         struct iio_dev *iio = i2c_get_clientdata(client); >         struct opt3001 *opt = iio_priv(iio); > @@ -808,7 +808,7 @@ static int opt3001_remove(struct i2c_client > *client) >         if (ret < 0) { >                 dev_err(opt->dev, "failed to read register %02x\n", >                                 OPT3001_CONFIGURATION); > -               return 0; > +               return; >         } >   >         reg = ret; > @@ -820,8 +820,6 @@ static int opt3001_remove(struct i2c_client > *client) >                 dev_err(opt->dev, "failed to write register %02x\n", >                                 OPT3001_CONFIGURATION); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id opt3001_id[] = { > diff --git a/drivers/iio/light/pa12203001.c > b/drivers/iio/light/pa12203001.c > index 772874e707ae..3cb2de51f4aa 100644 > --- a/drivers/iio/light/pa12203001.c > +++ b/drivers/iio/light/pa12203001.c > @@ -394,7 +394,7 @@ static int pa12203001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pa12203001_remove(struct i2c_client *client) > +static void pa12203001_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -408,8 +408,6 @@ static int pa12203001_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/rpr0521.c > b/drivers/iio/light/rpr0521.c > index dabdd05f0e2c..d1c16dd76058 100644 > --- a/drivers/iio/light/rpr0521.c > +++ b/drivers/iio/light/rpr0521.c > @@ -1041,7 +1041,7 @@ static int rpr0521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rpr0521_remove(struct i2c_client *client) > +static void rpr0521_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -1051,8 +1051,6 @@ static int rpr0521_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         rpr0521_poweroff(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int rpr0521_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/light/stk3310.c > b/drivers/iio/light/stk3310.c > index f7cc7a6c0c8d..7b8e0da6aabc 100644 > --- a/drivers/iio/light/stk3310.c > +++ b/drivers/iio/light/stk3310.c > @@ -649,14 +649,12 @@ static int stk3310_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stk3310_remove(struct i2c_client *client) > +static void stk3310_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         stk3310_set_state(iio_priv(indio_dev), > STK3310_STATE_STANDBY); > - > -       return 0; >  } >   >  static int stk3310_suspend(struct device *dev) > diff --git a/drivers/iio/light/tcs3472.c > b/drivers/iio/light/tcs3472.c > index 823435f59bb6..db17fec634be 100644 > --- a/drivers/iio/light/tcs3472.c > +++ b/drivers/iio/light/tcs3472.c > @@ -559,7 +559,7 @@ static int tcs3472_powerdown(struct tcs3472_data > *data) >         return ret; >  } >   > -static int tcs3472_remove(struct i2c_client *client) > +static void tcs3472_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -568,8 +568,6 @@ static int tcs3472_remove(struct i2c_client > *client) >                 free_irq(client->irq, indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         tcs3472_powerdown(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int tcs3472_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2563.c > b/drivers/iio/light/tsl2563.c > index 0a278eea36ca..1fa189fe6eb6 100644 > --- a/drivers/iio/light/tsl2563.c > +++ b/drivers/iio/light/tsl2563.c > @@ -796,7 +796,7 @@ static int tsl2563_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2563_remove(struct i2c_client *client) > +static void tsl2563_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2563_chip *chip = iio_priv(indio_dev); > @@ -810,8 +810,6 @@ static int tsl2563_remove(struct i2c_client > *client) >                                   chip->intr); >         flush_scheduled_work(); >         tsl2563_set_power(chip, 0); > - > -       return 0; >  } >   >  static int tsl2563_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl2583.c > b/drivers/iio/light/tsl2583.c > index efb3c13cfc87..59e7ef624283 100644 > --- a/drivers/iio/light/tsl2583.c > +++ b/drivers/iio/light/tsl2583.c > @@ -873,7 +873,7 @@ static int tsl2583_probe(struct i2c_client > *clientp, >         return 0; >  } >   > -static int tsl2583_remove(struct i2c_client *client) > +static void tsl2583_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct tsl2583_chip *chip = iio_priv(indio_dev); > @@ -884,8 +884,6 @@ static int tsl2583_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         tsl2583_set_power_state(chip, TSL2583_CNTL_PWR_OFF); > - > -       return 0; >  } >   >  static int __maybe_unused tsl2583_suspend(struct device *dev) > diff --git a/drivers/iio/light/tsl4531.c > b/drivers/iio/light/tsl4531.c > index 6ae1b27e50b6..090038fed889 100644 > --- a/drivers/iio/light/tsl4531.c > +++ b/drivers/iio/light/tsl4531.c > @@ -207,12 +207,10 @@ static int tsl4531_powerdown(struct i2c_client > *client) >                 TSL4531_MODE_POWERDOWN); >  } >   > -static int tsl4531_remove(struct i2c_client *client) > +static void tsl4531_remove(struct i2c_client *client) >  { >         iio_device_unregister(i2c_get_clientdata(client)); >         tsl4531_powerdown(client); > - > -       return 0; >  } >   >  static int tsl4531_suspend(struct device *dev) > diff --git a/drivers/iio/light/us5182d.c > b/drivers/iio/light/us5182d.c > index cbd9978540fa..ca6a03933e2e 100644 > --- a/drivers/iio/light/us5182d.c > +++ b/drivers/iio/light/us5182d.c > @@ -904,7 +904,7 @@ static int us5182d_probe(struct i2c_client > *client, >   >  } >   > -static int us5182d_remove(struct i2c_client *client) > +static void us5182d_remove(struct i2c_client *client) >  { >         struct us5182d_data *data = > iio_priv(i2c_get_clientdata(client)); >         int ret; > @@ -918,8 +918,6 @@ static int us5182d_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to shut down (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  #if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM) > diff --git a/drivers/iio/light/vcnl4000.c > b/drivers/iio/light/vcnl4000.c > index 947a41b86173..9c492f9024e2 100644 > --- a/drivers/iio/light/vcnl4000.c > +++ b/drivers/iio/light/vcnl4000.c > @@ -1111,7 +1111,7 @@ static const struct of_device_id > vcnl_4000_of_match[] = { >  }; >  MODULE_DEVICE_TABLE(of, vcnl_4000_of_match); >   > -static int vcnl4000_remove(struct i2c_client *client) > +static void vcnl4000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct vcnl4000_data *data = iio_priv(indio_dev); > @@ -1126,8 +1126,6 @@ static int vcnl4000_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to power down > (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4000_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/vcnl4035.c > b/drivers/iio/light/vcnl4035.c > index 2aaec6bef64c..8282f19c9de7 100644 > --- a/drivers/iio/light/vcnl4035.c > +++ b/drivers/iio/light/vcnl4035.c > @@ -601,7 +601,7 @@ static int vcnl4035_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vcnl4035_remove(struct i2c_client *client) > +static void vcnl4035_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         int ret; > @@ -616,8 +616,6 @@ static int vcnl4035_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, "Failed to put device into > standby (%pe)\n", >                          ERR_PTR(ret)); > - > -       return 0; >  } >   >  static int __maybe_unused vcnl4035_runtime_suspend(struct device > *dev) > diff --git a/drivers/iio/light/veml6070.c > b/drivers/iio/light/veml6070.c > index 1e55e09a8d16..cfa4e9e7c803 100644 > --- a/drivers/iio/light/veml6070.c > +++ b/drivers/iio/light/veml6070.c > @@ -180,15 +180,13 @@ static int veml6070_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int veml6070_remove(struct i2c_client *client) > +static void veml6070_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct veml6070_data *data = iio_priv(indio_dev); >   >         iio_device_unregister(indio_dev); >         i2c_unregister_device(data->client2); > - > -       return 0; >  } >   >  static const struct i2c_device_id veml6070_id[] = { > diff --git a/drivers/iio/magnetometer/ak8974.c > b/drivers/iio/magnetometer/ak8974.c > index e54feacfb980..1064859fbf83 100644 > --- a/drivers/iio/magnetometer/ak8974.c > +++ b/drivers/iio/magnetometer/ak8974.c > @@ -969,7 +969,7 @@ static int ak8974_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int ak8974_remove(struct i2c_client *i2c) > +static void ak8974_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct ak8974 *ak8974 = iio_priv(indio_dev); > @@ -981,8 +981,6 @@ static int ak8974_remove(struct i2c_client *i2c) >         pm_runtime_disable(&i2c->dev); >         ak8974_set_power(ak8974, AK8974_PWR_OFF); >         regulator_bulk_disable(ARRAY_SIZE(ak8974->regs), ak8974- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused ak8974_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/ak8975.c > b/drivers/iio/magnetometer/ak8975.c > index 2432e697150c..caf03a2a98a5 100644 > --- a/drivers/iio/magnetometer/ak8975.c > +++ b/drivers/iio/magnetometer/ak8975.c > @@ -1018,7 +1018,7 @@ static int ak8975_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ak8975_remove(struct i2c_client *client) > +static void ak8975_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct ak8975_data *data = iio_priv(indio_dev); > @@ -1030,8 +1030,6 @@ static int ak8975_remove(struct i2c_client > *client) >         iio_triggered_buffer_cleanup(indio_dev); >         ak8975_set_mode(data, POWER_DOWN); >         ak8975_power_off(data); > - > -       return 0; >  } >   >  static int ak8975_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/bmc150_magn_i2c.c > b/drivers/iio/magnetometer/bmc150_magn_i2c.c > index 65c004411d0f..570deaa87836 100644 > --- a/drivers/iio/magnetometer/bmc150_magn_i2c.c > +++ b/drivers/iio/magnetometer/bmc150_magn_i2c.c > @@ -34,11 +34,9 @@ static int bmc150_magn_i2c_probe(struct i2c_client > *client, >         return bmc150_magn_probe(&client->dev, regmap, client->irq, > name); >  } >   > -static int bmc150_magn_i2c_remove(struct i2c_client *client) > +static void bmc150_magn_i2c_remove(struct i2c_client *client) >  { >         bmc150_magn_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct acpi_device_id bmc150_magn_acpi_match[] = { > diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c > b/drivers/iio/magnetometer/hmc5843_i2c.c > index 8d2ff8fc204d..fe5e8415b2f2 100644 > --- a/drivers/iio/magnetometer/hmc5843_i2c.c > +++ b/drivers/iio/magnetometer/hmc5843_i2c.c > @@ -65,11 +65,9 @@ static int hmc5843_i2c_probe(struct i2c_client > *cli, >                         id->driver_data, id->name); >  } >   > -static int hmc5843_i2c_remove(struct i2c_client *client) > +static void hmc5843_i2c_remove(struct i2c_client *client) >  { >         hmc5843_common_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id hmc5843_id[] = { > diff --git a/drivers/iio/magnetometer/mag3110.c > b/drivers/iio/magnetometer/mag3110.c > index 226439d0bfb5..b870ad803862 100644 > --- a/drivers/iio/magnetometer/mag3110.c > +++ b/drivers/iio/magnetometer/mag3110.c > @@ -559,7 +559,7 @@ static int mag3110_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mag3110_remove(struct i2c_client *client) > +static void mag3110_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mag3110_data *data = iio_priv(indio_dev); > @@ -569,8 +569,6 @@ static int mag3110_remove(struct i2c_client > *client) >         mag3110_standby(iio_priv(indio_dev)); >         regulator_disable(data->vddio_reg); >         regulator_disable(data->vdd_reg); > - > -       return 0; >  } >   >  static int mag3110_suspend(struct device *dev) > diff --git a/drivers/iio/magnetometer/yamaha-yas530.c > b/drivers/iio/magnetometer/yamaha-yas530.c > index b2bc637150bf..8c16178d4820 100644 > --- a/drivers/iio/magnetometer/yamaha-yas530.c > +++ b/drivers/iio/magnetometer/yamaha-yas530.c > @@ -943,7 +943,7 @@ static int yas5xx_probe(struct i2c_client *i2c, >         return ret; >  } >   > -static int yas5xx_remove(struct i2c_client *i2c) > +static void yas5xx_remove(struct i2c_client *i2c) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(i2c); >         struct yas5xx *yas5xx = iio_priv(indio_dev); > @@ -961,8 +961,6 @@ static int yas5xx_remove(struct i2c_client *i2c) >         pm_runtime_disable(dev); >         gpiod_set_value_cansleep(yas5xx->reset, 1); >         regulator_bulk_disable(ARRAY_SIZE(yas5xx->regs), yas5xx- > >regs); > - > -       return 0; >  } >   >  static int __maybe_unused yas5xx_runtime_suspend(struct device *dev) > diff --git a/drivers/iio/potentiostat/lmp91000.c > b/drivers/iio/potentiostat/lmp91000.c > index fe514f0b5506..5ec7060d31d9 100644 > --- a/drivers/iio/potentiostat/lmp91000.c > +++ b/drivers/iio/potentiostat/lmp91000.c > @@ -384,7 +384,7 @@ static int lmp91000_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lmp91000_remove(struct i2c_client *client) > +static void lmp91000_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct lmp91000_data *data = iio_priv(indio_dev); > @@ -396,8 +396,6 @@ static int lmp91000_remove(struct i2c_client > *client) >   >         iio_triggered_buffer_cleanup(indio_dev); >         iio_trigger_unregister(data->trig); > - > -       return 0; >  } >   >  static const struct of_device_id lmp91000_of_match[] = { > diff --git a/drivers/iio/pressure/mpl3115.c > b/drivers/iio/pressure/mpl3115.c > index d4f89e4babed..2f22aba61e4d 100644 > --- a/drivers/iio/pressure/mpl3115.c > +++ b/drivers/iio/pressure/mpl3115.c > @@ -290,15 +290,13 @@ static int mpl3115_standby(struct mpl3115_data > *data) >                 data->ctrl_reg1 & ~MPL3115_CTRL_ACTIVE); >  } >   > -static int mpl3115_remove(struct i2c_client *client) > +static void mpl3115_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   >         iio_device_unregister(indio_dev); >         iio_triggered_buffer_cleanup(indio_dev); >         mpl3115_standby(iio_priv(indio_dev)); > - > -       return 0; >  } >   >  static int mpl3115_suspend(struct device *dev) > diff --git a/drivers/iio/pressure/ms5611_i2c.c > b/drivers/iio/pressure/ms5611_i2c.c > index 3b1de71e0d15..b681a4183909 100644 > --- a/drivers/iio/pressure/ms5611_i2c.c > +++ b/drivers/iio/pressure/ms5611_i2c.c > @@ -105,11 +105,9 @@ static int ms5611_i2c_probe(struct i2c_client > *client, >         return ms5611_probe(indio_dev, &client->dev, id->name, id- > >driver_data); >  } >   > -static int ms5611_i2c_remove(struct i2c_client *client) > +static void ms5611_i2c_remove(struct i2c_client *client) >  { >         ms5611_remove(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  static const struct of_device_id ms5611_i2c_matches[] = { > diff --git a/drivers/iio/pressure/zpa2326_i2c.c > b/drivers/iio/pressure/zpa2326_i2c.c > index 0db0860d386b..f26dd8cbb387 100644 > --- a/drivers/iio/pressure/zpa2326_i2c.c > +++ b/drivers/iio/pressure/zpa2326_i2c.c > @@ -53,11 +53,9 @@ static int zpa2326_probe_i2c(struct > i2c_client          *client, >                              zpa2326_i2c_hwid(client), regmap); >  } >   > -static int zpa2326_remove_i2c(struct i2c_client *client) > +static void zpa2326_remove_i2c(struct i2c_client *client) >  { >         zpa2326_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id zpa2326_i2c_ids[] = { > diff --git a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > index 648ae576d6fa..791a33d5286c 100644 > --- a/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > +++ b/drivers/iio/proximity/pulsedlight-lidar-lite-v2.c > @@ -311,7 +311,7 @@ static int lidar_probe(struct i2c_client *client, >         return ret; >  } >   > -static int lidar_remove(struct i2c_client *client) > +static void lidar_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >   > @@ -320,8 +320,6 @@ static int lidar_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id lidar_id[] = { > diff --git a/drivers/iio/proximity/sx9500.c > b/drivers/iio/proximity/sx9500.c > index 42589d6200ad..d4670864ddc7 100644 > --- a/drivers/iio/proximity/sx9500.c > +++ b/drivers/iio/proximity/sx9500.c > @@ -979,7 +979,7 @@ static int sx9500_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int sx9500_remove(struct i2c_client *client) > +static void sx9500_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct sx9500_data *data = iio_priv(indio_dev); > @@ -989,8 +989,6 @@ static int sx9500_remove(struct i2c_client > *client) >         if (client->irq > 0) >                 iio_trigger_unregister(data->trig); >         kfree(data->buffer); > - > -       return 0; >  } >   >  static int sx9500_suspend(struct device *dev) > diff --git a/drivers/iio/temperature/mlx90614.c > b/drivers/iio/temperature/mlx90614.c > index c253a5315988..0808bb865928 100644 > --- a/drivers/iio/temperature/mlx90614.c > +++ b/drivers/iio/temperature/mlx90614.c > @@ -571,7 +571,7 @@ static int mlx90614_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90614_remove(struct i2c_client *client) > +static void mlx90614_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90614_data *data = iio_priv(indio_dev); > @@ -584,8 +584,6 @@ static int mlx90614_remove(struct i2c_client > *client) >                         mlx90614_sleep(data); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90614_id[] = { > diff --git a/drivers/iio/temperature/mlx90632.c > b/drivers/iio/temperature/mlx90632.c > index 7ee7ff8047a4..e8ef47147e2b 100644 > --- a/drivers/iio/temperature/mlx90632.c > +++ b/drivers/iio/temperature/mlx90632.c > @@ -924,7 +924,7 @@ static int mlx90632_probe(struct i2c_client > *client, >         return iio_device_register(indio_dev); >  } >   > -static int mlx90632_remove(struct i2c_client *client) > +static void mlx90632_remove(struct i2c_client *client) >  { >         struct iio_dev *indio_dev = i2c_get_clientdata(client); >         struct mlx90632_data *data = iio_priv(indio_dev); > @@ -936,8 +936,6 @@ static int mlx90632_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         mlx90632_sleep(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id mlx90632_id[] = { > diff --git a/drivers/input/joystick/as5011.c > b/drivers/input/joystick/as5011.c > index 34bcd99a46f5..2beda29021a3 100644 > --- a/drivers/input/joystick/as5011.c > +++ b/drivers/input/joystick/as5011.c > @@ -327,7 +327,7 @@ static int as5011_probe(struct i2c_client > *client, >         return error; >  } >   > -static int as5011_remove(struct i2c_client *client) > +static void as5011_remove(struct i2c_client *client) >  { >         struct as5011_device *as5011 = i2c_get_clientdata(client); >   > @@ -337,8 +337,6 @@ static int as5011_remove(struct i2c_client > *client) >   >         input_unregister_device(as5011->input_dev); >         kfree(as5011); > - > -       return 0; >  } >   >  static const struct i2c_device_id as5011_id[] = { > diff --git a/drivers/input/keyboard/adp5588-keys.c > b/drivers/input/keyboard/adp5588-keys.c > index 1592da4de336..b5666d650994 100644 > --- a/drivers/input/keyboard/adp5588-keys.c > +++ b/drivers/input/keyboard/adp5588-keys.c > @@ -598,7 +598,7 @@ static int adp5588_probe(struct i2c_client > *client, >         return error; >  } >   > -static int adp5588_remove(struct i2c_client *client) > +static void adp5588_remove(struct i2c_client *client) >  { >         struct adp5588_kpad *kpad = i2c_get_clientdata(client); >   > @@ -608,8 +608,6 @@ static int adp5588_remove(struct i2c_client > *client) >         input_unregister_device(kpad->input); >         adp5588_gpio_remove(kpad); >         kfree(kpad); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/keyboard/lm8323.c > b/drivers/input/keyboard/lm8323.c > index 6c38d034ec6e..407dd2ad6302 100644 > --- a/drivers/input/keyboard/lm8323.c > +++ b/drivers/input/keyboard/lm8323.c > @@ -752,7 +752,7 @@ static int lm8323_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8323_remove(struct i2c_client *client) > +static void lm8323_remove(struct i2c_client *client) >  { >         struct lm8323_chip *lm = i2c_get_clientdata(client); >         int i; > @@ -769,8 +769,6 @@ static int lm8323_remove(struct i2c_client > *client) >                         led_classdev_unregister(&lm->pwm[i].cdev); >   >         kfree(lm); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/lm8333.c > b/drivers/input/keyboard/lm8333.c > index 7c5f8c6bb957..9dac22c14125 100644 > --- a/drivers/input/keyboard/lm8333.c > +++ b/drivers/input/keyboard/lm8333.c > @@ -200,15 +200,13 @@ static int lm8333_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm8333_remove(struct i2c_client *client) > +static void lm8333_remove(struct i2c_client *client) >  { >         struct lm8333 *lm8333 = i2c_get_clientdata(client); >   >         free_irq(client->irq, lm8333); >         input_unregister_device(lm8333->input); >         kfree(lm8333); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm8333_id[] = { > diff --git a/drivers/input/keyboard/mcs_touchkey.c > b/drivers/input/keyboard/mcs_touchkey.c > index 8cb0062b98e4..ac1637a3389e 100644 > --- a/drivers/input/keyboard/mcs_touchkey.c > +++ b/drivers/input/keyboard/mcs_touchkey.c > @@ -194,7 +194,7 @@ static int mcs_touchkey_probe(struct i2c_client > *client, >         return error; >  } >   > -static int mcs_touchkey_remove(struct i2c_client *client) > +static void mcs_touchkey_remove(struct i2c_client *client) >  { >         struct mcs_touchkey_data *data = i2c_get_clientdata(client); >   > @@ -203,8 +203,6 @@ static int mcs_touchkey_remove(struct i2c_client > *client) >                 data->poweron(false); >         input_unregister_device(data->input_dev); >         kfree(data); > - > -       return 0; >  } >   >  static void mcs_touchkey_shutdown(struct i2c_client *client) > diff --git a/drivers/input/keyboard/qt1070.c > b/drivers/input/keyboard/qt1070.c > index 7174e1df1ee3..9fcce18b1d65 100644 > --- a/drivers/input/keyboard/qt1070.c > +++ b/drivers/input/keyboard/qt1070.c > @@ -216,7 +216,7 @@ static int qt1070_probe(struct i2c_client > *client, >         return err; >  } >   > -static int qt1070_remove(struct i2c_client *client) > +static void qt1070_remove(struct i2c_client *client) >  { >         struct qt1070_data *data = i2c_get_clientdata(client); >   > @@ -225,8 +225,6 @@ static int qt1070_remove(struct i2c_client > *client) >   >         input_unregister_device(data->input); >         kfree(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/keyboard/qt2160.c > b/drivers/input/keyboard/qt2160.c > index 32d4a076eaa3..382b1519218c 100644 > --- a/drivers/input/keyboard/qt2160.c > +++ b/drivers/input/keyboard/qt2160.c > @@ -432,7 +432,7 @@ static int qt2160_probe(struct i2c_client > *client, >         return error; >  } >   > -static int qt2160_remove(struct i2c_client *client) > +static void qt2160_remove(struct i2c_client *client) >  { >         struct qt2160_data *qt2160 = i2c_get_clientdata(client); >   > @@ -446,8 +446,6 @@ static int qt2160_remove(struct i2c_client > *client) >   >         input_unregister_device(qt2160->input); >         kfree(qt2160); > - > -       return 0; >  } >   >  static const struct i2c_device_id qt2160_idtable[] = { > diff --git a/drivers/input/keyboard/tca6416-keypad.c > b/drivers/input/keyboard/tca6416-keypad.c > index 2a9755910065..afcdfbb002ff 100644 > --- a/drivers/input/keyboard/tca6416-keypad.c > +++ b/drivers/input/keyboard/tca6416-keypad.c > @@ -307,7 +307,7 @@ static int tca6416_keypad_probe(struct i2c_client > *client, >         return error; >  } >   > -static int tca6416_keypad_remove(struct i2c_client *client) > +static void tca6416_keypad_remove(struct i2c_client *client) >  { >         struct tca6416_keypad_chip *chip = > i2c_get_clientdata(client); >   > @@ -318,8 +318,6 @@ static int tca6416_keypad_remove(struct > i2c_client *client) >   >         input_unregister_device(chip->input); >         kfree(chip); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/input/misc/adxl34x-i2c.c > b/drivers/input/misc/adxl34x-i2c.c > index a3b5f88d2bd1..5be636aaa94f 100644 > --- a/drivers/input/misc/adxl34x-i2c.c > +++ b/drivers/input/misc/adxl34x-i2c.c > @@ -99,13 +99,11 @@ static int adxl34x_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adxl34x_i2c_remove(struct i2c_client *client) > +static void adxl34x_i2c_remove(struct i2c_client *client) >  { >         struct adxl34x *ac = i2c_get_clientdata(client); >   >         adxl34x_remove(ac); > - > -       return 0; >  } >   >  static int __maybe_unused adxl34x_i2c_suspend(struct device *dev) > diff --git a/drivers/input/misc/bma150.c > b/drivers/input/misc/bma150.c > index a9d984da95f3..84fe394da7a6 100644 > --- a/drivers/input/misc/bma150.c > +++ b/drivers/input/misc/bma150.c > @@ -513,11 +513,9 @@ static int bma150_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bma150_remove(struct i2c_client *client) > +static void bma150_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused bma150_suspend(struct device *dev) > diff --git a/drivers/input/misc/cma3000_d0x_i2c.c > b/drivers/input/misc/cma3000_d0x_i2c.c > index 03fb49127c3a..3b23210c46b7 100644 > --- a/drivers/input/misc/cma3000_d0x_i2c.c > +++ b/drivers/input/misc/cma3000_d0x_i2c.c > @@ -58,13 +58,11 @@ static int cma3000_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cma3000_i2c_remove(struct i2c_client *client) > +static void cma3000_i2c_remove(struct i2c_client *client) >  { >         struct cma3000_accl_data *data = i2c_get_clientdata(client); >   >         cma3000_exit(data); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/misc/pcf8574_keypad.c > b/drivers/input/misc/pcf8574_keypad.c > index abc423165522..cfd6640e4f82 100644 > --- a/drivers/input/misc/pcf8574_keypad.c > +++ b/drivers/input/misc/pcf8574_keypad.c > @@ -157,7 +157,7 @@ static int pcf8574_kp_probe(struct i2c_client > *client, const struct i2c_device_i >         return ret; >  } >   > -static int pcf8574_kp_remove(struct i2c_client *client) > +static void pcf8574_kp_remove(struct i2c_client *client) >  { >         struct kp_data *lp = i2c_get_clientdata(client); >   > @@ -165,8 +165,6 @@ static int pcf8574_kp_remove(struct i2c_client > *client) >   >         input_unregister_device(lp->idev); >         kfree(lp); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/input/mouse/synaptics_i2c.c > b/drivers/input/mouse/synaptics_i2c.c > index fa304648d611..987ee67a1045 100644 > --- a/drivers/input/mouse/synaptics_i2c.c > +++ b/drivers/input/mouse/synaptics_i2c.c > @@ -587,7 +587,7 @@ static int synaptics_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int synaptics_i2c_remove(struct i2c_client *client) > +static void synaptics_i2c_remove(struct i2c_client *client) >  { >         struct synaptics_i2c *touch = i2c_get_clientdata(client); >   > @@ -596,8 +596,6 @@ static int synaptics_i2c_remove(struct i2c_client > *client) >   >         input_unregister_device(touch->input); >         kfree(touch); > - > -       return 0; >  } >   >  static int __maybe_unused synaptics_i2c_suspend(struct device *dev) > diff --git a/drivers/input/rmi4/rmi_smbus.c > b/drivers/input/rmi4/rmi_smbus.c > index 2407ea43de59..c130468541b7 100644 > --- a/drivers/input/rmi4/rmi_smbus.c > +++ b/drivers/input/rmi4/rmi_smbus.c > @@ -338,13 +338,11 @@ static int rmi_smb_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rmi_smb_remove(struct i2c_client *client) > +static void rmi_smb_remove(struct i2c_client *client) >  { >         struct rmi_smb_xport *rmi_smb = i2c_get_clientdata(client); >   >         rmi_unregister_transport_device(&rmi_smb->xport); > - > -       return 0; >  } >   >  static int __maybe_unused rmi_smb_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c > b/drivers/input/touchscreen/atmel_mxt_ts.c > index eb66cd2689b7..4eedea08b0b5 100644 > --- a/drivers/input/touchscreen/atmel_mxt_ts.c > +++ b/drivers/input/touchscreen/atmel_mxt_ts.c > @@ -3284,7 +3284,7 @@ static int mxt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return error; >  } >   > -static int mxt_remove(struct i2c_client *client) > +static void mxt_remove(struct i2c_client *client) >  { >         struct mxt_data *data = i2c_get_clientdata(client); >   > @@ -3294,8 +3294,6 @@ static int mxt_remove(struct i2c_client > *client) >         mxt_free_object_table(data); >         regulator_bulk_disable(ARRAY_SIZE(data->regulators), >                                data->regulators); > - > -       return 0; >  } >   >  static int __maybe_unused mxt_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/bu21013_ts.c > b/drivers/input/touchscreen/bu21013_ts.c > index 2f1f0d7607f8..34f422e246ef 100644 > --- a/drivers/input/touchscreen/bu21013_ts.c > +++ b/drivers/input/touchscreen/bu21013_ts.c > @@ -552,15 +552,13 @@ static int bu21013_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bu21013_remove(struct i2c_client *client) > +static void bu21013_remove(struct i2c_client *client) >  { >         struct bu21013_ts *ts = i2c_get_clientdata(client); >   >         /* Make sure IRQ will exit quickly even if there is contact > */ >         ts->touch_stopped = true; >         /* The resources will be freed by devm */ > - > -       return 0; >  } >   >  static int __maybe_unused bu21013_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/cyttsp4_i2c.c > b/drivers/input/touchscreen/cyttsp4_i2c.c > index c65ccb2f4716..28ae7c15397a 100644 > --- a/drivers/input/touchscreen/cyttsp4_i2c.c > +++ b/drivers/input/touchscreen/cyttsp4_i2c.c > @@ -43,13 +43,11 @@ static int cyttsp4_i2c_probe(struct i2c_client > *client, >         return PTR_ERR_OR_ZERO(ts); >  } >   > -static int cyttsp4_i2c_remove(struct i2c_client *client) > +static void cyttsp4_i2c_remove(struct i2c_client *client) >  { >         struct cyttsp4 *ts = i2c_get_clientdata(client); >   >         cyttsp4_remove(ts); > - > -       return 0; >  } >   >  static const struct i2c_device_id cyttsp4_i2c_id[] = { > diff --git a/drivers/input/touchscreen/edt-ft5x06.c > b/drivers/input/touchscreen/edt-ft5x06.c > index bb2e1cbffba7..0c325132a955 100644 > --- a/drivers/input/touchscreen/edt-ft5x06.c > +++ b/drivers/input/touchscreen/edt-ft5x06.c > @@ -1266,13 +1266,11 @@ static int edt_ft5x06_ts_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int edt_ft5x06_ts_remove(struct i2c_client *client) > +static void edt_ft5x06_ts_remove(struct i2c_client *client) >  { >         struct edt_ft5x06_ts_data *tsdata = > i2c_get_clientdata(client); >   >         edt_ft5x06_ts_teardown_debugfs(tsdata); > - > -       return 0; >  } >   >  static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/goodix.c > b/drivers/input/touchscreen/goodix.c > index 3ad9870db108..1617dd931876 100644 > --- a/drivers/input/touchscreen/goodix.c > +++ b/drivers/input/touchscreen/goodix.c > @@ -1383,14 +1383,12 @@ static int goodix_ts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int goodix_ts_remove(struct i2c_client *client) > +static void goodix_ts_remove(struct i2c_client *client) >  { >         struct goodix_ts_data *ts = i2c_get_clientdata(client); >   >         if (ts->load_cfg_from_disk) >                 wait_for_completion(&ts->firmware_loading_complete); > - > -       return 0; >  } >   >  static int __maybe_unused goodix_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/migor_ts.c > b/drivers/input/touchscreen/migor_ts.c > index 42d3fd7e04d7..79cd660d879e 100644 > --- a/drivers/input/touchscreen/migor_ts.c > +++ b/drivers/input/touchscreen/migor_ts.c > @@ -176,7 +176,7 @@ static int migor_ts_probe(struct i2c_client > *client, >         return error; >  } >   > -static int migor_ts_remove(struct i2c_client *client) > +static void migor_ts_remove(struct i2c_client *client) >  { >         struct migor_ts_priv *priv = i2c_get_clientdata(client); >   > @@ -185,8 +185,6 @@ static int migor_ts_remove(struct i2c_client > *client) >         kfree(priv); >   >         dev_set_drvdata(&client->dev, NULL); > - > -       return 0; >  } >   >  static int __maybe_unused migor_ts_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/s6sy761.c > b/drivers/input/touchscreen/s6sy761.c > index 85a1f465c097..1a7d00289b4c 100644 > --- a/drivers/input/touchscreen/s6sy761.c > +++ b/drivers/input/touchscreen/s6sy761.c > @@ -475,11 +475,9 @@ static int s6sy761_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int s6sy761_remove(struct i2c_client *client) > +static void s6sy761_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused s6sy761_runtime_suspend(struct device > *dev) > diff --git a/drivers/input/touchscreen/stmfts.c > b/drivers/input/touchscreen/stmfts.c > index c175d44c52f3..d5bd170808fb 100644 > --- a/drivers/input/touchscreen/stmfts.c > +++ b/drivers/input/touchscreen/stmfts.c > @@ -738,11 +738,9 @@ static int stmfts_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stmfts_remove(struct i2c_client *client) > +static void stmfts_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused stmfts_runtime_suspend(struct device *dev) > diff --git a/drivers/input/touchscreen/tsc2004.c > b/drivers/input/touchscreen/tsc2004.c > index 9fdd870c4c0b..a9565353ee98 100644 > --- a/drivers/input/touchscreen/tsc2004.c > +++ b/drivers/input/touchscreen/tsc2004.c > @@ -43,11 +43,9 @@ static int tsc2004_probe(struct i2c_client *i2c, >                              tsc2004_cmd); >  } >   > -static int tsc2004_remove(struct i2c_client *i2c) > +static void tsc2004_remove(struct i2c_client *i2c) >  { >         tsc200x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tsc2004_idtable[] = { > diff --git a/drivers/leds/flash/leds-as3645a.c > b/drivers/leds/flash/leds-as3645a.c > index aa3f82be0a9c..bb2249771acb 100644 > --- a/drivers/leds/flash/leds-as3645a.c > +++ b/drivers/leds/flash/leds-as3645a.c > @@ -724,7 +724,7 @@ static int as3645a_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int as3645a_remove(struct i2c_client *client) > +static void as3645a_remove(struct i2c_client *client) >  { >         struct as3645a *flash = i2c_get_clientdata(client); >   > @@ -740,8 +740,6 @@ static int as3645a_remove(struct i2c_client > *client) >   >         fwnode_handle_put(flash->flash_node); >         fwnode_handle_put(flash->indicator_node); > - > -       return 0; >  } >   >  static const struct i2c_device_id as3645a_id_table[] = { > diff --git a/drivers/leds/flash/leds-lm3601x.c > b/drivers/leds/flash/leds-lm3601x.c > index 37e1d6e68687..78730e066a73 100644 > --- a/drivers/leds/flash/leds-lm3601x.c > +++ b/drivers/leds/flash/leds-lm3601x.c > @@ -440,7 +440,7 @@ static int lm3601x_probe(struct i2c_client > *client) >         return lm3601x_register_leds(led, fwnode); >  } >   > -static int lm3601x_remove(struct i2c_client *client) > +static void lm3601x_remove(struct i2c_client *client) >  { >         struct lm3601x_led *led = i2c_get_clientdata(client); >         int ret; > @@ -450,8 +450,6 @@ static int lm3601x_remove(struct i2c_client > *client) >         if (ret) >                 dev_warn(&client->dev, >                          "Failed to put into standby (%pe)\n", > ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3601x_id[] = { > diff --git a/drivers/leds/flash/leds-rt4505.c > b/drivers/leds/flash/leds-rt4505.c > index ee129ab7255d..e404fe8b0314 100644 > --- a/drivers/leds/flash/leds-rt4505.c > +++ b/drivers/leds/flash/leds-rt4505.c > @@ -393,12 +393,11 @@ static int rt4505_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int rt4505_remove(struct i2c_client *client) > +static void rt4505_remove(struct i2c_client *client) >  { >         struct rt4505_priv *priv = i2c_get_clientdata(client); >   >         v4l2_flash_release(priv->v4l2_flash); > -       return 0; >  } >   >  static void rt4505_shutdown(struct i2c_client *client) > diff --git a/drivers/leds/leds-an30259a.c b/drivers/leds/leds- > an30259a.c > index a0df1fb28774..e072ee5409f7 100644 > --- a/drivers/leds/leds-an30259a.c > +++ b/drivers/leds/leds-an30259a.c > @@ -334,13 +334,11 @@ static int an30259a_probe(struct i2c_client > *client) >         return err; >  } >   > -static int an30259a_remove(struct i2c_client *client) > +static void an30259a_remove(struct i2c_client *client) >  { >         struct an30259a *chip = i2c_get_clientdata(client); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id an30259a_match_table[] = { > diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c > index 80d937454aee..0b52fc9097c6 100644 > --- a/drivers/leds/leds-aw2013.c > +++ b/drivers/leds/leds-aw2013.c > @@ -401,15 +401,13 @@ static int aw2013_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int aw2013_remove(struct i2c_client *client) > +static void aw2013_remove(struct i2c_client *client) >  { >         struct aw2013 *chip = i2c_get_clientdata(client); >   >         aw2013_chip_disable(chip); >   >         mutex_destroy(&chip->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id aw2013_match_table[] = { > diff --git a/drivers/leds/leds-bd2802.c b/drivers/leds/leds-bd2802.c > index 8bbaef5a2986..2b6678f6bd56 100644 > --- a/drivers/leds/leds-bd2802.c > +++ b/drivers/leds/leds-bd2802.c > @@ -722,7 +722,7 @@ static int bd2802_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bd2802_remove(struct i2c_client *client) > +static void bd2802_remove(struct i2c_client *client) >  { >         struct bd2802_led *led = i2c_get_clientdata(client); >         int i; > @@ -733,8 +733,6 @@ static int bd2802_remove(struct i2c_client > *client) >                 bd2802_disable_adv_conf(led); >         for (i = 0; i < ARRAY_SIZE(bd2802_attributes); i++) >                 device_remove_file(&led->client->dev, > bd2802_attributes[i]); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/leds/leds-blinkm.c b/drivers/leds/leds-blinkm.c > index bd7d0d5cf3b6..3fb6a2fdaefa 100644 > --- a/drivers/leds/leds-blinkm.c > +++ b/drivers/leds/leds-blinkm.c > @@ -677,7 +677,7 @@ static int blinkm_probe(struct i2c_client > *client, >         return err; >  } >   > -static int blinkm_remove(struct i2c_client *client) > +static void blinkm_remove(struct i2c_client *client) >  { >         struct blinkm_data *data = i2c_get_clientdata(client); >         int ret = 0; > @@ -716,7 +716,6 @@ static int blinkm_remove(struct i2c_client > *client) >                 dev_err(&client->dev, "Failure in blinkm_remove > ignored. Continuing.\n"); >   >         sysfs_remove_group(&client->dev.kobj, &blinkm_group); > -       return 0; >  } >   >  static const struct i2c_device_id blinkm_id[] = { > diff --git a/drivers/leds/leds-is31fl319x.c b/drivers/leds/leds- > is31fl319x.c > index 4161b9dd7e48..7aee62211750 100644 > --- a/drivers/leds/leds-is31fl319x.c > +++ b/drivers/leds/leds-is31fl319x.c > @@ -414,12 +414,11 @@ static int is31fl319x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int is31fl319x_remove(struct i2c_client *client) > +static void is31fl319x_remove(struct i2c_client *client) >  { >         struct is31fl319x_chip *is31 = i2c_get_clientdata(client); >   >         mutex_destroy(&is31->lock); > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-is31fl32xx.c b/drivers/leds/leds- > is31fl32xx.c > index fc63fce38c19..0d219c1ac3b5 100644 > --- a/drivers/leds/leds-is31fl32xx.c > +++ b/drivers/leds/leds-is31fl32xx.c > @@ -457,7 +457,7 @@ static int is31fl32xx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int is31fl32xx_remove(struct i2c_client *client) > +static void is31fl32xx_remove(struct i2c_client *client) >  { >         struct is31fl32xx_priv *priv = i2c_get_clientdata(client); >         int ret; > @@ -466,8 +466,6 @@ static int is31fl32xx_remove(struct i2c_client > *client) >         if (ret) >                 dev_err(&client->dev, "Failed to reset registers on > removal (%pe)\n", >                         ERR_PTR(ret)); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/leds/leds-lm3530.c b/drivers/leds/leds-lm3530.c > index e72393534b72..ba906c253c7f 100644 > --- a/drivers/leds/leds-lm3530.c > +++ b/drivers/leds/leds-lm3530.c > @@ -470,13 +470,12 @@ static int lm3530_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3530_remove(struct i2c_client *client) > +static void lm3530_remove(struct i2c_client *client) >  { >         struct lm3530_data *drvdata = i2c_get_clientdata(client); >   >         lm3530_led_disable(drvdata); >         led_classdev_unregister(&drvdata->led_dev); > -       return 0; >  } >   >  static const struct i2c_device_id lm3530_id[] = { > diff --git a/drivers/leds/leds-lm3532.c b/drivers/leds/leds-lm3532.c > index beb53040e09e..db64d44bcbbf 100644 > --- a/drivers/leds/leds-lm3532.c > +++ b/drivers/leds/leds-lm3532.c > @@ -704,7 +704,7 @@ static int lm3532_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3532_remove(struct i2c_client *client) > +static void lm3532_remove(struct i2c_client *client) >  { >         struct lm3532_data *drvdata = i2c_get_clientdata(client); >   > @@ -712,8 +712,6 @@ static int lm3532_remove(struct i2c_client > *client) >   >         if (drvdata->enable_gpio) >                 gpiod_direction_output(drvdata->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id of_lm3532_leds_match[] = { > diff --git a/drivers/leds/leds-lm355x.c b/drivers/leds/leds-lm355x.c > index 2d3e11845ba5..daa35927b301 100644 > --- a/drivers/leds/leds-lm355x.c > +++ b/drivers/leds/leds-lm355x.c > @@ -491,7 +491,7 @@ static int lm355x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm355x_remove(struct i2c_client *client) > +static void lm355x_remove(struct i2c_client *client) >  { >         struct lm355x_chip_data *chip = i2c_get_clientdata(client); >         struct lm355x_reg_data *preg = chip->regs; > @@ -501,8 +501,6 @@ static int lm355x_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         dev_info(&client->dev, "%s is removed\n", lm355x_name[chip- > >type]); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm355x_id[] = { > diff --git a/drivers/leds/leds-lm3642.c b/drivers/leds/leds-lm3642.c > index 435309154e6b..428a5d928150 100644 > --- a/drivers/leds/leds-lm3642.c > +++ b/drivers/leds/leds-lm3642.c > @@ -380,7 +380,7 @@ static int lm3642_probe(struct i2c_client > *client, >         return err; >  } >   > -static int lm3642_remove(struct i2c_client *client) > +static void lm3642_remove(struct i2c_client *client) >  { >         struct lm3642_chip_data *chip = i2c_get_clientdata(client); >   > @@ -388,7 +388,6 @@ static int lm3642_remove(struct i2c_client > *client) >         led_classdev_unregister(&chip->cdev_torch); >         led_classdev_unregister(&chip->cdev_flash); >         regmap_write(chip->regmap, REG_ENABLE, 0); > -       return 0; >  } >   >  static const struct i2c_device_id lm3642_id[] = { > diff --git a/drivers/leds/leds-lm3692x.c b/drivers/leds/leds- > lm3692x.c > index 87cd24ce3f95..54b4662bff41 100644 > --- a/drivers/leds/leds-lm3692x.c > +++ b/drivers/leds/leds-lm3692x.c > @@ -491,14 +491,12 @@ static int lm3692x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3692x_remove(struct i2c_client *client) > +static void lm3692x_remove(struct i2c_client *client) >  { >         struct lm3692x_led *led = i2c_get_clientdata(client); >   >         lm3692x_leds_disable(led); >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3692x_id[] = { > diff --git a/drivers/leds/leds-lm3697.c b/drivers/leds/leds-lm3697.c > index 3ecf90fbc06c..71231a60eebc 100644 > --- a/drivers/leds/leds-lm3697.c > +++ b/drivers/leds/leds-lm3697.c > @@ -337,7 +337,7 @@ static int lm3697_probe(struct i2c_client > *client, >         return lm3697_init(led); >  } >   > -static int lm3697_remove(struct i2c_client *client) > +static void lm3697_remove(struct i2c_client *client) >  { >         struct lm3697 *led = i2c_get_clientdata(client); >         struct device *dev = &led->client->dev; > @@ -358,8 +358,6 @@ static int lm3697_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3697_id[] = { > diff --git a/drivers/leds/leds-lp3944.c b/drivers/leds/leds-lp3944.c > index 437c711b2a27..673ad8c04f41 100644 > --- a/drivers/leds/leds-lp3944.c > +++ b/drivers/leds/leds-lp3944.c > @@ -397,7 +397,7 @@ static int lp3944_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3944_remove(struct i2c_client *client) > +static void lp3944_remove(struct i2c_client *client) >  { >         struct lp3944_platform_data *pdata = > dev_get_platdata(&client->dev); >         struct lp3944_data *data = i2c_get_clientdata(client); > @@ -414,8 +414,6 @@ static int lp3944_remove(struct i2c_client > *client) >                 default: >                         break; >                 } > - > -       return 0; >  } >   >  /* lp3944 i2c driver struct */ > diff --git a/drivers/leds/leds-lp3952.c b/drivers/leds/leds-lp3952.c > index 6ee9131fbf25..bf0ad1b5ce24 100644 > --- a/drivers/leds/leds-lp3952.c > +++ b/drivers/leds/leds-lp3952.c > @@ -255,15 +255,13 @@ static int lp3952_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp3952_remove(struct i2c_client *client) > +static void lp3952_remove(struct i2c_client *client) >  { >         struct lp3952_led_array *priv; >   >         priv = i2c_get_clientdata(client); >         lp3952_on_off(priv, LP3952_LED_ALL, false); >         gpiod_set_value(priv->enable_gpio, 0); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp3952_id[] = { > diff --git a/drivers/leds/leds-lp50xx.c b/drivers/leds/leds-lp50xx.c > index e129dcc656b8..28d6b39fa72d 100644 > --- a/drivers/leds/leds-lp50xx.c > +++ b/drivers/leds/leds-lp50xx.c > @@ -563,7 +563,7 @@ static int lp50xx_probe(struct i2c_client > *client) >         return lp50xx_probe_dt(led); >  } >   > -static int lp50xx_remove(struct i2c_client *client) > +static void lp50xx_remove(struct i2c_client *client) >  { >         struct lp50xx *led = i2c_get_clientdata(client); >         int ret; > @@ -579,8 +579,6 @@ static int lp50xx_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp50xx_id[] = { > diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c > index a9e7507c998c..7ff20c260504 100644 > --- a/drivers/leds/leds-lp5521.c > +++ b/drivers/leds/leds-lp5521.c > @@ -579,7 +579,7 @@ static int lp5521_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5521_remove(struct i2c_client *client) > +static void lp5521_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -587,8 +587,6 @@ static int lp5521_remove(struct i2c_client > *client) >         lp5521_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5521_id[] = { > diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c > index b1590cb4a188..369d40b0b65b 100644 > --- a/drivers/leds/leds-lp5523.c > +++ b/drivers/leds/leds-lp5523.c > @@ -947,7 +947,7 @@ static int lp5523_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5523_remove(struct i2c_client *client) > +static void lp5523_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -955,8 +955,6 @@ static int lp5523_remove(struct i2c_client > *client) >         lp5523_stop_all_engines(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5523_id[] = { > diff --git a/drivers/leds/leds-lp5562.c b/drivers/leds/leds-lp5562.c > index 31c14016d289..0e490085ff35 100644 > --- a/drivers/leds/leds-lp5562.c > +++ b/drivers/leds/leds-lp5562.c > @@ -573,7 +573,7 @@ static int lp5562_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp5562_remove(struct i2c_client *client) > +static void lp5562_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -582,8 +582,6 @@ static int lp5562_remove(struct i2c_client > *client) >   >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp5562_id[] = { > diff --git a/drivers/leds/leds-lp8501.c b/drivers/leds/leds-lp8501.c > index 2d2fda2ab104..ae11a02c0ab2 100644 > --- a/drivers/leds/leds-lp8501.c > +++ b/drivers/leds/leds-lp8501.c > @@ -362,7 +362,7 @@ static int lp8501_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8501_remove(struct i2c_client *client) > +static void lp8501_remove(struct i2c_client *client) >  { >         struct lp55xx_led *led = i2c_get_clientdata(client); >         struct lp55xx_chip *chip = led->chip; > @@ -370,8 +370,6 @@ static int lp8501_remove(struct i2c_client > *client) >         lp8501_stop_engine(chip); >         lp55xx_unregister_sysfs(chip); >         lp55xx_deinit_device(chip); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8501_id[] = { > diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c > index 3c693d5e3b44..e2b36d3187eb 100644 > --- a/drivers/leds/leds-lp8860.c > +++ b/drivers/leds/leds-lp8860.c > @@ -445,7 +445,7 @@ static int lp8860_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lp8860_remove(struct i2c_client *client) > +static void lp8860_remove(struct i2c_client *client) >  { >         struct lp8860_led *led = i2c_get_clientdata(client); >         int ret; > @@ -461,8 +461,6 @@ static int lp8860_remove(struct i2c_client > *client) >         } >   >         mutex_destroy(&led->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8860_id[] = { > diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds- > pca9532.c > index f72b5d1be3a6..df83d97cb479 100644 > --- a/drivers/leds/leds-pca9532.c > +++ b/drivers/leds/leds-pca9532.c > @@ -52,7 +52,7 @@ struct pca9532_data { >   >  static int pca9532_probe(struct i2c_client *client, >         const struct i2c_device_id *id); > -static int pca9532_remove(struct i2c_client *client); > +static void pca9532_remove(struct i2c_client *client); >   >  enum { >         pca9530, > @@ -546,13 +546,11 @@ static int pca9532_probe(struct i2c_client > *client, >         return pca9532_configure(client, data, pca9532_pdata); >  } >   > -static int pca9532_remove(struct i2c_client *client) > +static void pca9532_remove(struct i2c_client *client) >  { >         struct pca9532_data *data = i2c_get_clientdata(client); >   >         pca9532_destroy_devices(data, data->chip_info->num_leds); > - > -       return 0; >  } >   >  module_i2c_driver(pca9532_driver); > diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds- > tca6507.c > index 1473ced8664c..161bef65c6b7 100644 > --- a/drivers/leds/leds-tca6507.c > +++ b/drivers/leds/leds-tca6507.c > @@ -790,7 +790,7 @@ static int tca6507_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tca6507_remove(struct i2c_client *client) > +static void tca6507_remove(struct i2c_client *client) >  { >         int i; >         struct tca6507_chip *tca = i2c_get_clientdata(client); > @@ -802,8 +802,6 @@ static int tca6507_remove(struct i2c_client > *client) >         } >         tca6507_remove_gpio(tca); >         cancel_work_sync(&tca->work); > - > -       return 0; >  } >   >  static struct i2c_driver tca6507_driver = { > diff --git a/drivers/leds/leds-turris-omnia.c b/drivers/leds/leds- > turris-omnia.c > index 1adfed1c0619..66040e8621af 100644 > --- a/drivers/leds/leds-turris-omnia.c > +++ b/drivers/leds/leds-turris-omnia.c > @@ -245,7 +245,7 @@ static int omnia_leds_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int omnia_leds_remove(struct i2c_client *client) > +static void omnia_leds_remove(struct i2c_client *client) >  { >         u8 buf[5]; >   > @@ -261,8 +261,6 @@ static int omnia_leds_remove(struct i2c_client > *client) >         buf[4] = 255; >   >         i2c_master_send(client, buf, 5); > - > -       return 0; >  } >   >  static const struct of_device_id of_omnia_leds_match[] = { > diff --git a/drivers/macintosh/ams/ams-i2c.c > b/drivers/macintosh/ams/ams-i2c.c > index d2f0cde6f9c7..362fc56b69dc 100644 > --- a/drivers/macintosh/ams/ams-i2c.c > +++ b/drivers/macintosh/ams/ams-i2c.c > @@ -230,7 +230,7 @@ static int ams_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ams_i2c_remove(struct i2c_client *client) > +static void ams_i2c_remove(struct i2c_client *client) >  { >         if (ams_info.has_device) { >                 ams_sensor_detach(); > @@ -245,8 +245,6 @@ static int ams_i2c_remove(struct i2c_client > *client) >   >                 ams_info.has_device = 0; >         } > - > -       return 0; >  } >   >  static void ams_i2c_exit(void) > diff --git a/drivers/macintosh/therm_adt746x.c > b/drivers/macintosh/therm_adt746x.c > index e604cbc91763..b004ea2a1102 100644 > --- a/drivers/macintosh/therm_adt746x.c > +++ b/drivers/macintosh/therm_adt746x.c > @@ -563,7 +563,7 @@ static int probe_thermostat(struct i2c_client > *client, >         return 0; >  } >   > -static int remove_thermostat(struct i2c_client *client) > +static void remove_thermostat(struct i2c_client *client) >  { >         struct thermostat *th = i2c_get_clientdata(client); >         int i; > @@ -585,8 +585,6 @@ static int remove_thermostat(struct i2c_client > *client) >         write_both_fan_speed(th, -1); >   >         kfree(th); > - > -       return 0; >  } >   >  static const struct i2c_device_id therm_adt746x_id[] = { > diff --git a/drivers/macintosh/therm_windtunnel.c > b/drivers/macintosh/therm_windtunnel.c > index 9226b74fa08f..61fe2ab910b8 100644 > --- a/drivers/macintosh/therm_windtunnel.c > +++ b/drivers/macintosh/therm_windtunnel.c > @@ -334,7 +334,7 @@ static void do_attach(struct i2c_adapter > *adapter) >         } >  } >   > -static int > +static void >  do_remove(struct i2c_client *client) >  { >         if (x.running) { > @@ -348,8 +348,6 @@ do_remove(struct i2c_client *client) >                 x.fan = NULL; >         else >                 printk(KERN_ERR "g4fan: bad client\n"); > - > -       return 0; >  } >   >  static int > diff --git a/drivers/macintosh/windfarm_ad7417_sensor.c > b/drivers/macintosh/windfarm_ad7417_sensor.c > index 6ad6441abcbc..c5c54a4ce91f 100644 > --- a/drivers/macintosh/windfarm_ad7417_sensor.c > +++ b/drivers/macintosh/windfarm_ad7417_sensor.c > @@ -289,7 +289,7 @@ static int wf_ad7417_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_ad7417_remove(struct i2c_client *client) > +static void wf_ad7417_remove(struct i2c_client *client) >  { >         struct wf_ad7417_priv *pv = dev_get_drvdata(&client->dev); >         int i; > @@ -302,8 +302,6 @@ static int wf_ad7417_remove(struct i2c_client > *client) >                 wf_unregister_sensor(&pv->sensors[i]); >   >         kref_put(&pv->ref, wf_ad7417_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_ad7417_id[] = { > diff --git a/drivers/macintosh/windfarm_fcu_controls.c > b/drivers/macintosh/windfarm_fcu_controls.c > index 82e7b2005ae7..c5b1ca5bcd73 100644 > --- a/drivers/macintosh/windfarm_fcu_controls.c > +++ b/drivers/macintosh/windfarm_fcu_controls.c > @@ -560,7 +560,7 @@ static int wf_fcu_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_fcu_remove(struct i2c_client *client) > +static void wf_fcu_remove(struct i2c_client *client) >  { >         struct wf_fcu_priv *pv = dev_get_drvdata(&client->dev); >         struct wf_fcu_fan *fan; > @@ -571,7 +571,6 @@ static int wf_fcu_remove(struct i2c_client > *client) >                 wf_unregister_control(&fan->ctrl); >         } >         kref_put(&pv->ref, wf_fcu_release); > -       return 0; >  } >   >  static const struct i2c_device_id wf_fcu_id[] = { > diff --git a/drivers/macintosh/windfarm_lm75_sensor.c > b/drivers/macintosh/windfarm_lm75_sensor.c > index eb7e7f0bd219..204661c8e918 100644 > --- a/drivers/macintosh/windfarm_lm75_sensor.c > +++ b/drivers/macintosh/windfarm_lm75_sensor.c > @@ -147,7 +147,7 @@ static int wf_lm75_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm75_remove(struct i2c_client *client) > +static void wf_lm75_remove(struct i2c_client *client) >  { >         struct wf_lm75_sensor *lm = i2c_get_clientdata(client); >   > @@ -156,8 +156,6 @@ static int wf_lm75_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm75_id[] = { > diff --git a/drivers/macintosh/windfarm_lm87_sensor.c > b/drivers/macintosh/windfarm_lm87_sensor.c > index 807efdde86bc..40d25463346e 100644 > --- a/drivers/macintosh/windfarm_lm87_sensor.c > +++ b/drivers/macintosh/windfarm_lm87_sensor.c > @@ -145,7 +145,7 @@ static int wf_lm87_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_lm87_remove(struct i2c_client *client) > +static void wf_lm87_remove(struct i2c_client *client) >  { >         struct wf_lm87_sensor *lm = i2c_get_clientdata(client); >   > @@ -154,8 +154,6 @@ static int wf_lm87_remove(struct i2c_client > *client) >   >         /* release sensor */ >         wf_unregister_sensor(&lm->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_lm87_id[] = { > diff --git a/drivers/macintosh/windfarm_max6690_sensor.c > b/drivers/macintosh/windfarm_max6690_sensor.c > index 55ee417fb878..c0d404ebc792 100644 > --- a/drivers/macintosh/windfarm_max6690_sensor.c > +++ b/drivers/macintosh/windfarm_max6690_sensor.c > @@ -104,14 +104,12 @@ static int wf_max6690_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int wf_max6690_remove(struct i2c_client *client) > +static void wf_max6690_remove(struct i2c_client *client) >  { >         struct wf_6690_sensor *max = i2c_get_clientdata(client); >   >         max->i2c = NULL; >         wf_unregister_sensor(&max->sens); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_max6690_id[] = { > diff --git a/drivers/macintosh/windfarm_smu_sat.c > b/drivers/macintosh/windfarm_smu_sat.c > index 5ade627eaa78..be5d4593db93 100644 > --- a/drivers/macintosh/windfarm_smu_sat.c > +++ b/drivers/macintosh/windfarm_smu_sat.c > @@ -316,7 +316,7 @@ static int wf_sat_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wf_sat_remove(struct i2c_client *client) > +static void wf_sat_remove(struct i2c_client *client) >  { >         struct wf_sat *sat = i2c_get_clientdata(client); >         struct wf_sat_sensor *sens; > @@ -330,8 +330,6 @@ static int wf_sat_remove(struct i2c_client > *client) >         } >         sat->i2c = NULL; >         kref_put(&sat->ref, wf_sat_release); > - > -       return 0; >  } >   >  static const struct i2c_device_id wf_sat_id[] = { > diff --git a/drivers/media/cec/i2c/ch7322.c > b/drivers/media/cec/i2c/ch7322.c > index 0814338c43e4..34fad7123704 100644 > --- a/drivers/media/cec/i2c/ch7322.c > +++ b/drivers/media/cec/i2c/ch7322.c > @@ -565,7 +565,7 @@ static int ch7322_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ch7322_remove(struct i2c_client *client) > +static void ch7322_remove(struct i2c_client *client) >  { >         struct ch7322 *ch7322 = i2c_get_clientdata(client); >   > @@ -578,8 +578,6 @@ static int ch7322_remove(struct i2c_client > *client) >         mutex_destroy(&ch7322->mutex); >   >         dev_info(&client->dev, "device unregistered\n"); > - > -       return 0; >  } >   >  static const struct of_device_id ch7322_of_match[] = { > diff --git a/drivers/media/dvb-frontends/a8293.c b/drivers/media/dvb- > frontends/a8293.c > index 57f52c004a23..ba38783b2b4f 100644 > --- a/drivers/media/dvb-frontends/a8293.c > +++ b/drivers/media/dvb-frontends/a8293.c > @@ -98,14 +98,13 @@ static int a8293_probe(struct i2c_client *client, >         return ret; >  } >   > -static int a8293_remove(struct i2c_client *client) > +static void a8293_remove(struct i2c_client *client) >  { >         struct a8293_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id a8293_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9013.c > b/drivers/media/dvb-frontends/af9013.c > index 7d7c341b2bd8..d85929582c3f 100644 > --- a/drivers/media/dvb-frontends/af9013.c > +++ b/drivers/media/dvb-frontends/af9013.c > @@ -1540,7 +1540,7 @@ static int af9013_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9013_remove(struct i2c_client *client) > +static void af9013_remove(struct i2c_client *client) >  { >         struct af9013_state *state = i2c_get_clientdata(client); >   > @@ -1551,8 +1551,6 @@ static int af9013_remove(struct i2c_client > *client) >         regmap_exit(state->regmap); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9013_id_table[] = { > diff --git a/drivers/media/dvb-frontends/af9033.c > b/drivers/media/dvb-frontends/af9033.c > index 785c49b3d307..808da7a9ffe7 100644 > --- a/drivers/media/dvb-frontends/af9033.c > +++ b/drivers/media/dvb-frontends/af9033.c > @@ -1163,7 +1163,7 @@ static int af9033_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int af9033_remove(struct i2c_client *client) > +static void af9033_remove(struct i2c_client *client) >  { >         struct af9033_dev *dev = i2c_get_clientdata(client); >   > @@ -1171,8 +1171,6 @@ static int af9033_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id af9033_id_table[] = { > diff --git a/drivers/media/dvb-frontends/au8522_decoder.c > b/drivers/media/dvb-frontends/au8522_decoder.c > index 8cdca051e51b..e4f99bd468cb 100644 > --- a/drivers/media/dvb-frontends/au8522_decoder.c > +++ b/drivers/media/dvb-frontends/au8522_decoder.c > @@ -758,13 +758,12 @@ static int au8522_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int au8522_remove(struct i2c_client *client) > +static void au8522_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         au8522_release_state(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id au8522_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2099.c > b/drivers/media/dvb-frontends/cxd2099.c > index 1c8207ab8988..fbc666fa04ec 100644 > --- a/drivers/media/dvb-frontends/cxd2099.c > +++ b/drivers/media/dvb-frontends/cxd2099.c > @@ -664,14 +664,12 @@ static int cxd2099_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2099_remove(struct i2c_client *client) > +static void cxd2099_remove(struct i2c_client *client) >  { >         struct cxd *ci = i2c_get_clientdata(client); >   >         regmap_exit(ci->regmap); >         kfree(ci); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2099_id[] = { > diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c > b/drivers/media/dvb-frontends/cxd2820r_core.c > index b1618339eec0..5d98222f9df0 100644 > --- a/drivers/media/dvb-frontends/cxd2820r_core.c > +++ b/drivers/media/dvb-frontends/cxd2820r_core.c > @@ -705,7 +705,7 @@ static int cxd2820r_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int cxd2820r_remove(struct i2c_client *client) > +static void cxd2820r_remove(struct i2c_client *client) >  { >         struct cxd2820r_priv *priv = i2c_get_clientdata(client); >   > @@ -721,8 +721,6 @@ static int cxd2820r_remove(struct i2c_client > *client) >         regmap_exit(priv->regmap[0]); >   >         kfree(priv); > - > -       return 0; >  } >   >  static const struct i2c_device_id cxd2820r_id_table[] = { > diff --git a/drivers/media/dvb-frontends/dvb-pll.c > b/drivers/media/dvb-frontends/dvb-pll.c > index d45b4ddc8f91..baf2a378e565 100644 > --- a/drivers/media/dvb-frontends/dvb-pll.c > +++ b/drivers/media/dvb-frontends/dvb-pll.c > @@ -899,14 +899,13 @@ dvb_pll_probe(struct i2c_client *client, const > struct i2c_device_id *id) >         return 0; >  } >   > -static int dvb_pll_remove(struct i2c_client *client) > +static void dvb_pll_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe = i2c_get_clientdata(client); >         struct dvb_pll_priv *priv = fe->tuner_priv; >   >         ida_simple_remove(&pll_ida, priv->nr); >         dvb_pll_release(fe); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/lgdt3306a.c > b/drivers/media/dvb-frontends/lgdt3306a.c > index 136b76cb4807..424311afb2bf 100644 > --- a/drivers/media/dvb-frontends/lgdt3306a.c > +++ b/drivers/media/dvb-frontends/lgdt3306a.c > @@ -2226,7 +2226,7 @@ static int lgdt3306a_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lgdt3306a_remove(struct i2c_client *client) > +static void lgdt3306a_remove(struct i2c_client *client) >  { >         struct lgdt3306a_state *state = i2c_get_clientdata(client); >   > @@ -2237,8 +2237,6 @@ static int lgdt3306a_remove(struct i2c_client > *client) >   >         kfree(state->cfg); >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt3306a_id_table[] = { > diff --git a/drivers/media/dvb-frontends/lgdt330x.c > b/drivers/media/dvb-frontends/lgdt330x.c > index da3a8c5e18d8..ea9ae22fd201 100644 > --- a/drivers/media/dvb-frontends/lgdt330x.c > +++ b/drivers/media/dvb-frontends/lgdt330x.c > @@ -974,15 +974,13 @@ static const struct dvb_frontend_ops > lgdt3303_ops = { >         .release              = lgdt330x_release, >  }; >   > -static int lgdt330x_remove(struct i2c_client *client) > +static void lgdt330x_remove(struct i2c_client *client) >  { >         struct lgdt330x_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id lgdt330x_id_table[] = { > diff --git a/drivers/media/dvb-frontends/m88ds3103.c > b/drivers/media/dvb-frontends/m88ds3103.c > index bce0f42f3d19..4e844b2ef597 100644 > --- a/drivers/media/dvb-frontends/m88ds3103.c > +++ b/drivers/media/dvb-frontends/m88ds3103.c > @@ -1914,7 +1914,7 @@ static int m88ds3103_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88ds3103_remove(struct i2c_client *client) > +static void m88ds3103_remove(struct i2c_client *client) >  { >         struct m88ds3103_dev *dev = i2c_get_clientdata(client); >   > @@ -1926,7 +1926,6 @@ static int m88ds3103_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id m88ds3103_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88443x.c > b/drivers/media/dvb-frontends/mn88443x.c > index fff212c0bf3b..452571b380b7 100644 > --- a/drivers/media/dvb-frontends/mn88443x.c > +++ b/drivers/media/dvb-frontends/mn88443x.c > @@ -762,15 +762,13 @@ static int mn88443x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88443x_remove(struct i2c_client *client) > +static void mn88443x_remove(struct i2c_client *client) >  { >         struct mn88443x_priv *chip = i2c_get_clientdata(client); >   >         mn88443x_cmn_power_off(chip); >   >         i2c_unregister_device(chip->client_t); > - > -       return 0; >  } >   >  static const struct mn88443x_spec mn88443x_spec_pri = { > diff --git a/drivers/media/dvb-frontends/mn88472.c > b/drivers/media/dvb-frontends/mn88472.c > index 73922fc8f39c..2b01cc678f7e 100644 > --- a/drivers/media/dvb-frontends/mn88472.c > +++ b/drivers/media/dvb-frontends/mn88472.c > @@ -691,7 +691,7 @@ static int mn88472_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88472_remove(struct i2c_client *client) > +static void mn88472_remove(struct i2c_client *client) >  { >         struct mn88472_dev *dev = i2c_get_clientdata(client); >   > @@ -706,8 +706,6 @@ static int mn88472_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88472_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mn88473.c > b/drivers/media/dvb-frontends/mn88473.c > index 4838969ef735..f0ecf5910c02 100644 > --- a/drivers/media/dvb-frontends/mn88473.c > +++ b/drivers/media/dvb-frontends/mn88473.c > @@ -726,7 +726,7 @@ static int mn88473_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mn88473_remove(struct i2c_client *client) > +static void mn88473_remove(struct i2c_client *client) >  { >         struct mn88473_dev *dev = i2c_get_clientdata(client); >   > @@ -741,8 +741,6 @@ static int mn88473_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap[0]); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mn88473_id_table[] = { > diff --git a/drivers/media/dvb-frontends/mxl692.c > b/drivers/media/dvb-frontends/mxl692.c > index dd7954e8f553..129630cbffff 100644 > --- a/drivers/media/dvb-frontends/mxl692.c > +++ b/drivers/media/dvb-frontends/mxl692.c > @@ -1337,15 +1337,13 @@ static int mxl692_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int mxl692_remove(struct i2c_client *client) > +static void mxl692_remove(struct i2c_client *client) >  { >         struct mxl692_dev *dev = i2c_get_clientdata(client); >   >         dev->fe.demodulator_priv = NULL; >         i2c_set_clientdata(client, NULL); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mxl692_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2830.c > b/drivers/media/dvb-frontends/rtl2830.c > index e6b8367c8cce..e0fbf41316ae 100644 > --- a/drivers/media/dvb-frontends/rtl2830.c > +++ b/drivers/media/dvb-frontends/rtl2830.c > @@ -865,7 +865,7 @@ static int rtl2830_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2830_remove(struct i2c_client *client) > +static void rtl2830_remove(struct i2c_client *client) >  { >         struct rtl2830_dev *dev = i2c_get_clientdata(client); >   > @@ -874,8 +874,6 @@ static int rtl2830_remove(struct i2c_client > *client) >         i2c_mux_del_adapters(dev->muxc); >         regmap_exit(dev->regmap); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2830_id_table[] = { > diff --git a/drivers/media/dvb-frontends/rtl2832.c > b/drivers/media/dvb-frontends/rtl2832.c > index dcbeb9f5e12a..4fa884eda5d5 100644 > --- a/drivers/media/dvb-frontends/rtl2832.c > +++ b/drivers/media/dvb-frontends/rtl2832.c > @@ -1110,7 +1110,7 @@ static int rtl2832_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rtl2832_remove(struct i2c_client *client) > +static void rtl2832_remove(struct i2c_client *client) >  { >         struct rtl2832_dev *dev = i2c_get_clientdata(client); >   > @@ -1123,8 +1123,6 @@ static int rtl2832_remove(struct i2c_client > *client) >         regmap_exit(dev->regmap); >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rtl2832_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2165.c > b/drivers/media/dvb-frontends/si2165.c > index ebee230afb7b..86b0d59169dd 100644 > --- a/drivers/media/dvb-frontends/si2165.c > +++ b/drivers/media/dvb-frontends/si2165.c > @@ -1274,14 +1274,13 @@ static int si2165_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2165_remove(struct i2c_client *client) > +static void si2165_remove(struct i2c_client *client) >  { >         struct si2165_state *state = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id si2165_id_table[] = { > diff --git a/drivers/media/dvb-frontends/si2168.c > b/drivers/media/dvb-frontends/si2168.c > index 196e028a6617..8157df4570d1 100644 > --- a/drivers/media/dvb-frontends/si2168.c > +++ b/drivers/media/dvb-frontends/si2168.c > @@ -774,7 +774,7 @@ static int si2168_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2168_remove(struct i2c_client *client) > +static void si2168_remove(struct i2c_client *client) >  { >         struct si2168_dev *dev = i2c_get_clientdata(client); >   > @@ -786,8 +786,6 @@ static int si2168_remove(struct i2c_client > *client) >         dev->fe.demodulator_priv = NULL; >   >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id si2168_id_table[] = { > diff --git a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb- > frontends/sp2.c > index 992f22167fbe..27e7037e130e 100644 > --- a/drivers/media/dvb-frontends/sp2.c > +++ b/drivers/media/dvb-frontends/sp2.c > @@ -398,14 +398,13 @@ static int sp2_probe(struct i2c_client *client, >         return ret; >  } >   > -static int sp2_remove(struct i2c_client *client) > +static void sp2_remove(struct i2c_client *client) >  { >         struct sp2 *s = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >         sp2_exit(client); >         kfree(s); > -       return 0; >  } >   >  static const struct i2c_device_id sp2_id[] = { > diff --git a/drivers/media/dvb-frontends/stv090x.c > b/drivers/media/dvb-frontends/stv090x.c > index 90d24131d335..0a600c1d7d1b 100644 > --- a/drivers/media/dvb-frontends/stv090x.c > +++ b/drivers/media/dvb-frontends/stv090x.c > @@ -5032,12 +5032,11 @@ static int stv090x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stv090x_remove(struct i2c_client *client) > +static void stv090x_remove(struct i2c_client *client) >  { >         struct stv090x_state *state = i2c_get_clientdata(client); >   >         stv090x_release(&state->frontend); > -       return 0; >  } >   >  struct dvb_frontend *stv090x_attach(struct stv090x_config *config, > diff --git a/drivers/media/dvb-frontends/stv6110x.c > b/drivers/media/dvb-frontends/stv6110x.c > index 5012d0231652..fbc4dbd62151 100644 > --- a/drivers/media/dvb-frontends/stv6110x.c > +++ b/drivers/media/dvb-frontends/stv6110x.c > @@ -436,12 +436,11 @@ static int stv6110x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int stv6110x_remove(struct i2c_client *client) > +static void stv6110x_remove(struct i2c_client *client) >  { >         struct stv6110x_state *stv6110x = i2c_get_clientdata(client); >   >         stv6110x_release(stv6110x->frontend); > -       return 0; >  } >   >  const struct stv6110x_devctl *stv6110x_attach(struct dvb_frontend > *fe, > diff --git a/drivers/media/dvb-frontends/tc90522.c > b/drivers/media/dvb-frontends/tc90522.c > index e83836b29715..c22d2a2b2a45 100644 > --- a/drivers/media/dvb-frontends/tc90522.c > +++ b/drivers/media/dvb-frontends/tc90522.c > @@ -819,14 +819,13 @@ static int tc90522_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tc90522_remove(struct i2c_client *client) > +static void tc90522_remove(struct i2c_client *client) >  { >         struct tc90522_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         i2c_del_adapter(&state->tuner_i2c); >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/dvb-frontends/tda10071.c > b/drivers/media/dvb-frontends/tda10071.c > index 685c0ac71819..d1098ef20a8b 100644 > --- a/drivers/media/dvb-frontends/tda10071.c > +++ b/drivers/media/dvb-frontends/tda10071.c > @@ -1221,14 +1221,13 @@ static int tda10071_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda10071_remove(struct i2c_client *client) > +static void tda10071_remove(struct i2c_client *client) >  { >         struct tda10071_dev *dev = i2c_get_clientdata(client); >   >         dev_dbg(&client->dev, "\n"); >   >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tda10071_id_table[] = { > diff --git a/drivers/media/dvb-frontends/ts2020.c > b/drivers/media/dvb-frontends/ts2020.c > index 3e383912bcfd..02338256b974 100644 > --- a/drivers/media/dvb-frontends/ts2020.c > +++ b/drivers/media/dvb-frontends/ts2020.c > @@ -696,7 +696,7 @@ static int ts2020_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ts2020_remove(struct i2c_client *client) > +static void ts2020_remove(struct i2c_client *client) >  { >         struct ts2020_priv *dev = i2c_get_clientdata(client); >   > @@ -708,7 +708,6 @@ static int ts2020_remove(struct i2c_client > *client) >   >         regmap_exit(dev->regmap); >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id ts2020_id_table[] = { > diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c > index 2958a4694461..516de278cc49 100644 > --- a/drivers/media/i2c/ad5820.c > +++ b/drivers/media/i2c/ad5820.c > @@ -342,7 +342,7 @@ static int ad5820_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ad5820_remove(struct i2c_client *client) > +static void ad5820_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ad5820_device *coil = to_ad5820_device(subdev); > @@ -351,7 +351,6 @@ static int ad5820_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&coil->ctrls); >         media_entity_cleanup(&coil->subdev.entity); >         mutex_destroy(&coil->power_lock); > -       return 0; >  } >   >  static const struct i2c_device_id ad5820_id_table[] = { > diff --git a/drivers/media/i2c/ad9389b.c > b/drivers/media/i2c/ad9389b.c > index 8679a44e6413..4a255a492918 100644 > --- a/drivers/media/i2c/ad9389b.c > +++ b/drivers/media/i2c/ad9389b.c > @@ -1174,7 +1174,7 @@ static int ad9389b_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int ad9389b_remove(struct i2c_client *client) > +static void ad9389b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ad9389b_state *state = get_ad9389b_state(sd); > @@ -1192,7 +1192,6 @@ static int ad9389b_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adp1653.c > b/drivers/media/i2c/adp1653.c > index 522a0b10e415..1f353157df07 100644 > --- a/drivers/media/i2c/adp1653.c > +++ b/drivers/media/i2c/adp1653.c > @@ -510,7 +510,7 @@ static int adp1653_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp1653_remove(struct i2c_client *client) > +static void adp1653_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct adp1653_flash *flash = to_adp1653_flash(subdev); > @@ -518,8 +518,6 @@ static int adp1653_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&flash->subdev); >         v4l2_ctrl_handler_free(&flash->ctrls); >         media_entity_cleanup(&flash->subdev.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id adp1653_id_table[] = { > diff --git a/drivers/media/i2c/adv7170.c > b/drivers/media/i2c/adv7170.c > index 714e31f993e1..61a2f87d3c62 100644 > --- a/drivers/media/i2c/adv7170.c > +++ b/drivers/media/i2c/adv7170.c > @@ -368,12 +368,11 @@ static int adv7170_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7170_remove(struct i2c_client *client) > +static void adv7170_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7175.c > b/drivers/media/i2c/adv7175.c > index 1813f67f0fe1..b58689728243 100644 > --- a/drivers/media/i2c/adv7175.c > +++ b/drivers/media/i2c/adv7175.c > @@ -423,12 +423,11 @@ static int adv7175_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7175_remove(struct i2c_client *client) > +static void adv7175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7180.c > b/drivers/media/i2c/adv7180.c > index e3a57c178c6b..f85e5bf228f1 100644 > --- a/drivers/media/i2c/adv7180.c > +++ b/drivers/media/i2c/adv7180.c > @@ -1511,7 +1511,7 @@ static int adv7180_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adv7180_remove(struct i2c_client *client) > +static void adv7180_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7180_state *state = to_state(sd); > @@ -1531,8 +1531,6 @@ static int adv7180_remove(struct i2c_client > *client) >         adv7180_set_power_pin(state, false); >   >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7180_id[] = { > diff --git a/drivers/media/i2c/adv7183.c > b/drivers/media/i2c/adv7183.c > index ba746a19fd39..313c706e8335 100644 > --- a/drivers/media/i2c/adv7183.c > +++ b/drivers/media/i2c/adv7183.c > @@ -613,13 +613,12 @@ static int adv7183_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int adv7183_remove(struct i2c_client *client) > +static void adv7183_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id adv7183_id[] = { > diff --git a/drivers/media/i2c/adv7343.c > b/drivers/media/i2c/adv7343.c > index 63e94dfcb5d3..7e84869d2434 100644 > --- a/drivers/media/i2c/adv7343.c > +++ b/drivers/media/i2c/adv7343.c > @@ -492,15 +492,13 @@ static int adv7343_probe(struct i2c_client > *client) >         return err; >  } >   > -static int adv7343_remove(struct i2c_client *client) > +static void adv7343_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7343_state *state = to_state(sd); >   >         v4l2_async_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7343_id[] = { > diff --git a/drivers/media/i2c/adv7393.c > b/drivers/media/i2c/adv7393.c > index b6234c8231c9..fb5fefa83b18 100644 > --- a/drivers/media/i2c/adv7393.c > +++ b/drivers/media/i2c/adv7393.c > @@ -437,15 +437,13 @@ static int adv7393_probe(struct i2c_client > *client, >         return err; >  } >   > -static int adv7393_remove(struct i2c_client *client) > +static void adv7393_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7393_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id adv7393_id[] = { > diff --git a/drivers/media/i2c/adv748x/adv748x-core.c > b/drivers/media/i2c/adv748x/adv748x-core.c > index 4e54148147b9..4498d78a2357 100644 > --- a/drivers/media/i2c/adv748x/adv748x-core.c > +++ b/drivers/media/i2c/adv748x/adv748x-core.c > @@ -815,7 +815,7 @@ static int adv748x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int adv748x_remove(struct i2c_client *client) > +static void adv748x_remove(struct i2c_client *client) >  { >         struct adv748x_state *state = i2c_get_clientdata(client); >   > @@ -828,8 +828,6 @@ static int adv748x_remove(struct i2c_client > *client) >         adv748x_unregister_clients(state); >         adv748x_dt_cleanup(state); >         mutex_destroy(&state->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id adv748x_of_table[] = { > diff --git a/drivers/media/i2c/adv7511-v4l2.c > b/drivers/media/i2c/adv7511-v4l2.c > index 202e0cd83f90..49aca579576a 100644 > --- a/drivers/media/i2c/adv7511-v4l2.c > +++ b/drivers/media/i2c/adv7511-v4l2.c > @@ -1923,7 +1923,7 @@ static int adv7511_probe(struct i2c_client > *client, const struct i2c_device_id * >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7511_remove(struct i2c_client *client) > +static void adv7511_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7511_state *state = get_adv7511_state(sd); > @@ -1943,7 +1943,6 @@ static int adv7511_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7604.c > b/drivers/media/i2c/adv7604.c > index bb0c8fc6d383..e63abf93ccac 100644 > --- a/drivers/media/i2c/adv7604.c > +++ b/drivers/media/i2c/adv7604.c > @@ -3661,7 +3661,7 @@ static int adv76xx_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv76xx_remove(struct i2c_client *client) > +static void adv76xx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv76xx_state *state = to_state(sd); > @@ -3678,7 +3678,6 @@ static int adv76xx_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv76xx_unregister_clients(to_state(sd)); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/adv7842.c > b/drivers/media/i2c/adv7842.c > index 22caa070273b..a8dd92948df0 100644 > --- a/drivers/media/i2c/adv7842.c > +++ b/drivers/media/i2c/adv7842.c > @@ -3593,7 +3593,7 @@ static int adv7842_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int adv7842_remove(struct i2c_client *client) > +static void adv7842_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct adv7842_state *state = to_state(sd); > @@ -3604,7 +3604,6 @@ static int adv7842_remove(struct i2c_client > *client) >         media_entity_cleanup(&sd->entity); >         adv7842_unregister_clients(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/ak7375.c b/drivers/media/i2c/ak7375.c > index 40b1a4aa846c..1af9f698eecf 100644 > --- a/drivers/media/i2c/ak7375.c > +++ b/drivers/media/i2c/ak7375.c > @@ -169,7 +169,7 @@ static int ak7375_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ak7375_remove(struct i2c_client *client) > +static void ak7375_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ak7375_device *ak7375_dev = sd_to_ak7375_vcm(sd); > @@ -177,8 +177,6 @@ static int ak7375_remove(struct i2c_client > *client) >         ak7375_subdev_cleanup(ak7375_dev); >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/ak881x.c b/drivers/media/i2c/ak881x.c > index dc569d5a4d9d..0370ad6b6811 100644 > --- a/drivers/media/i2c/ak881x.c > +++ b/drivers/media/i2c/ak881x.c > @@ -297,13 +297,11 @@ static int ak881x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ak881x_remove(struct i2c_client *client) > +static void ak881x_remove(struct i2c_client *client) >  { >         struct ak881x *ak881x = to_ak881x(client); >   >         v4l2_device_unregister_subdev(&ak881x->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ak881x_id[] = { > diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c > index 73bc50c919d7..4d9bb6eb7d65 100644 > --- a/drivers/media/i2c/bt819.c > +++ b/drivers/media/i2c/bt819.c > @@ -446,14 +446,13 @@ static int bt819_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt819_remove(struct i2c_client *client) > +static void bt819_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct bt819 *decoder = to_bt819(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/bt856.c b/drivers/media/i2c/bt856.c > index c134fda270a1..70443ef1ac46 100644 > --- a/drivers/media/i2c/bt856.c > +++ b/drivers/media/i2c/bt856.c > @@ -223,12 +223,11 @@ static int bt856_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt856_remove(struct i2c_client *client) > +static void bt856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt856_id[] = { > diff --git a/drivers/media/i2c/bt866.c b/drivers/media/i2c/bt866.c > index 1a8df9f18ffb..c2508cbafd02 100644 > --- a/drivers/media/i2c/bt866.c > +++ b/drivers/media/i2c/bt866.c > @@ -190,12 +190,11 @@ static int bt866_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bt866_remove(struct i2c_client *client) > +static void bt866_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id bt866_id[] = { > diff --git a/drivers/media/i2c/ccs/ccs-core.c > b/drivers/media/i2c/ccs/ccs-core.c > index 7609add2aff4..4a14d7e5d9f2 100644 > --- a/drivers/media/i2c/ccs/ccs-core.c > +++ b/drivers/media/i2c/ccs/ccs-core.c > @@ -3665,7 +3665,7 @@ static int ccs_probe(struct i2c_client *client) >         return rval; >  } >   > -static int ccs_remove(struct i2c_client *client) > +static void ccs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ccs_sensor *sensor = to_ccs_sensor(subdev); > @@ -3687,8 +3687,6 @@ static int ccs_remove(struct i2c_client > *client) >         kfree(sensor->ccs_limits); >         kvfree(sensor->sdata.backing); >         kvfree(sensor->mdata.backing); > - > -       return 0; >  } >   >  static const struct ccs_device smia_device = { > diff --git a/drivers/media/i2c/cs3308.c b/drivers/media/i2c/cs3308.c > index ebe55e261bff..d901a59883a9 100644 > --- a/drivers/media/i2c/cs3308.c > +++ b/drivers/media/i2c/cs3308.c > @@ -99,13 +99,12 @@ static int cs3308_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs3308_remove(struct i2c_client *client) > +static void cs3308_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs5345.c b/drivers/media/i2c/cs5345.c > index f6dd5edf77dd..591b1e7b24ee 100644 > --- a/drivers/media/i2c/cs5345.c > +++ b/drivers/media/i2c/cs5345.c > @@ -178,14 +178,13 @@ static int cs5345_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int cs5345_remove(struct i2c_client *client) > +static void cs5345_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs5345_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/cs53l32a.c > b/drivers/media/i2c/cs53l32a.c > index 9a411106cfb3..9461589aea30 100644 > --- a/drivers/media/i2c/cs53l32a.c > +++ b/drivers/media/i2c/cs53l32a.c > @@ -190,14 +190,13 @@ static int cs53l32a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cs53l32a_remove(struct i2c_client *client) > +static void cs53l32a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cs53l32a_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cs53l32a_id[] = { > diff --git a/drivers/media/i2c/cx25840/cx25840-core.c > b/drivers/media/i2c/cx25840/cx25840-core.c > index dc31944c7d5b..f1a978af82ef 100644 > --- a/drivers/media/i2c/cx25840/cx25840-core.c > +++ b/drivers/media/i2c/cx25840/cx25840-core.c > @@ -6026,7 +6026,7 @@ static int cx25840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cx25840_remove(struct i2c_client *client) > +static void cx25840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct cx25840_state *state = to_state(sd); > @@ -6034,7 +6034,6 @@ static int cx25840_remove(struct i2c_client > *client) >         cx25840_ir_remove(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id cx25840_id[] = { > diff --git a/drivers/media/i2c/dw9714.c b/drivers/media/i2c/dw9714.c > index 206d74338b9c..af59687383aa 100644 > --- a/drivers/media/i2c/dw9714.c > +++ b/drivers/media/i2c/dw9714.c > @@ -190,7 +190,7 @@ static int dw9714_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9714_remove(struct i2c_client *client) > +static void dw9714_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9714_device *dw9714_dev = sd_to_dw9714_vcm(sd); > @@ -206,8 +206,6 @@ static int dw9714_remove(struct i2c_client > *client) >         } >         pm_runtime_set_suspended(&client->dev); >         dw9714_subdev_cleanup(dw9714_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c > index c086580efac7..0f47ef015a1d 100644 > --- a/drivers/media/i2c/dw9768.c > +++ b/drivers/media/i2c/dw9768.c > @@ -499,7 +499,7 @@ static int dw9768_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dw9768_remove(struct i2c_client *client) > +static void dw9768_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9768 *dw9768 = sd_to_dw9768(sd); > @@ -511,8 +511,6 @@ static int dw9768_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 dw9768_runtime_suspend(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id dw9768_of_table[] = { > diff --git a/drivers/media/i2c/dw9807-vcm.c > b/drivers/media/i2c/dw9807-vcm.c > index 01c372925a80..3599720db7e9 100644 > --- a/drivers/media/i2c/dw9807-vcm.c > +++ b/drivers/media/i2c/dw9807-vcm.c > @@ -216,7 +216,7 @@ static int dw9807_probe(struct i2c_client > *client) >         return rval; >  } >   > -static int dw9807_remove(struct i2c_client *client) > +static void dw9807_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd); > @@ -224,8 +224,6 @@ static int dw9807_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >   >         dw9807_subdev_cleanup(dw9807_dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/i2c/et8ek8/et8ek8_driver.c > b/drivers/media/i2c/et8ek8/et8ek8_driver.c > index 873d614339bb..ff9bb9fc97dd 100644 > --- a/drivers/media/i2c/et8ek8/et8ek8_driver.c > +++ b/drivers/media/i2c/et8ek8/et8ek8_driver.c > @@ -1460,7 +1460,7 @@ static int et8ek8_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int __exit et8ek8_remove(struct i2c_client *client) > +static void __exit et8ek8_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct et8ek8_sensor *sensor = to_et8ek8_sensor(subdev); > @@ -1477,8 +1477,6 @@ static int __exit et8ek8_remove(struct > i2c_client *client) >         v4l2_async_unregister_subdev(&sensor->subdev); >         media_entity_cleanup(&sensor->subdev.entity); >         mutex_destroy(&sensor->power_lock); > - > -       return 0; >  } >   >  static const struct of_device_id et8ek8_of_table[] = { > diff --git a/drivers/media/i2c/hi556.c b/drivers/media/i2c/hi556.c > index 055d1aa8410e..e422ac7609b5 100644 > --- a/drivers/media/i2c/hi556.c > +++ b/drivers/media/i2c/hi556.c > @@ -1101,7 +1101,7 @@ static int hi556_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi556_remove(struct i2c_client *client) > +static void hi556_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi556 *hi556 = to_hi556(sd); > @@ -1111,8 +1111,6 @@ static int hi556_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi556->mutex); > - > -       return 0; >  } >   >  static int hi556_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c > index ad35c3ff3611..c5b69823f257 100644 > --- a/drivers/media/i2c/hi846.c > +++ b/drivers/media/i2c/hi846.c > @@ -2143,7 +2143,7 @@ static int hi846_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int hi846_remove(struct i2c_client *client) > +static void hi846_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi846 *hi846 = to_hi846(sd); > @@ -2158,8 +2158,6 @@ static int hi846_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&hi846->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops hi846_pm_ops = { > diff --git a/drivers/media/i2c/hi847.c b/drivers/media/i2c/hi847.c > index 7e85349e1852..5a82b15a9513 100644 > --- a/drivers/media/i2c/hi847.c > +++ b/drivers/media/i2c/hi847.c > @@ -2903,7 +2903,7 @@ static int hi847_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int hi847_remove(struct i2c_client *client) > +static void hi847_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct hi847 *hi847 = to_hi847(sd); > @@ -2913,8 +2913,6 @@ static int hi847_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&hi847->mutex); > - > -       return 0; >  } >   >  static int hi847_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/imx208.c b/drivers/media/i2c/imx208.c > index b9516b2f1c15..a0e17bb9d4ca 100644 > --- a/drivers/media/i2c/imx208.c > +++ b/drivers/media/i2c/imx208.c > @@ -1061,7 +1061,7 @@ static int imx208_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx208_remove(struct i2c_client *client) > +static void imx208_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx208 *imx208 = to_imx208(sd); > @@ -1075,8 +1075,6 @@ static int imx208_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx208->imx208_mx); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx208_pm_ops = { > diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c > index 83c1737abeec..710c9fb515fd 100644 > --- a/drivers/media/i2c/imx214.c > +++ b/drivers/media/i2c/imx214.c > @@ -1080,7 +1080,7 @@ static int imx214_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx214_remove(struct i2c_client *client) > +static void imx214_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx214 *imx214 = to_imx214(sd); > @@ -1093,8 +1093,6 @@ static int imx214_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx214->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id imx214_of_match[] = { > diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c > index e10af3f74b38..77bd79a5954e 100644 > --- a/drivers/media/i2c/imx219.c > +++ b/drivers/media/i2c/imx219.c > @@ -1562,7 +1562,7 @@ static int imx219_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx219_remove(struct i2c_client *client) > +static void imx219_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx219 *imx219 = to_imx219(sd); > @@ -1575,8 +1575,6 @@ static int imx219_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx219_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx219_dt_ids[] = { > diff --git a/drivers/media/i2c/imx258.c b/drivers/media/i2c/imx258.c > index c249507aa2db..eab5fc1ee2f7 100644 > --- a/drivers/media/i2c/imx258.c > +++ b/drivers/media/i2c/imx258.c > @@ -1338,7 +1338,7 @@ static int imx258_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx258_remove(struct i2c_client *client) > +static void imx258_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx258 *imx258 = to_imx258(sd); > @@ -1351,8 +1351,6 @@ static int imx258_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 imx258_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx258_pm_ops = { > diff --git a/drivers/media/i2c/imx274.c b/drivers/media/i2c/imx274.c > index 7de1f2948e53..a00761b1e18c 100644 > --- a/drivers/media/i2c/imx274.c > +++ b/drivers/media/i2c/imx274.c > @@ -2142,7 +2142,7 @@ static int imx274_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx274_remove(struct i2c_client *client) > +static void imx274_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct stimx274 *imx274 = to_imx274(sd); > @@ -2157,7 +2157,6 @@ static int imx274_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&imx274->lock); > -       return 0; >  } >   >  static const struct dev_pm_ops imx274_pm_ops = { > diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c > index 99f2a50d39a4..1ce64dcdf7f0 100644 > --- a/drivers/media/i2c/imx290.c > +++ b/drivers/media/i2c/imx290.c > @@ -1119,7 +1119,7 @@ static int imx290_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx290_remove(struct i2c_client *client) > +static void imx290_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx290 *imx290 = to_imx290(sd); > @@ -1134,8 +1134,6 @@ static int imx290_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(imx290->dev)) >                 imx290_power_off(imx290->dev); >         pm_runtime_set_suspended(imx290->dev); > - > -       return 0; >  } >   >  static const struct of_device_id imx290_of_match[] = { > diff --git a/drivers/media/i2c/imx319.c b/drivers/media/i2c/imx319.c > index a2b5a34de76b..245a18fb40ad 100644 > --- a/drivers/media/i2c/imx319.c > +++ b/drivers/media/i2c/imx319.c > @@ -2523,7 +2523,7 @@ static int imx319_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx319_remove(struct i2c_client *client) > +static void imx319_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx319 *imx319 = to_imx319(sd); > @@ -2536,8 +2536,6 @@ static int imx319_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx319->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx319_pm_ops = { > diff --git a/drivers/media/i2c/imx334.c b/drivers/media/i2c/imx334.c > index 062125501788..7b0a9086447d 100644 > --- a/drivers/media/i2c/imx334.c > +++ b/drivers/media/i2c/imx334.c > @@ -1089,7 +1089,7 @@ static int imx334_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx334_remove(struct i2c_client *client) > +static void imx334_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx334 *imx334 = to_imx334(sd); > @@ -1102,8 +1102,6 @@ static int imx334_remove(struct i2c_client > *client) >         pm_runtime_suspended(&client->dev); >   >         mutex_destroy(&imx334->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx334_pm_ops = { > diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c > index 410d6b86feb5..078ede2b7a00 100644 > --- a/drivers/media/i2c/imx335.c > +++ b/drivers/media/i2c/imx335.c > @@ -1083,7 +1083,7 @@ static int imx335_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx335_remove(struct i2c_client *client) > +static void imx335_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx335 *imx335 = to_imx335(sd); > @@ -1098,8 +1098,6 @@ static int imx335_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx335->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx335_pm_ops = { > diff --git a/drivers/media/i2c/imx355.c b/drivers/media/i2c/imx355.c > index 3922b9305978..b46178681c05 100644 > --- a/drivers/media/i2c/imx355.c > +++ b/drivers/media/i2c/imx355.c > @@ -1810,7 +1810,7 @@ static int imx355_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int imx355_remove(struct i2c_client *client) > +static void imx355_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx355 *imx355 = to_imx355(sd); > @@ -1823,8 +1823,6 @@ static int imx355_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx355->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx355_pm_ops = { > diff --git a/drivers/media/i2c/imx412.c b/drivers/media/i2c/imx412.c > index a1394d6c1432..7f6d29e0e7c4 100644 > --- a/drivers/media/i2c/imx412.c > +++ b/drivers/media/i2c/imx412.c > @@ -1257,7 +1257,7 @@ static int imx412_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int imx412_remove(struct i2c_client *client) > +static void imx412_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct imx412 *imx412 = to_imx412(sd); > @@ -1272,8 +1272,6 @@ static int imx412_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&imx412->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops imx412_pm_ops = { > diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir- > kbd-i2c.c > index 56674173524f..ee6bbbb977f7 100644 > --- a/drivers/media/i2c/ir-kbd-i2c.c > +++ b/drivers/media/i2c/ir-kbd-i2c.c > @@ -915,7 +915,7 @@ static int ir_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return err; >  } >   > -static int ir_remove(struct i2c_client *client) > +static void ir_remove(struct i2c_client *client) >  { >         struct IR_i2c *ir = i2c_get_clientdata(client); >   > @@ -924,8 +924,6 @@ static int ir_remove(struct i2c_client *client) >         i2c_unregister_device(ir->tx_c); >   >         rc_unregister_device(ir->rc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ir_kbd_id[] = { > diff --git a/drivers/media/i2c/isl7998x.c > b/drivers/media/i2c/isl7998x.c > index dc3068549dfa..246d8d182a8e 100644 > --- a/drivers/media/i2c/isl7998x.c > +++ b/drivers/media/i2c/isl7998x.c > @@ -1544,7 +1544,7 @@ static int isl7998x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int isl7998x_remove(struct i2c_client *client) > +static void isl7998x_remove(struct i2c_client *client) >  { >         struct isl7998x *isl7998x = i2c_to_isl7998x(client); >   > @@ -1552,8 +1552,6 @@ static int isl7998x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&isl7998x->subdev); >         isl7998x_remove_controls(isl7998x); >         media_entity_cleanup(&isl7998x->subdev.entity); > - > -       return 0; >  } >   >  static const struct of_device_id isl7998x_of_match[] = { > diff --git a/drivers/media/i2c/ks0127.c b/drivers/media/i2c/ks0127.c > index c077f53b9c30..215d9a43b0b9 100644 > --- a/drivers/media/i2c/ks0127.c > +++ b/drivers/media/i2c/ks0127.c > @@ -675,14 +675,13 @@ static int ks0127_probe(struct i2c_client > *client, const struct i2c_device_id *i >         return 0; >  } >   > -static int ks0127_remove(struct i2c_client *client) > +static void ks0127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         ks0127_write(sd, KS_OFMTA, 0x20); /* tristate */ >         ks0127_write(sd, KS_CMDA, 0x2c | 0x80); /* power down */ > -       return 0; >  } >   >  static const struct i2c_device_id ks0127_id[] = { > diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c > index 9e34ccce4fc3..edad3138cb07 100644 > --- a/drivers/media/i2c/lm3560.c > +++ b/drivers/media/i2c/lm3560.c > @@ -443,7 +443,7 @@ static int lm3560_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3560_remove(struct i2c_client *client) > +static void lm3560_remove(struct i2c_client *client) >  { >         struct lm3560_flash *flash = i2c_get_clientdata(client); >         unsigned int i; > @@ -453,8 +453,6 @@ static int lm3560_remove(struct i2c_client > *client) >                 v4l2_ctrl_handler_free(&flash->ctrls_led[i]); >                 media_entity_cleanup(&flash->subdev_led[i].entity); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3560_id_table[] = { > diff --git a/drivers/media/i2c/lm3646.c b/drivers/media/i2c/lm3646.c > index c76ccf67a909..0aaa963917d8 100644 > --- a/drivers/media/i2c/lm3646.c > +++ b/drivers/media/i2c/lm3646.c > @@ -377,15 +377,13 @@ static int lm3646_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3646_remove(struct i2c_client *client) > +static void lm3646_remove(struct i2c_client *client) >  { >         struct lm3646_flash *flash = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(&flash->subdev_led); >         v4l2_ctrl_handler_free(&flash->ctrls_led); >         media_entity_cleanup(&flash->subdev_led.entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3646_id_table[] = { > diff --git a/drivers/media/i2c/m52790.c b/drivers/media/i2c/m52790.c > index 0a1efc1417bc..2ab91b993c33 100644 > --- a/drivers/media/i2c/m52790.c > +++ b/drivers/media/i2c/m52790.c > @@ -154,12 +154,11 @@ static int m52790_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m52790_remove(struct i2c_client *client) > +static void m52790_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/m5mols/m5mols_core.c > b/drivers/media/i2c/m5mols/m5mols_core.c > index c19590389bfe..2201d2a26353 100644 > --- a/drivers/media/i2c/m5mols/m5mols_core.c > +++ b/drivers/media/i2c/m5mols/m5mols_core.c > @@ -1020,15 +1020,13 @@ static int m5mols_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m5mols_remove(struct i2c_client *client) > +static void m5mols_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id m5mols_id[] = { > diff --git a/drivers/media/i2c/max2175.c > b/drivers/media/i2c/max2175.c > index 0eea200124d2..1019020f3a37 100644 > --- a/drivers/media/i2c/max2175.c > +++ b/drivers/media/i2c/max2175.c > @@ -1403,15 +1403,13 @@ static int max2175_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max2175_remove(struct i2c_client *client) > +static void max2175_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct max2175 *ctx = max2175_from_sd(sd); >   >         v4l2_ctrl_handler_free(&ctx->ctrl_hdl); >         v4l2_async_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id max2175_id[] = { > diff --git a/drivers/media/i2c/max9286.c > b/drivers/media/i2c/max9286.c > index 3684faa72253..9c083cf14231 100644 > --- a/drivers/media/i2c/max9286.c > +++ b/drivers/media/i2c/max9286.c > @@ -1378,7 +1378,7 @@ static int max9286_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int max9286_remove(struct i2c_client *client) > +static void max9286_remove(struct i2c_client *client) >  { >         struct max9286_priv *priv = > sd_to_max9286(i2c_get_clientdata(client)); >   > @@ -1391,8 +1391,6 @@ static int max9286_remove(struct i2c_client > *client) >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); >   >         max9286_cleanup_dt(priv); > - > -       return 0; >  } >   >  static const struct of_device_id max9286_dt_ids[] = { > diff --git a/drivers/media/i2c/ml86v7667.c > b/drivers/media/i2c/ml86v7667.c > index 48cc0b0922f4..49ec59b0ca43 100644 > --- a/drivers/media/i2c/ml86v7667.c > +++ b/drivers/media/i2c/ml86v7667.c > @@ -415,15 +415,13 @@ static int ml86v7667_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ml86v7667_remove(struct i2c_client *client) > +static void ml86v7667_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ml86v7667_priv *priv = to_ml86v7667(sd); >   >         v4l2_ctrl_handler_free(&priv->hdl); >         v4l2_device_unregister_subdev(&priv->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ml86v7667_id[] = { > diff --git a/drivers/media/i2c/msp3400-driver.c > b/drivers/media/i2c/msp3400-driver.c > index 39530d43590e..4ce7a15a9884 100644 > --- a/drivers/media/i2c/msp3400-driver.c > +++ b/drivers/media/i2c/msp3400-driver.c > @@ -859,7 +859,7 @@ static int msp_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int msp_remove(struct i2c_client *client) > +static void msp_remove(struct i2c_client *client) >  { >         struct msp_state *state = > to_state(i2c_get_clientdata(client)); >   > @@ -872,7 +872,6 @@ static int msp_remove(struct i2c_client *client) >         msp_reset(client); >   >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9m001.c > b/drivers/media/i2c/mt9m001.c > index ad13b0c890c0..ebf9cf1e1bce 100644 > --- a/drivers/media/i2c/mt9m001.c > +++ b/drivers/media/i2c/mt9m001.c > @@ -833,7 +833,7 @@ static int mt9m001_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m001_remove(struct i2c_client *client) > +static void mt9m001_remove(struct i2c_client *client) >  { >         struct mt9m001 *mt9m001 = to_mt9m001(client); >   > @@ -853,8 +853,6 @@ static int mt9m001_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&mt9m001->hdl); >         mutex_destroy(&mt9m001->mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9m001_id[] = { > diff --git a/drivers/media/i2c/mt9m032.c > b/drivers/media/i2c/mt9m032.c > index ba0c0ea91c95..76b8c9c08c82 100644 > --- a/drivers/media/i2c/mt9m032.c > +++ b/drivers/media/i2c/mt9m032.c > @@ -858,7 +858,7 @@ static int mt9m032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9m032_remove(struct i2c_client *client) > +static void mt9m032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9m032 *sensor = to_mt9m032(subdev); > @@ -867,7 +867,6 @@ static int mt9m032_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&sensor->lock); > -       return 0; >  } >   >  static const struct i2c_device_id mt9m032_id_table[] = { > diff --git a/drivers/media/i2c/mt9m111.c > b/drivers/media/i2c/mt9m111.c > index afc86efa9e3e..f5fe272d1205 100644 > --- a/drivers/media/i2c/mt9m111.c > +++ b/drivers/media/i2c/mt9m111.c > @@ -1359,15 +1359,13 @@ static int mt9m111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9m111_remove(struct i2c_client *client) > +static void mt9m111_remove(struct i2c_client *client) >  { >         struct mt9m111 *mt9m111 = to_mt9m111(client); >   >         v4l2_async_unregister_subdev(&mt9m111->subdev); >         media_entity_cleanup(&mt9m111->subdev.entity); >         v4l2_ctrl_handler_free(&mt9m111->hdl); > - > -       return 0; >  } >  static const struct of_device_id mt9m111_of_match[] = { >         { .compatible = "micron,mt9m111", }, > diff --git a/drivers/media/i2c/mt9p031.c > b/drivers/media/i2c/mt9p031.c > index cbce8b88dbcf..00da584a47b7 100644 > --- a/drivers/media/i2c/mt9p031.c > +++ b/drivers/media/i2c/mt9p031.c > @@ -1200,7 +1200,7 @@ static int mt9p031_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9p031_remove(struct i2c_client *client) > +static void mt9p031_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9p031 *mt9p031 = to_mt9p031(subdev); > @@ -1209,8 +1209,6 @@ static int mt9p031_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); >         mutex_destroy(&mt9p031->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9p031_id[] = { > diff --git a/drivers/media/i2c/mt9t001.c > b/drivers/media/i2c/mt9t001.c > index b651ee4a26e8..d5abe4a7ef07 100644 > --- a/drivers/media/i2c/mt9t001.c > +++ b/drivers/media/i2c/mt9t001.c > @@ -961,7 +961,7 @@ static int mt9t001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9t001_remove(struct i2c_client *client) > +static void mt9t001_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9t001 *mt9t001 = to_mt9t001(subdev); > @@ -969,7 +969,6 @@ static int mt9t001_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&mt9t001->ctrls); >         v4l2_device_unregister_subdev(subdev); >         media_entity_cleanup(&subdev->entity); > -       return 0; >  } >   >  static const struct i2c_device_id mt9t001_id[] = { > diff --git a/drivers/media/i2c/mt9t112.c > b/drivers/media/i2c/mt9t112.c > index 8d2e3caa9b28..ad564095d0cf 100644 > --- a/drivers/media/i2c/mt9t112.c > +++ b/drivers/media/i2c/mt9t112.c > @@ -1102,14 +1102,12 @@ static int mt9t112_probe(struct i2c_client > *client, >         return v4l2_async_register_subdev(&priv->subdev); >  } >   > -static int mt9t112_remove(struct i2c_client *client) > +static void mt9t112_remove(struct i2c_client *client) >  { >         struct mt9t112_priv *priv = to_mt9t112(client); >   >         clk_disable_unprepare(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt9t112_id[] = { > diff --git a/drivers/media/i2c/mt9v011.c > b/drivers/media/i2c/mt9v011.c > index 7699e64e1127..9952ce06ebb2 100644 > --- a/drivers/media/i2c/mt9v011.c > +++ b/drivers/media/i2c/mt9v011.c > @@ -561,7 +561,7 @@ static int mt9v011_probe(struct i2c_client *c, >         return 0; >  } >   > -static int mt9v011_remove(struct i2c_client *c) > +static void mt9v011_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct mt9v011 *core = to_mt9v011(sd); > @@ -572,8 +572,6 @@ static int mt9v011_remove(struct i2c_client *c) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&core->ctrls); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/mt9v032.c > b/drivers/media/i2c/mt9v032.c > index 4cfdd3dfbd42..bc4388ccc2a8 100644 > --- a/drivers/media/i2c/mt9v032.c > +++ b/drivers/media/i2c/mt9v032.c > @@ -1192,7 +1192,7 @@ static int mt9v032_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt9v032_remove(struct i2c_client *client) > +static void mt9v032_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct mt9v032 *mt9v032 = to_mt9v032(subdev); > @@ -1200,8 +1200,6 @@ static int mt9v032_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(subdev); >         v4l2_ctrl_handler_free(&mt9v032->ctrls); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct mt9v032_model_data mt9v032_model_data[] = { > diff --git a/drivers/media/i2c/mt9v111.c > b/drivers/media/i2c/mt9v111.c > index 2dc4a0f24ce8..fe18e5258d7a 100644 > --- a/drivers/media/i2c/mt9v111.c > +++ b/drivers/media/i2c/mt9v111.c > @@ -1238,7 +1238,7 @@ static int mt9v111_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt9v111_remove(struct i2c_client *client) > +static void mt9v111_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mt9v111_dev *mt9v111 = sd_to_mt9v111(sd); > @@ -1253,8 +1253,6 @@ static int mt9v111_remove(struct i2c_client > *client) >   >         mutex_destroy(&mt9v111->pwr_mutex); >         mutex_destroy(&mt9v111->stream_mutex); > - > -       return 0; >  } >   >  static const struct of_device_id mt9v111_of_match[] = { > diff --git a/drivers/media/i2c/noon010pc30.c > b/drivers/media/i2c/noon010pc30.c > index bc5187f46365..ecaf5e9057f1 100644 > --- a/drivers/media/i2c/noon010pc30.c > +++ b/drivers/media/i2c/noon010pc30.c > @@ -789,7 +789,7 @@ static int noon010_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int noon010_remove(struct i2c_client *client) > +static void noon010_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct noon010_info *info = to_noon010(sd); > @@ -797,8 +797,6 @@ static int noon010_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id noon010_id[] = { > diff --git a/drivers/media/i2c/og01a1b.c > b/drivers/media/i2c/og01a1b.c > index 87179fc04e00..35663c10fcd9 100644 > --- a/drivers/media/i2c/og01a1b.c > +++ b/drivers/media/i2c/og01a1b.c > @@ -1015,7 +1015,7 @@ static int og01a1b_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int og01a1b_remove(struct i2c_client *client) > +static void og01a1b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct og01a1b *og01a1b = to_og01a1b(sd); > @@ -1025,8 +1025,6 @@ static int og01a1b_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&og01a1b->mutex); > - > -       return 0; >  } >   >  static int og01a1b_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov02a10.c > b/drivers/media/i2c/ov02a10.c > index 0f08c05333ea..2c1eb724d8e5 100644 > --- a/drivers/media/i2c/ov02a10.c > +++ b/drivers/media/i2c/ov02a10.c > @@ -975,7 +975,7 @@ static int ov02a10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov02a10_remove(struct i2c_client *client) > +static void ov02a10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov02a10 *ov02a10 = to_ov02a10(sd); > @@ -988,8 +988,6 @@ static int ov02a10_remove(struct i2c_client > *client) >                 ov02a10_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); >         mutex_destroy(&ov02a10->mutex); > - > -       return 0; >  } >   >  static const struct of_device_id ov02a10_of_match[] = { > diff --git a/drivers/media/i2c/ov08d10.c > b/drivers/media/i2c/ov08d10.c > index e5ef6466a3ec..c1703596c3dc 100644 > --- a/drivers/media/i2c/ov08d10.c > +++ b/drivers/media/i2c/ov08d10.c > @@ -1415,7 +1415,7 @@ static int ov08d10_get_hwcfg(struct ov08d10 > *ov08d10, struct device *dev) >         return ret; >  } >   > -static int ov08d10_remove(struct i2c_client *client) > +static void ov08d10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov08d10 *ov08d10 = to_ov08d10(sd); > @@ -1425,8 +1425,6 @@ static int ov08d10_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov08d10->mutex); > - > -       return 0; >  } >   >  static int ov08d10_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov13858.c > b/drivers/media/i2c/ov13858.c > index d5fe67c763f7..e618b613e078 100644 > --- a/drivers/media/i2c/ov13858.c > +++ b/drivers/media/i2c/ov13858.c > @@ -1769,7 +1769,7 @@ static int ov13858_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov13858_remove(struct i2c_client *client) > +static void ov13858_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13858 *ov13858 = to_ov13858(sd); > @@ -1779,8 +1779,6 @@ static int ov13858_remove(struct i2c_client > *client) >         ov13858_free_controls(ov13858); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov13858_id_table[] = { > diff --git a/drivers/media/i2c/ov13b10.c > b/drivers/media/i2c/ov13b10.c > index 7caeae641051..549e5d93e568 100644 > --- a/drivers/media/i2c/ov13b10.c > +++ b/drivers/media/i2c/ov13b10.c > @@ -1447,7 +1447,7 @@ static int ov13b10_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov13b10_remove(struct i2c_client *client) > +static void ov13b10_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov13b10 *ov13b = to_ov13b10(sd); > @@ -1457,8 +1457,6 @@ static int ov13b10_remove(struct i2c_client > *client) >         ov13b10_free_controls(ov13b); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov13b10_pm_ops = { > diff --git a/drivers/media/i2c/ov2640.c b/drivers/media/i2c/ov2640.c > index 4b75da55b260..29ed0ef8c033 100644 > --- a/drivers/media/i2c/ov2640.c > +++ b/drivers/media/i2c/ov2640.c > @@ -1271,7 +1271,7 @@ static int ov2640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2640_remove(struct i2c_client *client) > +static void ov2640_remove(struct i2c_client *client) >  { >         struct ov2640_priv       *priv = to_ov2640(client); >   > @@ -1281,7 +1281,6 @@ static int ov2640_remove(struct i2c_client > *client) >         media_entity_cleanup(&priv->subdev.entity); >         v4l2_device_unregister_subdev(&priv->subdev); >         clk_disable_unprepare(priv->clk); > -       return 0; >  } >   >  static const struct i2c_device_id ov2640_id[] = { > diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c > index 13ded5b2aa66..42fc64ada08c 100644 > --- a/drivers/media/i2c/ov2659.c > +++ b/drivers/media/i2c/ov2659.c > @@ -1544,7 +1544,7 @@ static int ov2659_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2659_remove(struct i2c_client *client) > +static void ov2659_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2659 *ov2659 = to_ov2659(sd); > @@ -1558,8 +1558,6 @@ static int ov2659_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov2659_power_off(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov2659_pm_ops = { > diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c > index 906c711f6821..de66d3395a4d 100644 > --- a/drivers/media/i2c/ov2680.c > +++ b/drivers/media/i2c/ov2680.c > @@ -1097,7 +1097,7 @@ static int ov2680_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_dev *sensor = to_ov2680_dev(sd); > @@ -1106,8 +1106,6 @@ static int ov2680_remove(struct i2c_client > *client) >         mutex_destroy(&sensor->lock); >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); > - > -       return 0; >  } >   >  static int __maybe_unused ov2680_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov2685.c b/drivers/media/i2c/ov2685.c > index b6e010ea3249..a3b524f15d89 100644 > --- a/drivers/media/i2c/ov2685.c > +++ b/drivers/media/i2c/ov2685.c > @@ -798,7 +798,7 @@ static int ov2685_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov2685_remove(struct i2c_client *client) > +static void ov2685_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2685 *ov2685 = to_ov2685(sd); > @@ -814,8 +814,6 @@ static int ov2685_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov2685_power_off(ov2685); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c > index d5f0eabf20c6..5d74ad479214 100644 > --- a/drivers/media/i2c/ov2740.c > +++ b/drivers/media/i2c/ov2740.c > @@ -1053,7 +1053,7 @@ static int ov2740_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov2740_remove(struct i2c_client *client) > +static void ov2740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2740 *ov2740 = to_ov2740(sd); > @@ -1063,8 +1063,6 @@ static int ov2740_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov2740->mutex); > - > -       return 0; >  } >   >  static int ov2740_nvmem_read(void *priv, unsigned int off, void > *val, > diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c > index db5a19babe67..7bcfdfdd1248 100644 > --- a/drivers/media/i2c/ov5640.c > +++ b/drivers/media/i2c/ov5640.c > @@ -3180,7 +3180,7 @@ static int ov5640_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5640_remove(struct i2c_client *client) > +static void ov5640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5640_dev *sensor = to_ov5640_dev(sd); > @@ -3189,8 +3189,6 @@ static int ov5640_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor->sd.entity); >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5640_id[] = { > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c > index 562c62f192c4..81e4e87e1821 100644 > --- a/drivers/media/i2c/ov5645.c > +++ b/drivers/media/i2c/ov5645.c > @@ -1256,7 +1256,7 @@ static int ov5645_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5645_remove(struct i2c_client *client) > +static void ov5645_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5645 *ov5645 = to_ov5645(sd); > @@ -1265,8 +1265,6 @@ static int ov5645_remove(struct i2c_client > *client) >         media_entity_cleanup(&ov5645->sd.entity); >         v4l2_ctrl_handler_free(&ov5645->ctrls); >         mutex_destroy(&ov5645->power_lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov5645_id[] = { > diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c > index d346d18ce629..847a7bbb69c5 100644 > --- a/drivers/media/i2c/ov5647.c > +++ b/drivers/media/i2c/ov5647.c > @@ -1448,7 +1448,7 @@ static int ov5647_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5647_remove(struct i2c_client *client) > +static void ov5647_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5647 *sensor = to_sensor(sd); > @@ -1459,8 +1459,6 @@ static int ov5647_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&sensor->lock); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5647_pm_ops = { > diff --git a/drivers/media/i2c/ov5648.c b/drivers/media/i2c/ov5648.c > index dfcd33e9ee13..84604ea7bdf9 100644 > --- a/drivers/media/i2c/ov5648.c > +++ b/drivers/media/i2c/ov5648.c > @@ -2587,7 +2587,7 @@ static int ov5648_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5648_remove(struct i2c_client *client) > +static void ov5648_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov5648_sensor *sensor = ov5648_subdev_sensor(subdev); > @@ -2597,8 +2597,6 @@ static int ov5648_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&sensor->ctrls.handler); >         mutex_destroy(&sensor->mutex); >         media_entity_cleanup(&subdev->entity); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5648_pm_ops = { > diff --git a/drivers/media/i2c/ov5670.c b/drivers/media/i2c/ov5670.c > index 02f75c18e480..bc9fc3bc90c2 100644 > --- a/drivers/media/i2c/ov5670.c > +++ b/drivers/media/i2c/ov5670.c > @@ -2557,7 +2557,7 @@ static int ov5670_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5670_remove(struct i2c_client *client) > +static void ov5670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5670 *ov5670 = to_ov5670(sd); > @@ -2568,8 +2568,6 @@ static int ov5670_remove(struct i2c_client > *client) >         mutex_destroy(&ov5670->mutex); >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5670_pm_ops = { > diff --git a/drivers/media/i2c/ov5675.c b/drivers/media/i2c/ov5675.c > index 82ba9f56baec..94dc8cb7a7c0 100644 > --- a/drivers/media/i2c/ov5675.c > +++ b/drivers/media/i2c/ov5675.c > @@ -1175,7 +1175,7 @@ static int ov5675_check_hwcfg(struct device > *dev) >         return ret; >  } >   > -static int ov5675_remove(struct i2c_client *client) > +static void ov5675_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5675 *ov5675 = to_ov5675(sd); > @@ -1185,8 +1185,6 @@ static int ov5675_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov5675->mutex); > - > -       return 0; >  } >   >  static int ov5675_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov5693.c b/drivers/media/i2c/ov5693.c > index 117ff5403312..5a05356bcfb6 100644 > --- a/drivers/media/i2c/ov5693.c > +++ b/drivers/media/i2c/ov5693.c > @@ -1489,7 +1489,7 @@ static int ov5693_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *ov5693 = to_ov5693_sensor(sd); > @@ -1507,8 +1507,6 @@ static int ov5693_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 ov5693_sensor_powerdown(ov5693); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov5693_pm_ops = { > diff --git a/drivers/media/i2c/ov5695.c b/drivers/media/i2c/ov5695.c > index 910309783885..61906fc54e37 100644 > --- a/drivers/media/i2c/ov5695.c > +++ b/drivers/media/i2c/ov5695.c > @@ -1361,7 +1361,7 @@ static int ov5695_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov5695_remove(struct i2c_client *client) > +static void ov5695_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5695 *ov5695 = to_ov5695(sd); > @@ -1377,8 +1377,6 @@ static int ov5695_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(&client->dev)) >                 __ov5695_power_off(ov5695); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #if IS_ENABLED(CONFIG_OF) > diff --git a/drivers/media/i2c/ov6650.c b/drivers/media/i2c/ov6650.c > index 6458e96d9091..18f041e985b7 100644 > --- a/drivers/media/i2c/ov6650.c > +++ b/drivers/media/i2c/ov6650.c > @@ -1096,13 +1096,12 @@ static int ov6650_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov6650_remove(struct i2c_client *client) > +static void ov6650_remove(struct i2c_client *client) >  { >         struct ov6650 *priv = to_ov6650(client); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id ov6650_id[] = { > diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c > index 0e7be15bc20a..5d837a782ac8 100644 > --- a/drivers/media/i2c/ov7251.c > +++ b/drivers/media/i2c/ov7251.c > @@ -1766,7 +1766,7 @@ static int ov7251_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7251_remove(struct i2c_client *client) > +static void ov7251_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7251 *ov7251 = to_ov7251(sd); > @@ -1780,8 +1780,6 @@ static int ov7251_remove(struct i2c_client > *client) >         if (!pm_runtime_status_suspended(ov7251->dev)) >                 ov7251_set_power_off(ov7251->dev); >         pm_runtime_set_suspended(ov7251->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov7251_pm_ops = { > diff --git a/drivers/media/i2c/ov7640.c b/drivers/media/i2c/ov7640.c > index 977cd2d8ad33..5e2d67f0f9f2 100644 > --- a/drivers/media/i2c/ov7640.c > +++ b/drivers/media/i2c/ov7640.c > @@ -70,13 +70,11 @@ static int ov7640_probe(struct i2c_client > *client, >  } >   >   > -static int ov7640_remove(struct i2c_client *client) > +static void ov7640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov7640_id[] = { > diff --git a/drivers/media/i2c/ov7670.c b/drivers/media/i2c/ov7670.c > index 1be2c0e5bdc1..4b9b156b53c7 100644 > --- a/drivers/media/i2c/ov7670.c > +++ b/drivers/media/i2c/ov7670.c > @@ -2009,7 +2009,7 @@ static int ov7670_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov7670_remove(struct i2c_client *client) > +static void ov7670_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7670_info *info = to_state(sd); > @@ -2017,7 +2017,6 @@ static int ov7670_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&info->hdl); >         media_entity_cleanup(&info->sd.entity); > -       return 0; >  } >   >  static const struct i2c_device_id ov7670_id[] = { > diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c > index 78602a2f70b0..4189e3fc3d53 100644 > --- a/drivers/media/i2c/ov772x.c > +++ b/drivers/media/i2c/ov772x.c > @@ -1521,7 +1521,7 @@ static int ov772x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov772x_remove(struct i2c_client *client) > +static void ov772x_remove(struct i2c_client *client) >  { >         struct ov772x_priv *priv = > to_ov772x(i2c_get_clientdata(client)); >   > @@ -1532,8 +1532,6 @@ static int ov772x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); >         mutex_destroy(&priv->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov772x_id[] = { > diff --git a/drivers/media/i2c/ov7740.c b/drivers/media/i2c/ov7740.c > index 2539cfee85c8..c9fd9b0bc54a 100644 > --- a/drivers/media/i2c/ov7740.c > +++ b/drivers/media/i2c/ov7740.c > @@ -1153,7 +1153,7 @@ static int ov7740_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov7740_remove(struct i2c_client *client) > +static void ov7740_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov7740 *ov7740 = container_of(sd, struct ov7740, > subdev); > @@ -1170,7 +1170,6 @@ static int ov7740_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         ov7740_set_power(ov7740, 0); > -       return 0; >  } >   >  static int __maybe_unused ov7740_runtime_suspend(struct device *dev) > diff --git a/drivers/media/i2c/ov8856.c b/drivers/media/i2c/ov8856.c > index a9728afc81d4..efa18d026ac3 100644 > --- a/drivers/media/i2c/ov8856.c > +++ b/drivers/media/i2c/ov8856.c > @@ -2440,7 +2440,7 @@ static int ov8856_get_hwcfg(struct ov8856 > *ov8856, struct device *dev) >         return ret; >  } >   > -static int ov8856_remove(struct i2c_client *client) > +static void ov8856_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov8856 *ov8856 = to_ov8856(sd); > @@ -2452,8 +2452,6 @@ static int ov8856_remove(struct i2c_client > *client) >         mutex_destroy(&ov8856->mutex); >   >         __ov8856_power_off(ov8856); > - > -       return 0; >  } >   >  static int ov8856_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/ov8865.c b/drivers/media/i2c/ov8865.c > index b8f4f0d3e33d..a233c34b168e 100644 > --- a/drivers/media/i2c/ov8865.c > +++ b/drivers/media/i2c/ov8865.c > @@ -3119,7 +3119,7 @@ static int ov8865_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov8865_remove(struct i2c_client *client) > +static void ov8865_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *subdev = i2c_get_clientdata(client); >         struct ov8865_sensor *sensor = ov8865_subdev_sensor(subdev); > @@ -3131,8 +3131,6 @@ static int ov8865_remove(struct i2c_client > *client) >         media_entity_cleanup(&subdev->entity); >   >         v4l2_fwnode_endpoint_free(&sensor->endpoint); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov8865_pm_ops = { > diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c > index 2e0b315801e5..df144a2f6eda 100644 > --- a/drivers/media/i2c/ov9282.c > +++ b/drivers/media/i2c/ov9282.c > @@ -1091,7 +1091,7 @@ static int ov9282_probe(struct i2c_client > *client) >   * >   * Return: 0 if successful, error code otherwise. >   */ > -static int ov9282_remove(struct i2c_client *client) > +static void ov9282_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9282 *ov9282 = to_ov9282(sd); > @@ -1106,8 +1106,6 @@ static int ov9282_remove(struct i2c_client > *client) >         pm_runtime_set_suspended(&client->dev); >   >         mutex_destroy(&ov9282->mutex); > - > -       return 0; >  } >   >  static const struct dev_pm_ops ov9282_pm_ops = { > diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c > index 9f44ed52d164..8b80be33c5f4 100644 > --- a/drivers/media/i2c/ov9640.c > +++ b/drivers/media/i2c/ov9640.c > @@ -744,15 +744,13 @@ static int ov9640_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ov9640_remove(struct i2c_client *client) > +static void ov9640_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9640_priv *priv = to_ov9640_sensor(sd); >   >         v4l2_async_unregister_subdev(&priv->subdev); >         v4l2_ctrl_handler_free(&priv->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov9640_id[] = { > diff --git a/drivers/media/i2c/ov9650.c b/drivers/media/i2c/ov9650.c > index c313e11a9754..4d458993e6d6 100644 > --- a/drivers/media/i2c/ov9650.c > +++ b/drivers/media/i2c/ov9650.c > @@ -1584,7 +1584,7 @@ static int ov965x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ov965x_remove(struct i2c_client *client) > +static void ov965x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov965x *ov965x = to_ov965x(sd); > @@ -1593,8 +1593,6 @@ static int ov965x_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); >         mutex_destroy(&ov965x->lock); > - > -       return 0; >  } >   >  static const struct i2c_device_id ov965x_id[] = { > diff --git a/drivers/media/i2c/ov9734.c b/drivers/media/i2c/ov9734.c > index df538ceb71c3..8b0a158cb297 100644 > --- a/drivers/media/i2c/ov9734.c > +++ b/drivers/media/i2c/ov9734.c > @@ -930,7 +930,7 @@ static int ov9734_check_hwcfg(struct device *dev) >         return ret; >  } >   > -static int ov9734_remove(struct i2c_client *client) > +static void ov9734_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov9734 *ov9734 = to_ov9734(sd); > @@ -940,8 +940,6 @@ static int ov9734_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         pm_runtime_disable(&client->dev); >         mutex_destroy(&ov9734->mutex); > - > -       return 0; >  } >   >  static int ov9734_probe(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm20.c > b/drivers/media/i2c/rdacm20.c > index 2615ad154f49..a2263fa825b5 100644 > --- a/drivers/media/i2c/rdacm20.c > +++ b/drivers/media/i2c/rdacm20.c > @@ -646,7 +646,7 @@ static int rdacm20_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm20_remove(struct i2c_client *client) > +static void rdacm20_remove(struct i2c_client *client) >  { >         struct rdacm20_device *dev = i2c_to_rdacm20(client); >   > @@ -655,8 +655,6 @@ static int rdacm20_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         media_entity_cleanup(&dev->sd.entity); >         i2c_unregister_device(dev->sensor); > - > -       return 0; >  } >   >  static void rdacm20_shutdown(struct i2c_client *client) > diff --git a/drivers/media/i2c/rdacm21.c > b/drivers/media/i2c/rdacm21.c > index ef31cf5f23ca..9ccc56c30d3b 100644 > --- a/drivers/media/i2c/rdacm21.c > +++ b/drivers/media/i2c/rdacm21.c > @@ -614,7 +614,7 @@ static int rdacm21_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int rdacm21_remove(struct i2c_client *client) > +static void rdacm21_remove(struct i2c_client *client) >  { >         struct rdacm21_device *dev = > sd_to_rdacm21(i2c_get_clientdata(client)); >   > @@ -622,8 +622,6 @@ static int rdacm21_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->ctrls); >         i2c_unregister_device(dev->isp); >         fwnode_handle_put(dev->sd.fwnode); > - > -       return 0; >  } >   >  static const struct of_device_id rdacm21_of_ids[] = { > diff --git a/drivers/media/i2c/rj54n1cb0c.c > b/drivers/media/i2c/rj54n1cb0c.c > index 2e4018c26912..1c3502f34cd3 100644 > --- a/drivers/media/i2c/rj54n1cb0c.c > +++ b/drivers/media/i2c/rj54n1cb0c.c > @@ -1398,7 +1398,7 @@ static int rj54n1_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rj54n1_remove(struct i2c_client *client) > +static void rj54n1_remove(struct i2c_client *client) >  { >         struct rj54n1 *rj54n1 = to_rj54n1(client); >   > @@ -1410,8 +1410,6 @@ static int rj54n1_remove(struct i2c_client > *client) >         clk_put(rj54n1->clk); >         v4l2_ctrl_handler_free(&rj54n1->hdl); >         v4l2_async_unregister_subdev(&rj54n1->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id rj54n1_id[] = { > diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > index e2b88c5e4f98..d96ba58ce1e5 100644 > --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c > +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c > @@ -1770,7 +1770,7 @@ static int s5c73m3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5c73m3_remove(struct i2c_client *client) > +static void s5c73m3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *oif_sd = i2c_get_clientdata(client); >         struct s5c73m3 *state = oif_sd_to_s5c73m3(oif_sd); > @@ -1785,8 +1785,6 @@ static int s5c73m3_remove(struct i2c_client > *client) >         media_entity_cleanup(&sensor_sd->entity); >   >         s5c73m3_unregister_spi_driver(state); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5c73m3_id[] = { > diff --git a/drivers/media/i2c/s5k4ecgx.c > b/drivers/media/i2c/s5k4ecgx.c > index af9a305242cd..3dddcd9dd351 100644 > --- a/drivers/media/i2c/s5k4ecgx.c > +++ b/drivers/media/i2c/s5k4ecgx.c > @@ -996,7 +996,7 @@ static int s5k4ecgx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k4ecgx_remove(struct i2c_client *client) > +static void s5k4ecgx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct s5k4ecgx *priv = to_s5k4ecgx(sd); > @@ -1006,8 +1006,6 @@ static int s5k4ecgx_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&priv->handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k4ecgx_id[] = { > diff --git a/drivers/media/i2c/s5k5baf.c > b/drivers/media/i2c/s5k5baf.c > index 6a5dceb699a8..5c2253ab3b6f 100644 > --- a/drivers/media/i2c/s5k5baf.c > +++ b/drivers/media/i2c/s5k5baf.c > @@ -2018,7 +2018,7 @@ static int s5k5baf_probe(struct i2c_client *c) >         return ret; >  } >   > -static int s5k5baf_remove(struct i2c_client *c) > +static void s5k5baf_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct s5k5baf *state = to_s5k5baf(sd); > @@ -2030,8 +2030,6 @@ static int s5k5baf_remove(struct i2c_client *c) >         sd = &state->cis_sd; >         v4l2_device_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k5baf_id[] = { > diff --git a/drivers/media/i2c/s5k6a3.c b/drivers/media/i2c/s5k6a3.c > index f6ecf6f92bb2..a4efd6d10b43 100644 > --- a/drivers/media/i2c/s5k6a3.c > +++ b/drivers/media/i2c/s5k6a3.c > @@ -354,14 +354,13 @@ static int s5k6a3_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int s5k6a3_remove(struct i2c_client *client) > +static void s5k6a3_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         pm_runtime_disable(&client->dev); >         v4l2_async_unregister_subdev(sd); >         media_entity_cleanup(&sd->entity); > -       return 0; >  } >   >  static const struct i2c_device_id s5k6a3_ids[] = { > diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c > index 105a4b7d8354..059211788a65 100644 > --- a/drivers/media/i2c/s5k6aa.c > +++ b/drivers/media/i2c/s5k6aa.c > @@ -1621,15 +1621,13 @@ static int s5k6aa_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s5k6aa_remove(struct i2c_client *client) > +static void s5k6aa_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); >         media_entity_cleanup(&sd->entity); > - > -       return 0; >  } >   >  static const struct i2c_device_id s5k6aa_id[] = { > diff --git a/drivers/media/i2c/saa6588.c > b/drivers/media/i2c/saa6588.c > index d1e0716bdfff..d6a51beabd02 100644 > --- a/drivers/media/i2c/saa6588.c > +++ b/drivers/media/i2c/saa6588.c > @@ -484,7 +484,7 @@ static int saa6588_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6588_remove(struct i2c_client *client) > +static void saa6588_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa6588 *s = to_saa6588(sd); > @@ -492,8 +492,6 @@ static int saa6588_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >   >         cancel_delayed_work_sync(&s->work); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa6752hs.c > b/drivers/media/i2c/saa6752hs.c > index a7f043cad149..5928cc6f4595 100644 > --- a/drivers/media/i2c/saa6752hs.c > +++ b/drivers/media/i2c/saa6752hs.c > @@ -764,13 +764,12 @@ static int saa6752hs_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa6752hs_remove(struct i2c_client *client) > +static void saa6752hs_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id saa6752hs_id[] = { > diff --git a/drivers/media/i2c/saa7110.c > b/drivers/media/i2c/saa7110.c > index 0c7a9ce0a693..5067525d8b11 100644 > --- a/drivers/media/i2c/saa7110.c > +++ b/drivers/media/i2c/saa7110.c > @@ -428,14 +428,13 @@ static int saa7110_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7110_remove(struct i2c_client *client) > +static void saa7110_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7110 *decoder = to_saa7110(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7115.c > b/drivers/media/i2c/saa7115.c > index 15ff80e6301e..86e70a980218 100644 > --- a/drivers/media/i2c/saa7115.c > +++ b/drivers/media/i2c/saa7115.c > @@ -1927,13 +1927,12 @@ static int saa711x_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa711x_remove(struct i2c_client *client) > +static void saa711x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id saa711x_id[] = { > diff --git a/drivers/media/i2c/saa7127.c > b/drivers/media/i2c/saa7127.c > index 891192f6412a..78c9388c2ea1 100644 > --- a/drivers/media/i2c/saa7127.c > +++ b/drivers/media/i2c/saa7127.c > @@ -785,14 +785,13 @@ static int saa7127_probe(struct i2c_client > *client, >   >  /* ----------------------------------------------------------------- > ------ */ >   > -static int saa7127_remove(struct i2c_client *client) > +static void saa7127_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         /* Turn off TV output */ >         saa7127_set_video_enable(sd, 0); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa717x.c > b/drivers/media/i2c/saa717x.c > index adf905360171..4f3d1b432a4e 100644 > --- a/drivers/media/i2c/saa717x.c > +++ b/drivers/media/i2c/saa717x.c > @@ -1324,13 +1324,12 @@ static int saa717x_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa717x_remove(struct i2c_client *client) > +static void saa717x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/saa7185.c > b/drivers/media/i2c/saa7185.c > index 7a04422df8c8..266462325d30 100644 > --- a/drivers/media/i2c/saa7185.c > +++ b/drivers/media/i2c/saa7185.c > @@ -322,7 +322,7 @@ static int saa7185_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int saa7185_remove(struct i2c_client *client) > +static void saa7185_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7185 *encoder = to_saa7185(sd); > @@ -330,7 +330,6 @@ static int saa7185_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         /* SW: output off is active */ >         saa7185_write(sd, 0x61, (encoder->reg[0x61]) | 0x40); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sony-btf-mpx.c > b/drivers/media/i2c/sony-btf-mpx.c > index ad239280c42e..927a9ec41463 100644 > --- a/drivers/media/i2c/sony-btf-mpx.c > +++ b/drivers/media/i2c/sony-btf-mpx.c > @@ -357,13 +357,11 @@ static int sony_btf_mpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sony_btf_mpx_remove(struct i2c_client *client) > +static void sony_btf_mpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/sr030pc30.c > b/drivers/media/i2c/sr030pc30.c > index 19c0252df2f1..ff18693beb5c 100644 > --- a/drivers/media/i2c/sr030pc30.c > +++ b/drivers/media/i2c/sr030pc30.c > @@ -732,13 +732,12 @@ static int sr030pc30_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int sr030pc30_remove(struct i2c_client *client) > +static void sr030pc30_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id sr030pc30_id[] = { > diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st- > mipid02.c > index ef976d085d72..0389223a61f7 100644 > --- a/drivers/media/i2c/st-mipid02.c > +++ b/drivers/media/i2c/st-mipid02.c > @@ -1041,7 +1041,7 @@ static int mipid02_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mipid02_remove(struct i2c_client *client) > +static void mipid02_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct mipid02_dev *bridge = to_mipid02_dev(sd); > @@ -1052,8 +1052,6 @@ static int mipid02_remove(struct i2c_client > *client) >         mipid02_set_power_off(bridge); >         media_entity_cleanup(&bridge->sd.entity); >         mutex_destroy(&bridge->lock); > - > -       return 0; >  } >   >  static const struct of_device_id mipid02_dt_ids[] = { > diff --git a/drivers/media/i2c/tc358743.c > b/drivers/media/i2c/tc358743.c > index e18b8947ad7e..d99eedbdf011 100644 > --- a/drivers/media/i2c/tc358743.c > +++ b/drivers/media/i2c/tc358743.c > @@ -2169,7 +2169,7 @@ static int tc358743_probe(struct i2c_client > *client) >         return err; >  } >   > -static int tc358743_remove(struct i2c_client *client) > +static void tc358743_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tc358743_state *state = to_state(sd); > @@ -2185,8 +2185,6 @@ static int tc358743_remove(struct i2c_client > *client) >         mutex_destroy(&state->confctl_mutex); >         media_entity_cleanup(&sd->entity); >         v4l2_ctrl_handler_free(&state->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id tc358743_id[] = { > diff --git a/drivers/media/i2c/tda1997x.c > b/drivers/media/i2c/tda1997x.c > index 8fafce26d62f..47d60f9a656f 100644 > --- a/drivers/media/i2c/tda1997x.c > +++ b/drivers/media/i2c/tda1997x.c > @@ -2805,7 +2805,7 @@ static int tda1997x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda1997x_remove(struct i2c_client *client) > +static void tda1997x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda1997x_state *state = to_state(sd); > @@ -2827,8 +2827,6 @@ static int tda1997x_remove(struct i2c_client > *client) >         mutex_destroy(&state->lock); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver tda1997x_i2c_driver = { > diff --git a/drivers/media/i2c/tda7432.c > b/drivers/media/i2c/tda7432.c > index cbdc9be0a597..11e918311b13 100644 > --- a/drivers/media/i2c/tda7432.c > +++ b/drivers/media/i2c/tda7432.c > @@ -390,7 +390,7 @@ static int tda7432_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda7432_remove(struct i2c_client *client) > +static void tda7432_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tda7432 *t = to_state(sd); > @@ -398,7 +398,6 @@ static int tda7432_remove(struct i2c_client > *client) >         tda7432_set(sd); >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&t->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tda7432_id[] = { > diff --git a/drivers/media/i2c/tda9840.c > b/drivers/media/i2c/tda9840.c > index 8c6dfe746b20..aaa74944fc7c 100644 > --- a/drivers/media/i2c/tda9840.c > +++ b/drivers/media/i2c/tda9840.c > @@ -175,12 +175,11 @@ static int tda9840_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tda9840_remove(struct i2c_client *client) > +static void tda9840_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tda9840_id[] = { > diff --git a/drivers/media/i2c/tea6415c.c > b/drivers/media/i2c/tea6415c.c > index 67378dbcc74b..50e74314f315 100644 > --- a/drivers/media/i2c/tea6415c.c > +++ b/drivers/media/i2c/tea6415c.c > @@ -134,12 +134,11 @@ static int tea6415c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6415c_remove(struct i2c_client *client) > +static void tea6415c_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6415c_id[] = { > diff --git a/drivers/media/i2c/tea6420.c > b/drivers/media/i2c/tea6420.c > index 712141b261ed..246f2b10ccc7 100644 > --- a/drivers/media/i2c/tea6420.c > +++ b/drivers/media/i2c/tea6420.c > @@ -116,12 +116,11 @@ static int tea6420_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tea6420_remove(struct i2c_client *client) > +static void tea6420_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id tea6420_id[] = { > diff --git a/drivers/media/i2c/ths7303.c > b/drivers/media/i2c/ths7303.c > index 8206bf7a5a8f..2a0f9a3d1a66 100644 > --- a/drivers/media/i2c/ths7303.c > +++ b/drivers/media/i2c/ths7303.c > @@ -358,13 +358,11 @@ static int ths7303_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ths7303_remove(struct i2c_client *client) > +static void ths7303_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths7303_id[] = { > diff --git a/drivers/media/i2c/ths8200.c > b/drivers/media/i2c/ths8200.c > index c52fe84cba1b..081ef5a4b950 100644 > --- a/drivers/media/i2c/ths8200.c > +++ b/drivers/media/i2c/ths8200.c > @@ -468,7 +468,7 @@ static int ths8200_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int ths8200_remove(struct i2c_client *client) > +static void ths8200_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ths8200_state *decoder = to_state(sd); > @@ -478,8 +478,6 @@ static int ths8200_remove(struct i2c_client > *client) >   >         ths8200_s_power(sd, false); >         v4l2_async_unregister_subdev(&decoder->sd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ths8200_id[] = { > diff --git a/drivers/media/i2c/tlv320aic23b.c > b/drivers/media/i2c/tlv320aic23b.c > index e4c21990fea9..937fa1dbaecb 100644 > --- a/drivers/media/i2c/tlv320aic23b.c > +++ b/drivers/media/i2c/tlv320aic23b.c > @@ -177,14 +177,13 @@ static int tlv320aic23b_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tlv320aic23b_remove(struct i2c_client *client) > +static void tlv320aic23b_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tlv320aic23b_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvaudio.c > b/drivers/media/i2c/tvaudio.c > index e6796e94dadf..9f1ed078b661 100644 > --- a/drivers/media/i2c/tvaudio.c > +++ b/drivers/media/i2c/tvaudio.c > @@ -2065,7 +2065,7 @@ static int tvaudio_probe(struct i2c_client > *client, const struct i2c_device_id * >         return 0; >  } >   > -static int tvaudio_remove(struct i2c_client *client) > +static void tvaudio_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct CHIPSTATE *chip = to_state(sd); > @@ -2079,7 +2079,6 @@ static int tvaudio_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&chip->hdl); > -       return 0; >  } >   >  /* This driver supports many devices and the idea is to let the > driver > diff --git a/drivers/media/i2c/tvp514x.c > b/drivers/media/i2c/tvp514x.c > index cee60f945036..a746d96875f9 100644 > --- a/drivers/media/i2c/tvp514x.c > +++ b/drivers/media/i2c/tvp514x.c > @@ -1121,7 +1121,7 @@ tvp514x_probe(struct i2c_client *client, const > struct i2c_device_id *id) >   * Unregister decoder as an i2c client device and V4L2 >   * device. Complement of tvp514x_probe(). >   */ > -static int tvp514x_remove(struct i2c_client *client) > +static void tvp514x_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tvp514x_decoder *decoder = to_decoder(sd); > @@ -1129,7 +1129,6 @@ static int tvp514x_remove(struct i2c_client > *client) >         v4l2_async_unregister_subdev(&decoder->sd); >         media_entity_cleanup(&decoder->sd.entity); >         v4l2_ctrl_handler_free(&decoder->hdl); > -       return 0; >  } >  /* TVP5146 Init/Power on Sequence */ >  static const struct tvp514x_reg tvp5146_init_reg_seq[] = { > diff --git a/drivers/media/i2c/tvp5150.c > b/drivers/media/i2c/tvp5150.c > index 65472438444b..de21e67c0709 100644 > --- a/drivers/media/i2c/tvp5150.c > +++ b/drivers/media/i2c/tvp5150.c > @@ -2230,7 +2230,7 @@ static int tvp5150_probe(struct i2c_client *c) >         return res; >  } >   > -static int tvp5150_remove(struct i2c_client *c) > +static void tvp5150_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp5150 *decoder = to_tvp5150(sd); > @@ -2250,8 +2250,6 @@ static int tvp5150_remove(struct i2c_client *c) >         v4l2_ctrl_handler_free(&decoder->hdl); >         pm_runtime_disable(&c->dev); >         pm_runtime_set_suspended(&c->dev); > - > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tvp7002.c > b/drivers/media/i2c/tvp7002.c > index 2de18833b07b..4ccd218f5584 100644 > --- a/drivers/media/i2c/tvp7002.c > +++ b/drivers/media/i2c/tvp7002.c > @@ -1044,7 +1044,7 @@ static int tvp7002_probe(struct i2c_client *c) >   * Reset the TVP7002 device >   * Returns zero. >   */ > -static int tvp7002_remove(struct i2c_client *c) > +static void tvp7002_remove(struct i2c_client *c) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(c); >         struct tvp7002 *device = to_tvp7002(sd); > @@ -1056,7 +1056,6 @@ static int tvp7002_remove(struct i2c_client *c) >         media_entity_cleanup(&device->sd.entity); >  #endif >         v4l2_ctrl_handler_free(&device->hdl); > -       return 0; >  } >   >  /* I2C Device ID table */ > diff --git a/drivers/media/i2c/tw2804.c b/drivers/media/i2c/tw2804.c > index cd05f1ff504d..c7c8dfe8a8a8 100644 > --- a/drivers/media/i2c/tw2804.c > +++ b/drivers/media/i2c/tw2804.c > @@ -405,14 +405,13 @@ static int tw2804_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw2804_remove(struct i2c_client *client) > +static void tw2804_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct tw2804 *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id tw2804_id[] = { > diff --git a/drivers/media/i2c/tw9903.c b/drivers/media/i2c/tw9903.c > index f8e3ab4909d8..d7eef7986b75 100644 > --- a/drivers/media/i2c/tw9903.c > +++ b/drivers/media/i2c/tw9903.c > @@ -235,13 +235,12 @@ static int tw9903_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9903_remove(struct i2c_client *client) > +static void tw9903_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9906.c b/drivers/media/i2c/tw9906.c > index c528eb01fed0..549ad8f72f12 100644 > --- a/drivers/media/i2c/tw9906.c > +++ b/drivers/media/i2c/tw9906.c > @@ -203,13 +203,12 @@ static int tw9906_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tw9906_remove(struct i2c_client *client) > +static void tw9906_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&to_state(sd)->hdl); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/tw9910.c b/drivers/media/i2c/tw9910.c > index 09f5b3986928..853b5acead32 100644 > --- a/drivers/media/i2c/tw9910.c > +++ b/drivers/media/i2c/tw9910.c > @@ -993,7 +993,7 @@ static int tw9910_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tw9910_remove(struct i2c_client *client) > +static void tw9910_remove(struct i2c_client *client) >  { >         struct tw9910_priv *priv = to_tw9910(client); >   > @@ -1001,8 +1001,6 @@ static int tw9910_remove(struct i2c_client > *client) >                 gpiod_put(priv->pdn_gpio); >         clk_put(priv->clk); >         v4l2_async_unregister_subdev(&priv->subdev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tw9910_id[] = { > diff --git a/drivers/media/i2c/uda1342.c > b/drivers/media/i2c/uda1342.c > index b0a9c6d7163f..d0659c4392f2 100644 > --- a/drivers/media/i2c/uda1342.c > +++ b/drivers/media/i2c/uda1342.c > @@ -72,12 +72,11 @@ static int uda1342_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int uda1342_remove(struct i2c_client *client) > +static void uda1342_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  static const struct i2c_device_id uda1342_id[] = { > diff --git a/drivers/media/i2c/upd64031a.c > b/drivers/media/i2c/upd64031a.c > index ef35c6574785..4de26ed2ba00 100644 > --- a/drivers/media/i2c/upd64031a.c > +++ b/drivers/media/i2c/upd64031a.c > @@ -210,12 +210,11 @@ static int upd64031a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64031a_remove(struct i2c_client *client) > +static void upd64031a_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/upd64083.c > b/drivers/media/i2c/upd64083.c > index d6a1698caa2a..2bfd5443d406 100644 > --- a/drivers/media/i2c/upd64083.c > +++ b/drivers/media/i2c/upd64083.c > @@ -181,12 +181,11 @@ static int upd64083_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int upd64083_remove(struct i2c_client *client) > +static void upd64083_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video- > i2c.c > index e08e3579c0a1..f15ef2d13059 100644 > --- a/drivers/media/i2c/video-i2c.c > +++ b/drivers/media/i2c/video-i2c.c > @@ -895,7 +895,7 @@ static int video_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int video_i2c_remove(struct i2c_client *client) > +static void video_i2c_remove(struct i2c_client *client) >  { >         struct video_i2c_data *data = i2c_get_clientdata(client); >   > @@ -908,8 +908,6 @@ static int video_i2c_remove(struct i2c_client > *client) >                 data->chip->set_power(data, false); >   >         video_unregister_device(&data->vdev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/media/i2c/vp27smpx.c > b/drivers/media/i2c/vp27smpx.c > index 492af8749fca..c832edad5fa7 100644 > --- a/drivers/media/i2c/vp27smpx.c > +++ b/drivers/media/i2c/vp27smpx.c > @@ -163,12 +163,11 @@ static int vp27smpx_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vp27smpx_remove(struct i2c_client *client) > +static void vp27smpx_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); > -       return 0; >  } >   >  /* ----------------------------------------------------------------- > ------ */ > diff --git a/drivers/media/i2c/vpx3220.c > b/drivers/media/i2c/vpx3220.c > index 8be03fe5928c..b481ec196b88 100644 > --- a/drivers/media/i2c/vpx3220.c > +++ b/drivers/media/i2c/vpx3220.c > @@ -526,15 +526,13 @@ static int vpx3220_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int vpx3220_remove(struct i2c_client *client) > +static void vpx3220_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct vpx3220 *decoder = to_vpx3220(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&decoder->hdl); > - > -       return 0; >  } >   >  static const struct i2c_device_id vpx3220_id[] = { > diff --git a/drivers/media/i2c/vs6624.c b/drivers/media/i2c/vs6624.c > index 29003dec6f2d..d496bb45f201 100644 > --- a/drivers/media/i2c/vs6624.c > +++ b/drivers/media/i2c/vs6624.c > @@ -824,13 +824,12 @@ static int vs6624_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int vs6624_remove(struct i2c_client *client) > +static void vs6624_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > -       return 0; >  } >   >  static const struct i2c_device_id vs6624_id[] = { > diff --git a/drivers/media/i2c/wm8739.c b/drivers/media/i2c/wm8739.c > index ed533834db54..180b35347521 100644 > --- a/drivers/media/i2c/wm8739.c > +++ b/drivers/media/i2c/wm8739.c > @@ -234,14 +234,13 @@ static int wm8739_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8739_remove(struct i2c_client *client) > +static void wm8739_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8739_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8739_id[] = { > diff --git a/drivers/media/i2c/wm8775.c b/drivers/media/i2c/wm8775.c > index d4c83c39892a..8ff97867d3cd 100644 > --- a/drivers/media/i2c/wm8775.c > +++ b/drivers/media/i2c/wm8775.c > @@ -280,14 +280,13 @@ static int wm8775_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int wm8775_remove(struct i2c_client *client) > +static void wm8775_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct wm8775_state *state = to_state(sd); >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); > -       return 0; >  } >   >  static const struct i2c_device_id wm8775_id[] = { > diff --git a/drivers/media/radio/radio-tea5764.c > b/drivers/media/radio/radio-tea5764.c > index 877a24e5c577..abda40e81612 100644 > --- a/drivers/media/radio/radio-tea5764.c > +++ b/drivers/media/radio/radio-tea5764.c > @@ -487,7 +487,7 @@ static int tea5764_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tea5764_i2c_remove(struct i2c_client *client) > +static void tea5764_i2c_remove(struct i2c_client *client) >  { >         struct tea5764_device *radio = i2c_get_clientdata(client); >   > @@ -499,7 +499,6 @@ static int tea5764_i2c_remove(struct i2c_client > *client) >                 v4l2_device_unregister(&radio->v4l2_dev); >                 kfree(radio); >         } > -       return 0; >  } >   >  /* I2C subsystem interface */ > diff --git a/drivers/media/radio/saa7706h.c > b/drivers/media/radio/saa7706h.c > index adb66f869dd2..f9e990a9c3ef 100644 > --- a/drivers/media/radio/saa7706h.c > +++ b/drivers/media/radio/saa7706h.c > @@ -384,7 +384,7 @@ static int saa7706h_probe(struct i2c_client > *client, >         return err; >  } >   > -static int saa7706h_remove(struct i2c_client *client) > +static void saa7706h_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct saa7706h_state *state = to_state(sd); > @@ -393,7 +393,6 @@ static int saa7706h_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id saa7706h_id[] = { > diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c > b/drivers/media/radio/si470x/radio-si470x-i2c.c > index 59b3d77e282d..a6ad926c2b4e 100644 > --- a/drivers/media/radio/si470x/radio-si470x-i2c.c > +++ b/drivers/media/radio/si470x/radio-si470x-i2c.c > @@ -461,7 +461,7 @@ static int si470x_i2c_probe(struct i2c_client > *client) >  /* >   * si470x_i2c_remove - remove the device >   */ > -static int si470x_i2c_remove(struct i2c_client *client) > +static void si470x_i2c_remove(struct i2c_client *client) >  { >         struct si470x_device *radio = i2c_get_clientdata(client); >   > @@ -472,7 +472,6 @@ static int si470x_i2c_remove(struct i2c_client > *client) >   >         v4l2_ctrl_handler_free(&radio->hdl); >         v4l2_device_unregister(&radio->v4l2_dev); > -       return 0; >  } >   >   > diff --git a/drivers/media/radio/si4713/si4713.c > b/drivers/media/radio/si4713/si4713.c > index adbf43ff6a21..2aec642133a1 100644 > --- a/drivers/media/radio/si4713/si4713.c > +++ b/drivers/media/radio/si4713/si4713.c > @@ -1623,7 +1623,7 @@ static int si4713_probe(struct i2c_client > *client) >  } >   >  /* si4713_remove - remove the device */ > -static int si4713_remove(struct i2c_client *client) > +static void si4713_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct si4713_device *sdev = to_si4713_device(sd); > @@ -1635,8 +1635,6 @@ static int si4713_remove(struct i2c_client > *client) >   >         v4l2_device_unregister_subdev(sd); >         v4l2_ctrl_handler_free(sd->ctrl_handler); > - > -       return 0; >  } >   >  /* si4713_i2c_driver - i2c driver interface */ > diff --git a/drivers/media/radio/tef6862.c > b/drivers/media/radio/tef6862.c > index d8810492db4f..7b0870a9785b 100644 > --- a/drivers/media/radio/tef6862.c > +++ b/drivers/media/radio/tef6862.c > @@ -165,13 +165,12 @@ static int tef6862_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int tef6862_remove(struct i2c_client *client) > +static void tef6862_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >   >         v4l2_device_unregister_subdev(sd); >         kfree(to_state(sd)); > -       return 0; >  } >   >  static const struct i2c_device_id tef6862_id[] = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_demod.c > b/drivers/media/test-drivers/vidtv/vidtv_demod.c > index b7823d97b30d..e7959ab1add8 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_demod.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_demod.c > @@ -438,13 +438,11 @@ static int vidtv_demod_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_demod_i2c_remove(struct i2c_client *client) > +static void vidtv_demod_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_demod_state *state = i2c_get_clientdata(client); >   >         kfree(state); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_demod_i2c_driver = { > diff --git a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > index 14b6bc902ee1..aabc97ed736b 100644 > --- a/drivers/media/test-drivers/vidtv/vidtv_tuner.c > +++ b/drivers/media/test-drivers/vidtv/vidtv_tuner.c > @@ -414,13 +414,11 @@ static int vidtv_tuner_i2c_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int vidtv_tuner_i2c_remove(struct i2c_client *client) > +static void vidtv_tuner_i2c_remove(struct i2c_client *client) >  { >         struct vidtv_tuner_dev *tuner_dev = > i2c_get_clientdata(client); >   >         kfree(tuner_dev); > - > -       return 0; >  } >   >  static struct i2c_driver vidtv_tuner_i2c_driver = { > diff --git a/drivers/media/tuners/e4000.c > b/drivers/media/tuners/e4000.c > index a3a8d051dc6c..61ae884ea59a 100644 > --- a/drivers/media/tuners/e4000.c > +++ b/drivers/media/tuners/e4000.c > @@ -706,7 +706,7 @@ static int e4000_probe(struct i2c_client *client, >         return ret; >  } >   > -static int e4000_remove(struct i2c_client *client) > +static void e4000_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct e4000_dev *dev = container_of(sd, struct e4000_dev, > sd); > @@ -717,8 +717,6 @@ static int e4000_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id e4000_id_table[] = { > diff --git a/drivers/media/tuners/fc2580.c > b/drivers/media/tuners/fc2580.c > index 1b5961bdf2d5..f30932e1a0f3 100644 > --- a/drivers/media/tuners/fc2580.c > +++ b/drivers/media/tuners/fc2580.c > @@ -588,7 +588,7 @@ static int fc2580_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fc2580_remove(struct i2c_client *client) > +static void fc2580_remove(struct i2c_client *client) >  { >         struct fc2580_dev *dev = i2c_get_clientdata(client); >   > @@ -598,7 +598,6 @@ static int fc2580_remove(struct i2c_client > *client) >         v4l2_ctrl_handler_free(&dev->hdl); >  #endif >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id fc2580_id_table[] = { > diff --git a/drivers/media/tuners/m88rs6000t.c > b/drivers/media/tuners/m88rs6000t.c > index 8647c50b66e5..e32e3e9daa15 100644 > --- a/drivers/media/tuners/m88rs6000t.c > +++ b/drivers/media/tuners/m88rs6000t.c > @@ -697,7 +697,7 @@ static int m88rs6000t_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int m88rs6000t_remove(struct i2c_client *client) > +static void m88rs6000t_remove(struct i2c_client *client) >  { >         struct m88rs6000t_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -707,8 +707,6 @@ static int m88rs6000t_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id m88rs6000t_id[] = { > diff --git a/drivers/media/tuners/mt2060.c > b/drivers/media/tuners/mt2060.c > index 204e6186bf71..322c806228a5 100644 > --- a/drivers/media/tuners/mt2060.c > +++ b/drivers/media/tuners/mt2060.c > @@ -509,11 +509,9 @@ static int mt2060_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int mt2060_remove(struct i2c_client *client) > +static void mt2060_remove(struct i2c_client *client) >  { >         dev_dbg(&client->dev, "\n"); > - > -       return 0; >  } >   >  static const struct i2c_device_id mt2060_id_table[] = { > diff --git a/drivers/media/tuners/mxl301rf.c > b/drivers/media/tuners/mxl301rf.c > index c628435a1b06..6422056185a9 100644 > --- a/drivers/media/tuners/mxl301rf.c > +++ b/drivers/media/tuners/mxl301rf.c > @@ -307,14 +307,13 @@ static int mxl301rf_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int mxl301rf_remove(struct i2c_client *client) > +static void mxl301rf_remove(struct i2c_client *client) >  { >         struct mxl301rf_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1b0004.c > b/drivers/media/tuners/qm1d1b0004.c > index 008ad870c00f..9cba0893207c 100644 > --- a/drivers/media/tuners/qm1d1b0004.c > +++ b/drivers/media/tuners/qm1d1b0004.c > @@ -232,14 +232,13 @@ qm1d1b0004_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int qm1d1b0004_remove(struct i2c_client *client) > +static void qm1d1b0004_remove(struct i2c_client *client) >  { >         struct dvb_frontend *fe; >   >         fe = i2c_get_clientdata(client); >         kfree(fe->tuner_priv); >         fe->tuner_priv = NULL; > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/qm1d1c0042.c > b/drivers/media/tuners/qm1d1c0042.c > index 53aa2558f71e..2d60bf501fb5 100644 > --- a/drivers/media/tuners/qm1d1c0042.c > +++ b/drivers/media/tuners/qm1d1c0042.c > @@ -424,14 +424,13 @@ static int qm1d1c0042_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int qm1d1c0042_remove(struct i2c_client *client) > +static void qm1d1c0042_remove(struct i2c_client *client) >  { >         struct qm1d1c0042_state *state; >   >         state = cfg_to_state(i2c_get_clientdata(client)); >         state->cfg.fe->tuner_priv = NULL; >         kfree(state); > -       return 0; >  } >   >   > diff --git a/drivers/media/tuners/si2157.c > b/drivers/media/tuners/si2157.c > index 0de587b412d4..476b32c04c20 100644 > --- a/drivers/media/tuners/si2157.c > +++ b/drivers/media/tuners/si2157.c > @@ -951,7 +951,7 @@ static int si2157_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int si2157_remove(struct i2c_client *client) > +static void si2157_remove(struct i2c_client *client) >  { >         struct si2157_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -969,8 +969,6 @@ static int si2157_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/media/tuners/tda18212.c > b/drivers/media/tuners/tda18212.c > index bf48f1cd83d2..eb97711c9c68 100644 > --- a/drivers/media/tuners/tda18212.c > +++ b/drivers/media/tuners/tda18212.c > @@ -242,7 +242,7 @@ static int tda18212_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18212_remove(struct i2c_client *client) > +static void tda18212_remove(struct i2c_client *client) >  { >         struct tda18212_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->cfg.fe; > @@ -252,8 +252,6 @@ static int tda18212_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18212_id[] = { > diff --git a/drivers/media/tuners/tda18250.c > b/drivers/media/tuners/tda18250.c > index 8a5781b966ee..e404a5afad4c 100644 > --- a/drivers/media/tuners/tda18250.c > +++ b/drivers/media/tuners/tda18250.c > @@ -856,7 +856,7 @@ static int tda18250_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tda18250_remove(struct i2c_client *client) > +static void tda18250_remove(struct i2c_client *client) >  { >         struct tda18250_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -866,8 +866,6 @@ static int tda18250_remove(struct i2c_client > *client) >         memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); >         fe->tuner_priv = NULL; >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id tda18250_id_table[] = { > diff --git a/drivers/media/tuners/tua9001.c > b/drivers/media/tuners/tua9001.c > index af7d5ea1f77e..d141d000b819 100644 > --- a/drivers/media/tuners/tua9001.c > +++ b/drivers/media/tuners/tua9001.c > @@ -227,7 +227,7 @@ static int tua9001_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tua9001_remove(struct i2c_client *client) > +static void tua9001_remove(struct i2c_client *client) >  { >         struct tua9001_dev *dev = i2c_get_clientdata(client); >         struct dvb_frontend *fe = dev->fe; > @@ -243,7 +243,6 @@ static int tua9001_remove(struct i2c_client > *client) >                         dev_err(&client->dev, "Tuner disable failed > (%pe)\n", ERR_PTR(ret)); >         } >         kfree(dev); > -       return 0; >  } >   >  static const struct i2c_device_id tua9001_id_table[] = { > diff --git a/drivers/media/usb/go7007/s2250-board.c > b/drivers/media/usb/go7007/s2250-board.c > index 1fa6f10ee157..2f45188bf9d4 100644 > --- a/drivers/media/usb/go7007/s2250-board.c > +++ b/drivers/media/usb/go7007/s2250-board.c > @@ -601,7 +601,7 @@ static int s2250_probe(struct i2c_client *client, >         return err; >  } >   > -static int s2250_remove(struct i2c_client *client) > +static void s2250_remove(struct i2c_client *client) >  { >         struct s2250 *state = to_state(i2c_get_clientdata(client)); >   > @@ -609,7 +609,6 @@ static int s2250_remove(struct i2c_client > *client) >         v4l2_device_unregister_subdev(&state->sd); >         v4l2_ctrl_handler_free(&state->hdl); >         kfree(state); > -       return 0; >  } >   >  static const struct i2c_device_id s2250_id[] = { > diff --git a/drivers/media/v4l2-core/tuner-core.c > b/drivers/media/v4l2-core/tuner-core.c > index 2d47c10de062..33162dc1daf6 100644 > --- a/drivers/media/v4l2-core/tuner-core.c > +++ b/drivers/media/v4l2-core/tuner-core.c > @@ -779,7 +779,7 @@ static int tuner_probe(struct i2c_client *client, >   * @client:    i2c_client descriptor >   */ >   > -static int tuner_remove(struct i2c_client *client) > +static void tuner_remove(struct i2c_client *client) >  { >         struct tuner *t = to_tuner(i2c_get_clientdata(client)); >   > @@ -789,7 +789,6 @@ static int tuner_remove(struct i2c_client > *client) >   >         list_del(&t->list); >         kfree(t); > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c > index eaf9845633b4..a30e47b74327 100644 > --- a/drivers/mfd/88pm800.c > +++ b/drivers/mfd/88pm800.c > @@ -583,7 +583,7 @@ static int pm800_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm800_remove(struct i2c_client *client) > +static void pm800_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -592,8 +592,6 @@ static int pm800_remove(struct i2c_client > *client) >   >         pm800_pages_exit(chip); >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm800_driver = { > diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c > index ada6c513302b..10d3637840c8 100644 > --- a/drivers/mfd/88pm805.c > +++ b/drivers/mfd/88pm805.c > @@ -239,7 +239,7 @@ static int pm805_probe(struct i2c_client *client, >         return ret; >  } >   > -static int pm805_remove(struct i2c_client *client) > +static void pm805_remove(struct i2c_client *client) >  { >         struct pm80x_chip *chip = i2c_get_clientdata(client); >   > @@ -247,8 +247,6 @@ static int pm805_remove(struct i2c_client > *client) >         device_irq_exit_805(chip); >   >         pm80x_deinit(); > - > -       return 0; >  } >   >  static struct i2c_driver pm805_driver = { > diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x- > core.c > index b1e829ea909b..5dc86dd66202 100644 > --- a/drivers/mfd/88pm860x-core.c > +++ b/drivers/mfd/88pm860x-core.c > @@ -1201,7 +1201,7 @@ static int pm860x_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pm860x_remove(struct i2c_client *client) > +static void pm860x_remove(struct i2c_client *client) >  { >         struct pm860x_chip *chip = i2c_get_clientdata(client); >   > @@ -1210,7 +1210,6 @@ static int pm860x_remove(struct i2c_client > *client) >                 regmap_exit(chip->regmap_companion); >                 i2c_unregister_device(chip->companion); >         } > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/acer-ec-a500.c b/drivers/mfd/acer-ec-a500.c > index 80c2fdd14fc4..7fd8b9988075 100644 > --- a/drivers/mfd/acer-ec-a500.c > +++ b/drivers/mfd/acer-ec-a500.c > @@ -169,7 +169,7 @@ static int a500_ec_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int a500_ec_remove(struct i2c_client *client) > +static void a500_ec_remove(struct i2c_client *client) >  { >         if (of_device_is_system_power_controller(client- > >dev.of_node)) { >                 if (pm_power_off == a500_ec_poweroff) > @@ -177,8 +177,6 @@ static int a500_ec_remove(struct i2c_client > *client) >   >                 unregister_restart_handler(&a500_ec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id a500_ec_match[] = { > diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c > index 6d83e6b9a692..bfc7cf56ff2c 100644 > --- a/drivers/mfd/arizona-i2c.c > +++ b/drivers/mfd/arizona-i2c.c > @@ -84,13 +84,11 @@ static int arizona_i2c_probe(struct i2c_client > *i2c, >         return arizona_dev_init(arizona); >  } >   > -static int arizona_i2c_remove(struct i2c_client *i2c) > +static void arizona_i2c_remove(struct i2c_client *i2c) >  { >         struct arizona *arizona = dev_get_drvdata(&i2c->dev); >   >         arizona_dev_exit(arizona); > - > -       return 0; >  } >   >  static const struct i2c_device_id arizona_i2c_id[] = { > diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c > index 00ab48018d8d..8fd6727dc30a 100644 > --- a/drivers/mfd/axp20x-i2c.c > +++ b/drivers/mfd/axp20x-i2c.c > @@ -50,13 +50,11 @@ static int axp20x_i2c_probe(struct i2c_client > *i2c, >         return axp20x_device_probe(axp20x); >  } >   > -static int axp20x_i2c_remove(struct i2c_client *i2c) > +static void axp20x_i2c_remove(struct i2c_client *i2c) >  { >         struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); >   >         axp20x_device_remove(axp20x); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c > index a818fbb55988..3f8f6ad3a98c 100644 > --- a/drivers/mfd/da903x.c > +++ b/drivers/mfd/da903x.c > @@ -532,12 +532,11 @@ static int da903x_probe(struct i2c_client > *client, >         return da903x_add_subdevs(chip, pdata); >  } >   > -static int da903x_remove(struct i2c_client *client) > +static void da903x_remove(struct i2c_client *client) >  { >         struct da903x_chip *chip = i2c_get_clientdata(client); >   >         da903x_remove_subdevs(chip); > -       return 0; >  } >   >  static struct i2c_driver da903x_driver = { > diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c > index 8de93db35f3a..5a74696c8704 100644 > --- a/drivers/mfd/da9052-i2c.c > +++ b/drivers/mfd/da9052-i2c.c > @@ -168,12 +168,11 @@ static int da9052_i2c_probe(struct i2c_client > *client, >         return da9052_device_init(da9052, id->driver_data); >  } >   > -static int da9052_i2c_remove(struct i2c_client *client) > +static void da9052_i2c_remove(struct i2c_client *client) >  { >         struct da9052 *da9052 = i2c_get_clientdata(client); >   >         da9052_device_exit(da9052); > -       return 0; >  } >   >  static struct i2c_driver da9052_i2c_driver = { > diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c > index bc60433b68db..276c7d1c509e 100644 > --- a/drivers/mfd/da9055-i2c.c > +++ b/drivers/mfd/da9055-i2c.c > @@ -41,13 +41,11 @@ static int da9055_i2c_probe(struct i2c_client > *i2c, >         return da9055_device_init(da9055); >  } >   > -static int da9055_i2c_remove(struct i2c_client *i2c) > +static void da9055_i2c_remove(struct i2c_client *i2c) >  { >         struct da9055 *da9055 = i2c_get_clientdata(i2c); >   >         da9055_device_exit(da9055); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c > index 2774b2cbaea6..0a80d82c6858 100644 > --- a/drivers/mfd/da9062-core.c > +++ b/drivers/mfd/da9062-core.c > @@ -723,14 +723,12 @@ static int da9062_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9062_i2c_remove(struct i2c_client *i2c) > +static void da9062_i2c_remove(struct i2c_client *i2c) >  { >         struct da9062 *chip = i2c_get_clientdata(i2c); >   >         mfd_remove_devices(chip->dev); >         regmap_del_irq_chip(i2c->irq, chip->regmap_irq); > - > -       return 0; >  } >   >  static const struct i2c_device_id da9062_i2c_id[] = { > diff --git a/drivers/mfd/da9150-core.c b/drivers/mfd/da9150-core.c > index 58009c8cb870..6ae56e46d24e 100644 > --- a/drivers/mfd/da9150-core.c > +++ b/drivers/mfd/da9150-core.c > @@ -471,15 +471,13 @@ static int da9150_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int da9150_remove(struct i2c_client *client) > +static void da9150_remove(struct i2c_client *client) >  { >         struct da9150 *da9150 = i2c_get_clientdata(client); >   >         regmap_del_irq_chip(da9150->irq, da9150->regmap_irq_data); >         mfd_remove_devices(da9150->dev); >         i2c_unregister_device(da9150->core_qif); > - > -       return 0; >  } >   >  static void da9150_shutdown(struct i2c_client *client) > diff --git a/drivers/mfd/dm355evm_msp.c b/drivers/mfd/dm355evm_msp.c > index 54fb6cbd2aa0..759c59690680 100644 > --- a/drivers/mfd/dm355evm_msp.c > +++ b/drivers/mfd/dm355evm_msp.c > @@ -375,11 +375,10 @@ static void dm355evm_power_off(void) >         dm355evm_command(MSP_COMMAND_POWEROFF); >  } >   > -static int dm355evm_msp_remove(struct i2c_client *client) > +static void dm355evm_msp_remove(struct i2c_client *client) >  { >         pm_power_off = NULL; >         msp430 = NULL; > -       return 0; >  } >   >  static int > diff --git a/drivers/mfd/ene-kb3930.c b/drivers/mfd/ene-kb3930.c > index 1b73318d1f1f..3eff98e26bea 100644 > --- a/drivers/mfd/ene-kb3930.c > +++ b/drivers/mfd/ene-kb3930.c > @@ -177,7 +177,7 @@ static int kb3930_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int kb3930_remove(struct i2c_client *client) > +static void kb3930_remove(struct i2c_client *client) >  { >         struct kb3930 *ddata = i2c_get_clientdata(client); >   > @@ -187,8 +187,6 @@ static int kb3930_remove(struct i2c_client > *client) >                 unregister_restart_handler(&kb3930_restart_nb); >         } >         kb3930_power_off = NULL; > - > -       return 0; >  } >   >  static const struct of_device_id kb3930_dt_ids[] = { > diff --git a/drivers/mfd/gateworks-gsc.c b/drivers/mfd/gateworks- > gsc.c > index d87876747b91..9d7d870c44a8 100644 > --- a/drivers/mfd/gateworks-gsc.c > +++ b/drivers/mfd/gateworks-gsc.c > @@ -255,11 +255,9 @@ static int gsc_probe(struct i2c_client *client) >         return 0; >  } >   > -static int gsc_remove(struct i2c_client *client) > +static void gsc_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &attr_group); > - > -       return 0; >  } >   >  static struct i2c_driver gsc_driver = { > diff --git a/drivers/mfd/intel_soc_pmic_core.c > b/drivers/mfd/intel_soc_pmic_core.c > index 5e8c94e008ed..b824e15f4d22 100644 > --- a/drivers/mfd/intel_soc_pmic_core.c > +++ b/drivers/mfd/intel_soc_pmic_core.c > @@ -81,7 +81,7 @@ static int intel_soc_pmic_i2c_probe(struct > i2c_client *i2c, >         return ret; >  } >   > -static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c) > +static void intel_soc_pmic_i2c_remove(struct i2c_client *i2c) >  { >         struct intel_soc_pmic *pmic = dev_get_drvdata(&i2c->dev); >   > @@ -91,8 +91,6 @@ static int intel_soc_pmic_i2c_remove(struct > i2c_client *i2c) >         pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup)); >   >         mfd_remove_devices(&i2c->dev); > - > -       return 0; >  } >   >  static void intel_soc_pmic_shutdown(struct i2c_client *i2c) > diff --git a/drivers/mfd/iqs62x.c b/drivers/mfd/iqs62x.c > index 575ab67e243d..1895fce25b06 100644 > --- a/drivers/mfd/iqs62x.c > +++ b/drivers/mfd/iqs62x.c > @@ -1008,13 +1008,11 @@ static int iqs62x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int iqs62x_remove(struct i2c_client *client) > +static void iqs62x_remove(struct i2c_client *client) >  { >         struct iqs62x_core *iqs62x = i2c_get_clientdata(client); >   >         wait_for_completion(&iqs62x->fw_done); > - > -       return 0; >  } >   >  static int __maybe_unused iqs62x_suspend(struct device *dev) > diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c > index 5690768f3e63..be32ffc5af38 100644 > --- a/drivers/mfd/lm3533-core.c > +++ b/drivers/mfd/lm3533-core.c > @@ -607,15 +607,13 @@ static int lm3533_i2c_probe(struct i2c_client > *i2c, >         return lm3533_device_init(lm3533); >  } >   > -static int lm3533_i2c_remove(struct i2c_client *i2c) > +static void lm3533_i2c_remove(struct i2c_client *i2c) >  { >         struct lm3533 *lm3533 = i2c_get_clientdata(i2c); >   >         dev_dbg(&i2c->dev, "%s\n", __func__); >   >         lm3533_device_exit(lm3533); > - > -       return 0; >  } >   >  static const struct i2c_device_id lm3533_i2c_ids[] = { > diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c > index c223d2c6a363..e7c601bca9ef 100644 > --- a/drivers/mfd/lp8788.c > +++ b/drivers/mfd/lp8788.c > @@ -199,13 +199,12 @@ static int lp8788_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >                                ARRAY_SIZE(lp8788_devs), NULL, 0, > NULL); >  } >   > -static int lp8788_remove(struct i2c_client *cl) > +static void lp8788_remove(struct i2c_client *cl) >  { >         struct lp8788 *lp = i2c_get_clientdata(cl); >   >         mfd_remove_devices(lp->dev); >         lp8788_irq_exit(lp); > -       return 0; >  } >   >  static const struct i2c_device_id lp8788_ids[] = { > diff --git a/drivers/mfd/madera-i2c.c b/drivers/mfd/madera-i2c.c > index 7df5b9ba5855..915d2f95bad3 100644 > --- a/drivers/mfd/madera-i2c.c > +++ b/drivers/mfd/madera-i2c.c > @@ -112,13 +112,11 @@ static int madera_i2c_probe(struct i2c_client > *i2c, >         return madera_dev_init(madera); >  } >   > -static int madera_i2c_remove(struct i2c_client *i2c) > +static void madera_i2c_remove(struct i2c_client *i2c) >  { >         struct madera *madera = dev_get_drvdata(&i2c->dev); >   >         madera_dev_exit(madera); > - > -       return 0; >  } >   >  static const struct i2c_device_id madera_i2c_id[] = { > diff --git a/drivers/mfd/max14577.c b/drivers/mfd/max14577.c > index 6c487fa14e9c..d44ad6f33742 100644 > --- a/drivers/mfd/max14577.c > +++ b/drivers/mfd/max14577.c > @@ -463,7 +463,7 @@ static int max14577_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max14577_i2c_remove(struct i2c_client *i2c) > +static void max14577_i2c_remove(struct i2c_client *i2c) >  { >         struct max14577 *max14577 = i2c_get_clientdata(i2c); >   > @@ -471,8 +471,6 @@ static int max14577_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max14577->irq, max14577->irq_data); >         if (max14577->dev_type == MAXIM_DEVICE_TYPE_MAX77836) >                 max77836_remove(max14577); > - > -       return 0; >  } >   >  static const struct i2c_device_id max14577_i2c_id[] = { > diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c > index 4e6244e17559..7088cb6f9174 100644 > --- a/drivers/mfd/max77693.c > +++ b/drivers/mfd/max77693.c > @@ -294,7 +294,7 @@ static int max77693_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max77693_i2c_remove(struct i2c_client *i2c) > +static void max77693_i2c_remove(struct i2c_client *i2c) >  { >         struct max77693_dev *max77693 = i2c_get_clientdata(i2c); >   > @@ -307,8 +307,6 @@ static int max77693_i2c_remove(struct i2c_client > *i2c) >   >         i2c_unregister_device(max77693->i2c_muic); >         i2c_unregister_device(max77693->i2c_haptic); > - > -       return 0; >  } >   >  static const struct i2c_device_id max77693_i2c_id[] = { > diff --git a/drivers/mfd/max8907.c b/drivers/mfd/max8907.c > index 41f566e6a096..c340080971ce 100644 > --- a/drivers/mfd/max8907.c > +++ b/drivers/mfd/max8907.c > @@ -282,7 +282,7 @@ static int max8907_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int max8907_i2c_remove(struct i2c_client *i2c) > +static void max8907_i2c_remove(struct i2c_client *i2c) >  { >         struct max8907 *max8907 = i2c_get_clientdata(i2c); >   > @@ -293,8 +293,6 @@ static int max8907_i2c_remove(struct i2c_client > *i2c) >         regmap_del_irq_chip(max8907->i2c_gen->irq, max8907- > >irqc_chg); >   >         i2c_unregister_device(max8907->i2c_rtc); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c > index 114e905bef25..04101da42bd3 100644 > --- a/drivers/mfd/max8925-i2c.c > +++ b/drivers/mfd/max8925-i2c.c > @@ -198,14 +198,13 @@ static int max8925_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int max8925_remove(struct i2c_client *client) > +static void max8925_remove(struct i2c_client *client) >  { >         struct max8925_chip *chip = i2c_get_clientdata(client); >   >         max8925_device_exit(chip); >         i2c_unregister_device(chip->adc); >         i2c_unregister_device(chip->rtc); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c > index fb937f66277e..eb94f3004cf3 100644 > --- a/drivers/mfd/mc13xxx-i2c.c > +++ b/drivers/mfd/mc13xxx-i2c.c > @@ -85,10 +85,9 @@ static int mc13xxx_i2c_probe(struct i2c_client > *client, >         return mc13xxx_common_init(&client->dev); >  } >   > -static int mc13xxx_i2c_remove(struct i2c_client *client) > +static void mc13xxx_i2c_remove(struct i2c_client *client) >  { >         mc13xxx_common_exit(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver mc13xxx_i2c_driver = { > diff --git a/drivers/mfd/menelaus.c b/drivers/mfd/menelaus.c > index 07e0ca2e467c..eb08f69001f9 100644 > --- a/drivers/mfd/menelaus.c > +++ b/drivers/mfd/menelaus.c > @@ -1222,14 +1222,13 @@ static int menelaus_probe(struct i2c_client > *client, >         return err; >  } >   > -static int menelaus_remove(struct i2c_client *client) > +static void menelaus_remove(struct i2c_client *client) >  { >         struct menelaus_chip    *menelaus = > i2c_get_clientdata(client); >   >         free_irq(client->irq, menelaus); >         flush_work(&menelaus->work); >         the_menelaus = NULL; > -       return 0; >  } >   >  static const struct i2c_device_id menelaus_id[] = { > diff --git a/drivers/mfd/ntxec.c b/drivers/mfd/ntxec.c > index b711e73eedcb..e16a7a82a929 100644 > --- a/drivers/mfd/ntxec.c > +++ b/drivers/mfd/ntxec.c > @@ -239,15 +239,13 @@ static int ntxec_probe(struct i2c_client > *client) >         return res; >  } >   > -static int ntxec_remove(struct i2c_client *client) > +static void ntxec_remove(struct i2c_client *client) >  { >         if (client == poweroff_restart_client) { >                 poweroff_restart_client = NULL; >                 pm_power_off = NULL; >                 unregister_restart_handler(&ntxec_restart_handler); >         } > - > -       return 0; >  } >   >  static const struct of_device_id of_ntxec_match_table[] = { > diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c > index f5b3fa973b13..8b7429bd2e3e 100644 > --- a/drivers/mfd/palmas.c > +++ b/drivers/mfd/palmas.c > @@ -700,7 +700,7 @@ static int palmas_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int palmas_i2c_remove(struct i2c_client *i2c) > +static void palmas_i2c_remove(struct i2c_client *i2c) >  { >         struct palmas *palmas = i2c_get_clientdata(i2c); >         int i; > @@ -716,8 +716,6 @@ static int palmas_i2c_remove(struct i2c_client > *i2c) >                 pm_power_off = NULL; >                 palmas_dev = NULL; >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id palmas_i2c_id[] = { > diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633- > core.c > index e9c565cf0f54..4ccc2c3e7681 100644 > --- a/drivers/mfd/pcf50633-core.c > +++ b/drivers/mfd/pcf50633-core.c > @@ -273,7 +273,7 @@ static int pcf50633_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int pcf50633_remove(struct i2c_client *client) > +static void pcf50633_remove(struct i2c_client *client) >  { >         struct pcf50633 *pcf = i2c_get_clientdata(client); >         int i; > @@ -289,8 +289,6 @@ static int pcf50633_remove(struct i2c_client > *client) >   >         for (i = 0; i < PCF50633_NUM_REGULATORS; i++) >                 platform_device_unregister(pcf->regulator_pdev[i]); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcf50633_id_table[] = { > diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c > index c748fd29a220..3b5acf7ca39c 100644 > --- a/drivers/mfd/retu-mfd.c > +++ b/drivers/mfd/retu-mfd.c > @@ -287,7 +287,7 @@ static int retu_probe(struct i2c_client *i2c, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int retu_remove(struct i2c_client *i2c) > +static void retu_remove(struct i2c_client *i2c) >  { >         struct retu_dev *rdev = i2c_get_clientdata(i2c); >   > @@ -297,8 +297,6 @@ static int retu_remove(struct i2c_client *i2c) >         } >         mfd_remove_devices(rdev->dev); >         regmap_del_irq_chip(i2c->irq, rdev->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id retu_id[] = { > diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c > index 4142b638e5fa..d5d641efa077 100644 > --- a/drivers/mfd/rk808.c > +++ b/drivers/mfd/rk808.c > @@ -778,7 +778,7 @@ static int rk808_probe(struct i2c_client *client, >         return ret; >  } >   > -static int rk808_remove(struct i2c_client *client) > +static void rk808_remove(struct i2c_client *client) >  { >         struct rk808 *rk808 = i2c_get_clientdata(client); >   > @@ -792,8 +792,6 @@ static int rk808_remove(struct i2c_client > *client) >                 pm_power_off = NULL; >   >         unregister_restart_handler(&rk808_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rk8xx_suspend(struct device *dev) > diff --git a/drivers/mfd/rn5t618.c b/drivers/mfd/rn5t618.c > index 384acb459427..eb8005b4e58d 100644 > --- a/drivers/mfd/rn5t618.c > +++ b/drivers/mfd/rn5t618.c > @@ -241,7 +241,7 @@ static int rn5t618_i2c_probe(struct i2c_client > *i2c) >         return rn5t618_irq_init(priv); >  } >   > -static int rn5t618_i2c_remove(struct i2c_client *i2c) > +static void rn5t618_i2c_remove(struct i2c_client *i2c) >  { >         if (i2c == rn5t618_pm_power_off) { >                 rn5t618_pm_power_off = NULL; > @@ -249,8 +249,6 @@ static int rn5t618_i2c_remove(struct i2c_client > *i2c) >         } >   >         unregister_restart_handler(&rn5t618_restart_handler); > - > -       return 0; >  } >   >  static int __maybe_unused rn5t618_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/rsmu_i2c.c b/drivers/mfd/rsmu_i2c.c > index dc001c9791c1..f716ab8039a0 100644 > --- a/drivers/mfd/rsmu_i2c.c > +++ b/drivers/mfd/rsmu_i2c.c > @@ -146,13 +146,11 @@ static int rsmu_i2c_probe(struct i2c_client > *client, >         return rsmu_core_init(rsmu); >  } >   > -static int rsmu_i2c_remove(struct i2c_client *client) > +static void rsmu_i2c_remove(struct i2c_client *client) >  { >         struct rsmu_ddata *rsmu = i2c_get_clientdata(client); >   >         rsmu_core_exit(rsmu); > - > -       return 0; >  } >   >  static const struct i2c_device_id rsmu_i2c_id[] = { > diff --git a/drivers/mfd/rt4831.c b/drivers/mfd/rt4831.c > index fb3bd788a3eb..c6d34dc2b520 100644 > --- a/drivers/mfd/rt4831.c > +++ b/drivers/mfd/rt4831.c > @@ -87,7 +87,7 @@ static int rt4831_probe(struct i2c_client *client) >                                     ARRAY_SIZE(rt4831_subdevs), NULL, > 0, NULL); >  } >   > -static int rt4831_remove(struct i2c_client *client) > +static void rt4831_remove(struct i2c_client *client) >  { >         struct regmap *regmap = dev_get_regmap(&client->dev, NULL); >         int ret; > @@ -96,8 +96,6 @@ static int rt4831_remove(struct i2c_client *client) >         ret = regmap_update_bits(regmap, RT4831_REG_ENABLE, > RT4831_RESET_MASK, RT4831_RESET_MASK); >         if (ret) >                 dev_warn(&client->dev, "Failed to disable outputs > (%pe)\n", ERR_PTR(ret)); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused rt4831_of_match[] = > { > diff --git a/drivers/mfd/si476x-i2c.c b/drivers/mfd/si476x-i2c.c > index a2635c2d9d1a..8166949b725c 100644 > --- a/drivers/mfd/si476x-i2c.c > +++ b/drivers/mfd/si476x-i2c.c > @@ -835,7 +835,7 @@ static int si476x_core_probe(struct i2c_client > *client, >         return rval; >  } >   > -static int si476x_core_remove(struct i2c_client *client) > +static void si476x_core_remove(struct i2c_client *client) >  { >         struct si476x_core *core = i2c_get_clientdata(client); >   > @@ -851,8 +851,6 @@ static int si476x_core_remove(struct i2c_client > *client) >   >         if (gpio_is_valid(core->gpio_reset)) >                 gpio_free(core->gpio_reset); > - > -       return 0; >  } >   >   > diff --git a/drivers/mfd/stmfx.c b/drivers/mfd/stmfx.c > index 122f96094410..5dd7d9688459 100644 > --- a/drivers/mfd/stmfx.c > +++ b/drivers/mfd/stmfx.c > @@ -467,13 +467,11 @@ static int stmfx_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int stmfx_remove(struct i2c_client *client) > +static void stmfx_remove(struct i2c_client *client) >  { >         stmfx_irq_exit(client); >   >         stmfx_chip_exit(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c > index d3eedf3d607e..4d55494a97c4 100644 > --- a/drivers/mfd/stmpe-i2c.c > +++ b/drivers/mfd/stmpe-i2c.c > @@ -91,13 +91,11 @@ stmpe_i2c_probe(struct i2c_client *i2c, const > struct i2c_device_id *id) >         return stmpe_probe(&i2c_ci, partnum); >  } >   > -static int stmpe_i2c_remove(struct i2c_client *i2c) > +static void stmpe_i2c_remove(struct i2c_client *i2c) >  { >         struct stmpe *stmpe = dev_get_drvdata(&i2c->dev); >   >         stmpe_remove(stmpe); > - > -       return 0; >  } >   >  static const struct i2c_device_id stmpe_i2c_id[] = { > diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c > index 13583cdb93b6..d5d0ec117acb 100644 > --- a/drivers/mfd/tc3589x.c > +++ b/drivers/mfd/tc3589x.c > @@ -429,13 +429,11 @@ static int tc3589x_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int tc3589x_remove(struct i2c_client *client) > +static void tc3589x_remove(struct i2c_client *client) >  { >         struct tc3589x *tc3589x = i2c_get_clientdata(client); >   >         mfd_remove_devices(tc3589x->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mfd/tps6105x.c b/drivers/mfd/tps6105x.c > index c906324d293e..b360568ea675 100644 > --- a/drivers/mfd/tps6105x.c > +++ b/drivers/mfd/tps6105x.c > @@ -179,7 +179,7 @@ static int tps6105x_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6105x_remove(struct i2c_client *client) > +static void tps6105x_remove(struct i2c_client *client) >  { >         struct tps6105x *tps6105x = i2c_get_clientdata(client); >   > @@ -189,8 +189,6 @@ static int tps6105x_remove(struct i2c_client > *client) >         regmap_update_bits(tps6105x->regmap, TPS6105X_REG_0, >                 TPS6105X_REG0_MODE_MASK, >                 TPS6105X_MODE_SHUTDOWN << TPS6105X_REG0_MODE_SHIFT); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps6105x_id[] = { > diff --git a/drivers/mfd/tps65010.c b/drivers/mfd/tps65010.c > index 7e7dbee58ca9..c2afa2e69f42 100644 > --- a/drivers/mfd/tps65010.c > +++ b/drivers/mfd/tps65010.c > @@ -501,7 +501,7 @@ static int tps65010_gpio_get(struct gpio_chip > *chip, unsigned offset) >   >  static struct tps65010 *the_tps; >   > -static int tps65010_remove(struct i2c_client *client) > +static void tps65010_remove(struct i2c_client *client) >  { >         struct tps65010         *tps = i2c_get_clientdata(client); >         struct tps65010_board   *board = dev_get_platdata(&client- > >dev); > @@ -517,7 +517,6 @@ static int tps65010_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&tps->work); >         debugfs_remove(tps->file); >         the_tps = NULL; > -       return 0; >  } >   >  static int tps65010_probe(struct i2c_client *client, > diff --git a/drivers/mfd/tps65086.c b/drivers/mfd/tps65086.c > index 3bd5728844a0..eb5afbeb0e91 100644 > --- a/drivers/mfd/tps65086.c > +++ b/drivers/mfd/tps65086.c > @@ -119,14 +119,12 @@ static int tps65086_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps65086_remove(struct i2c_client *client) > +static void tps65086_remove(struct i2c_client *client) >  { >         struct tps65086 *tps = i2c_get_clientdata(client); >   >         if (tps->irq > 0) >                 regmap_del_irq_chip(tps->irq, tps->irq_data); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65086_id_table[] = { > diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c > index 8027b0a9e14f..a7200ddd85e6 100644 > --- a/drivers/mfd/tps65217.c > +++ b/drivers/mfd/tps65217.c > @@ -382,7 +382,7 @@ static int tps65217_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tps65217_remove(struct i2c_client *client) > +static void tps65217_remove(struct i2c_client *client) >  { >         struct tps65217 *tps = i2c_get_clientdata(client); >         unsigned int virq; > @@ -396,8 +396,6 @@ static int tps65217_remove(struct i2c_client > *client) >   >         irq_domain_remove(tps->irq_domain); >         tps->irq_domain = NULL; > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65217_id_table[] = { > diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c > index c9303d3d6602..fb340da64bbc 100644 > --- a/drivers/mfd/tps6586x.c > +++ b/drivers/mfd/tps6586x.c > @@ -579,7 +579,7 @@ static int tps6586x_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tps6586x_i2c_remove(struct i2c_client *client) > +static void tps6586x_i2c_remove(struct i2c_client *client) >  { >         struct tps6586x *tps6586x = i2c_get_clientdata(client); >   > @@ -587,7 +587,6 @@ static int tps6586x_i2c_remove(struct i2c_client > *client) >         mfd_remove_devices(tps6586x->dev); >         if (client->irq) >                 free_irq(client->irq, tps6586x); > -       return 0; >  } >   >  static int __maybe_unused tps6586x_i2c_suspend(struct device *dev) > diff --git a/drivers/mfd/tps65912-i2c.c b/drivers/mfd/tps65912-i2c.c > index 06eb2784d322..cbbac1567eaa 100644 > --- a/drivers/mfd/tps65912-i2c.c > +++ b/drivers/mfd/tps65912-i2c.c > @@ -51,13 +51,11 @@ static int tps65912_i2c_probe(struct i2c_client > *client, >         return tps65912_device_init(tps); >  } >   > -static int tps65912_i2c_remove(struct i2c_client *client) > +static void tps65912_i2c_remove(struct i2c_client *client) >  { >         struct tps65912 *tps = i2c_get_clientdata(client); >   >         tps65912_device_exit(tps); > - > -       return 0; >  } >   >  static const struct i2c_device_id tps65912_i2c_id_table[] = { > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c > index bd6659cf3bc0..89a96db15b33 100644 > --- a/drivers/mfd/twl-core.c > +++ b/drivers/mfd/twl-core.c > @@ -1033,7 +1033,7 @@ static void clocks_init(struct device *dev, >  /*------------------------------------------------------------------ > ----*/ >   >   > -static int twl_remove(struct i2c_client *client) > +static void twl_remove(struct i2c_client *client) >  { >         unsigned i, num_slaves; >   > @@ -1051,7 +1051,6 @@ static int twl_remove(struct i2c_client > *client) >                 twl->client = NULL; >         } >         twl_priv->ready = false; > -       return 0; >  } >   >  static struct of_dev_auxdata twl_auxdata_lookup[] = { > diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c > index b9c6d94b4002..f429b8f00db6 100644 > --- a/drivers/mfd/twl6040.c > +++ b/drivers/mfd/twl6040.c > @@ -808,7 +808,7 @@ static int twl6040_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int twl6040_remove(struct i2c_client *client) > +static void twl6040_remove(struct i2c_client *client) >  { >         struct twl6040 *twl6040 = i2c_get_clientdata(client); >   > @@ -820,8 +820,6 @@ static int twl6040_remove(struct i2c_client > *client) >         mfd_remove_devices(&client->dev); >   >         regulator_bulk_disable(TWL6040_NUM_SUPPLIES, twl6040- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id twl6040_i2c_id[] = { > diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c > index 7b1d270722ba..7e88f5b0abe6 100644 > --- a/drivers/mfd/wm8994-core.c > +++ b/drivers/mfd/wm8994-core.c > @@ -657,13 +657,11 @@ static int wm8994_i2c_probe(struct i2c_client > *i2c, >         return wm8994_device_init(wm8994, i2c->irq); >  } >   > -static int wm8994_i2c_remove(struct i2c_client *i2c) > +static void wm8994_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8994 *wm8994 = i2c_get_clientdata(i2c); >   >         wm8994_device_exit(wm8994); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8994_i2c_id[] = { > diff --git a/drivers/misc/ad525x_dpot-i2c.c > b/drivers/misc/ad525x_dpot-i2c.c > index 0ee0c6d808c3..28ffb4377d98 100644 > --- a/drivers/misc/ad525x_dpot-i2c.c > +++ b/drivers/misc/ad525x_dpot-i2c.c > @@ -67,10 +67,9 @@ static int ad_dpot_i2c_probe(struct i2c_client > *client, >         return ad_dpot_probe(&client->dev, &bdata, id->driver_data, > id->name); >  } >   > -static int ad_dpot_i2c_remove(struct i2c_client *client) > +static void ad_dpot_i2c_remove(struct i2c_client *client) >  { >         ad_dpot_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id ad_dpot_id[] = { > diff --git a/drivers/misc/apds9802als.c b/drivers/misc/apds9802als.c > index 6fff44b952bd..a32431f4b370 100644 > --- a/drivers/misc/apds9802als.c > +++ b/drivers/misc/apds9802als.c > @@ -242,7 +242,7 @@ static int apds9802als_probe(struct i2c_client > *client, >         return res; >  } >   > -static int apds9802als_remove(struct i2c_client *client) > +static void apds9802als_remove(struct i2c_client *client) >  { >         struct als_data *data = i2c_get_clientdata(client); >   > @@ -256,7 +256,6 @@ static int apds9802als_remove(struct i2c_client > *client) >         pm_runtime_put_noidle(&client->dev); >   >         kfree(data); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/misc/apds990x.c b/drivers/misc/apds990x.c > index 45f5b997a0e1..e2100cc42ce8 100644 > --- a/drivers/misc/apds990x.c > +++ b/drivers/misc/apds990x.c > @@ -1185,7 +1185,7 @@ static int apds990x_probe(struct i2c_client > *client, >         return err; >  } >   > -static int apds990x_remove(struct i2c_client *client) > +static void apds990x_remove(struct i2c_client *client) >  { >         struct apds990x_chip *chip = i2c_get_clientdata(client); >   > @@ -1205,7 +1205,6 @@ static int apds990x_remove(struct i2c_client > *client) >         regulator_bulk_free(ARRAY_SIZE(chip->regs), chip->regs); >   >         kfree(chip); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/bh1770glc.c b/drivers/misc/bh1770glc.c > index 0581bb9cef2e..d0dfa674414c 100644 > --- a/drivers/misc/bh1770glc.c > +++ b/drivers/misc/bh1770glc.c > @@ -1280,7 +1280,7 @@ static int bh1770_probe(struct i2c_client > *client, >         return err; >  } >   > -static int bh1770_remove(struct i2c_client *client) > +static void bh1770_remove(struct i2c_client *client) >  { >         struct bh1770_chip *chip = i2c_get_clientdata(client); >   > @@ -1299,8 +1299,6 @@ static int bh1770_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         pm_runtime_set_suspended(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/ds1682.c b/drivers/misc/ds1682.c > index 42f316c2d719..0698ddc5f4d5 100644 > --- a/drivers/misc/ds1682.c > +++ b/drivers/misc/ds1682.c > @@ -228,11 +228,10 @@ static int ds1682_probe(struct i2c_client > *client, >         return rc; >  } >   > -static int ds1682_remove(struct i2c_client *client) > +static void ds1682_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, > &ds1682_eeprom_attr); >         sysfs_remove_group(&client->dev.kobj, &ds1682_group); > -       return 0; >  } >   >  static const struct i2c_device_id ds1682_id[] = { > diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c > index 633e1cf08d6e..938c4f41b98c 100644 > --- a/drivers/misc/eeprom/at24.c > +++ b/drivers/misc/eeprom/at24.c > @@ -791,7 +791,7 @@ static int at24_probe(struct i2c_client *client) >         return 0; >  } >   > -static int at24_remove(struct i2c_client *client) > +static void at24_remove(struct i2c_client *client) >  { >         struct at24_data *at24 = i2c_get_clientdata(client); >   > @@ -801,8 +801,6 @@ static int at24_remove(struct i2c_client *client) >                         regulator_disable(at24->vcc_reg); >                 pm_runtime_set_suspended(&client->dev); >         } > - > -       return 0; >  } >   >  static int __maybe_unused at24_suspend(struct device *dev) > diff --git a/drivers/misc/eeprom/ee1004.c > b/drivers/misc/eeprom/ee1004.c > index 9fbfe784d710..c8c6deb7ed89 100644 > --- a/drivers/misc/eeprom/ee1004.c > +++ b/drivers/misc/eeprom/ee1004.c > @@ -219,14 +219,12 @@ static int ee1004_probe(struct i2c_client > *client) >         return err; >  } >   > -static int ee1004_remove(struct i2c_client *client) > +static void ee1004_remove(struct i2c_client *client) >  { >         /* Remove page select clients if this is the last device */ >         mutex_lock(&ee1004_bus_lock); >         ee1004_cleanup(EE1004_NUM_PAGES); >         mutex_unlock(&ee1004_bus_lock); > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/misc/eeprom/eeprom.c > b/drivers/misc/eeprom/eeprom.c > index 34fa385dfd4b..4a9445fea93d 100644 > --- a/drivers/misc/eeprom/eeprom.c > +++ b/drivers/misc/eeprom/eeprom.c > @@ -183,11 +183,9 @@ static int eeprom_probe(struct i2c_client > *client, >         return sysfs_create_bin_file(&client->dev.kobj, > &eeprom_attr); >  } >   > -static int eeprom_remove(struct i2c_client *client) > +static void eeprom_remove(struct i2c_client *client) >  { >         sysfs_remove_bin_file(&client->dev.kobj, &eeprom_attr); > - > -       return 0; >  } >   >  static const struct i2c_device_id eeprom_id[] = { > diff --git a/drivers/misc/eeprom/idt_89hpesx.c > b/drivers/misc/eeprom/idt_89hpesx.c > index b0cff4b152da..0c23e909bc3e 100644 > --- a/drivers/misc/eeprom/idt_89hpesx.c > +++ b/drivers/misc/eeprom/idt_89hpesx.c > @@ -1401,7 +1401,7 @@ static int idt_probe(struct i2c_client *client, > const struct i2c_device_id *id) >  /* >   * idt_remove() - IDT 89HPESx driver remove() callback method >   */ > -static int idt_remove(struct i2c_client *client) > +static void idt_remove(struct i2c_client *client) >  { >         struct idt_89hpesx_dev *pdev = i2c_get_clientdata(client); >   > @@ -1413,8 +1413,6 @@ static int idt_remove(struct i2c_client > *client) >   >         /* Discard driver data structure */ >         idt_free_pdev(pdev); > - > -       return 0; >  } >   >  /* > diff --git a/drivers/misc/eeprom/max6875.c > b/drivers/misc/eeprom/max6875.c > index 9da81f6d4a1c..6bd4f4339af4 100644 > --- a/drivers/misc/eeprom/max6875.c > +++ b/drivers/misc/eeprom/max6875.c > @@ -173,7 +173,7 @@ static int max6875_probe(struct i2c_client > *client, >         return err; >  } >   > -static int max6875_remove(struct i2c_client *client) > +static void max6875_remove(struct i2c_client *client) >  { >         struct max6875_data *data = i2c_get_clientdata(client); >   > @@ -181,8 +181,6 @@ static int max6875_remove(struct i2c_client > *client) >   >         sysfs_remove_bin_file(&client->dev.kobj, &user_eeprom_attr); >         kfree(data); > - > -       return 0; >  } >   >  static const struct i2c_device_id max6875_id[] = { > diff --git a/drivers/misc/hmc6352.c b/drivers/misc/hmc6352.c > index 572a2ff10f00..42b9adef28a3 100644 > --- a/drivers/misc/hmc6352.c > +++ b/drivers/misc/hmc6352.c > @@ -116,10 +116,9 @@ static int hmc6352_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int hmc6352_remove(struct i2c_client *client) > +static void hmc6352_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &m_compass_gr); > -       return 0; >  } >   >  static const struct i2c_device_id hmc6352_id[] = { > diff --git a/drivers/misc/ics932s401.c b/drivers/misc/ics932s401.c > index 0f9ea75b0b18..2c4bb6d6e1a0 100644 > --- a/drivers/misc/ics932s401.c > +++ b/drivers/misc/ics932s401.c > @@ -93,7 +93,7 @@ static int ics932s401_probe(struct i2c_client > *client, >                          const struct i2c_device_id *id); >  static int ics932s401_detect(struct i2c_client *client, >                           struct i2c_board_info *info); > -static int ics932s401_remove(struct i2c_client *client); > +static void ics932s401_remove(struct i2c_client *client); >   >  static const struct i2c_device_id ics932s401_id[] = { >         { "ics932s401", 0 }, > @@ -460,13 +460,12 @@ static int ics932s401_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ics932s401_remove(struct i2c_client *client) > +static void ics932s401_remove(struct i2c_client *client) >  { >         struct ics932s401_data *data = i2c_get_clientdata(client); >   >         sysfs_remove_group(&client->dev.kobj, &data->attrs); >         kfree(data); > -       return 0; >  } >   >  module_i2c_driver(ics932s401_driver); > diff --git a/drivers/misc/isl29003.c b/drivers/misc/isl29003.c > index 703d20e83ebd..8ab61be79c76 100644 > --- a/drivers/misc/isl29003.c > +++ b/drivers/misc/isl29003.c > @@ -410,12 +410,11 @@ static int isl29003_probe(struct i2c_client > *client, >         return err; >  } >   > -static int isl29003_remove(struct i2c_client *client) > +static void isl29003_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &isl29003_attr_group); >         isl29003_set_power_state(client, 0); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c > index fc5ff2805b94..c6f2a94f501a 100644 > --- a/drivers/misc/isl29020.c > +++ b/drivers/misc/isl29020.c > @@ -171,11 +171,10 @@ static int  isl29020_probe(struct i2c_client > *client, >         return res; >  } >   > -static int isl29020_remove(struct i2c_client *client) > +static void isl29020_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); >         sysfs_remove_group(&client->dev.kobj, &m_als_gr); > -       return 0; >  } >   >  static const struct i2c_device_id isl29020_id[] = { > diff --git a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > index 52555d2e824b..d7daa01fe7ca 100644 > --- a/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > +++ b/drivers/misc/lis3lv02d/lis3lv02d_i2c.c > @@ -177,7 +177,7 @@ static int lis3lv02d_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lis3lv02d_i2c_remove(struct i2c_client *client) > +static void lis3lv02d_i2c_remove(struct i2c_client *client) >  { >         struct lis3lv02d *lis3 = i2c_get_clientdata(client); >         struct lis3lv02d_platform_data *pdata = client- > >dev.platform_data; > @@ -190,7 +190,6 @@ static int lis3lv02d_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_free(ARRAY_SIZE(lis3->regulators), >                             lis3_dev.regulators); > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/misc/tsl2550.c b/drivers/misc/tsl2550.c > index 6d71865c8042..1652fb9b3856 100644 > --- a/drivers/misc/tsl2550.c > +++ b/drivers/misc/tsl2550.c > @@ -389,7 +389,7 @@ static int tsl2550_probe(struct i2c_client > *client, >         return err; >  } >   > -static int tsl2550_remove(struct i2c_client *client) > +static void tsl2550_remove(struct i2c_client *client) >  { >         sysfs_remove_group(&client->dev.kobj, &tsl2550_attr_group); >   > @@ -397,8 +397,6 @@ static int tsl2550_remove(struct i2c_client > *client) >         tsl2550_set_power_state(client, 0); >   >         kfree(i2c_get_clientdata(client)); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c > index 946ba80f9758..5fcefcd0baca 100644 > --- a/drivers/mtd/maps/pismo.c > +++ b/drivers/mtd/maps/pismo.c > @@ -195,7 +195,7 @@ static void pismo_add_one(struct pismo_data > *pismo, int i, >         } >  } >   > -static int pismo_remove(struct i2c_client *client) > +static void pismo_remove(struct i2c_client *client) >  { >         struct pismo_data *pismo = i2c_get_clientdata(client); >         int i; > @@ -204,8 +204,6 @@ static int pismo_remove(struct i2c_client > *client) >                 platform_device_unregister(pismo->dev[i]); >   >         kfree(pismo); > - > -       return 0; >  } >   >  static int pismo_probe(struct i2c_client *client, > diff --git a/drivers/net/dsa/lan9303_i2c.c > b/drivers/net/dsa/lan9303_i2c.c > index 8ca4713310fa..b25e91b26d99 100644 > --- a/drivers/net/dsa/lan9303_i2c.c > +++ b/drivers/net/dsa/lan9303_i2c.c > @@ -65,18 +65,16 @@ static int lan9303_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lan9303_i2c_remove(struct i2c_client *client) > +static void lan9303_i2c_remove(struct i2c_client *client) >  { >         struct lan9303_i2c *sw_dev = i2c_get_clientdata(client); >   >         if (!sw_dev) > -               return 0; > +               return; >   >         lan9303_remove(&sw_dev->chip); >   >         i2c_set_clientdata(client, NULL); > - > -       return 0; >  } >   >  static void lan9303_i2c_shutdown(struct i2c_client *client) > diff --git a/drivers/net/dsa/microchip/ksz9477_i2c.c > b/drivers/net/dsa/microchip/ksz9477_i2c.c > index faa3163c86b0..ef9d3cc4b15a 100644 > --- a/drivers/net/dsa/microchip/ksz9477_i2c.c > +++ b/drivers/net/dsa/microchip/ksz9477_i2c.c > @@ -52,7 +52,7 @@ static int ksz9477_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int ksz9477_i2c_remove(struct i2c_client *i2c) > +static void ksz9477_i2c_remove(struct i2c_client *i2c) >  { >         struct ksz_device *dev = i2c_get_clientdata(i2c); >   > @@ -60,8 +60,6 @@ static int ksz9477_i2c_remove(struct i2c_client > *i2c) >                 ksz_switch_remove(dev); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void ksz9477_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > index 6deae388a0d6..bbaf5a3fbf00 100644 > --- a/drivers/net/dsa/xrs700x/xrs700x_i2c.c > +++ b/drivers/net/dsa/xrs700x/xrs700x_i2c.c > @@ -105,18 +105,16 @@ static int xrs700x_i2c_probe(struct i2c_client > *i2c, >         return 0; >  } >   > -static int xrs700x_i2c_remove(struct i2c_client *i2c) > +static void xrs700x_i2c_remove(struct i2c_client *i2c) >  { >         struct xrs700x *priv = i2c_get_clientdata(i2c); >   >         if (!priv) > -               return 0; > +               return; >   >         xrs700x_switch_remove(priv); >   >         i2c_set_clientdata(i2c, NULL); > - > -       return 0; >  } >   >  static void xrs700x_i2c_shutdown(struct i2c_client *i2c) > diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > index ce843ea91464..50b7121a5e3c 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c > @@ -656,14 +656,12 @@ static int mlxsw_i2c_probe(struct i2c_client > *client, >         return err; >  } >   > -static int mlxsw_i2c_remove(struct i2c_client *client) > +static void mlxsw_i2c_remove(struct i2c_client *client) >  { >         struct mlxsw_i2c *mlxsw_i2c = i2c_get_clientdata(client); >   >         mlxsw_core_bus_device_unregister(mlxsw_i2c->core, false); >         mutex_destroy(&mlxsw_i2c->cmd.lock); > - > -       return 0; >  } >   >  int mlxsw_i2c_driver_register(struct i2c_driver *i2c_driver) > diff --git a/drivers/net/mctp/mctp-i2c.c b/drivers/net/mctp/mctp- > i2c.c > index 53846c6b56ca..670ad9b306fe 100644 > --- a/drivers/net/mctp/mctp-i2c.c > +++ b/drivers/net/mctp/mctp-i2c.c > @@ -986,7 +986,7 @@ static int mctp_i2c_probe(struct i2c_client > *client) >         return rc; >  } >   > -static int mctp_i2c_remove(struct i2c_client *client) > +static void mctp_i2c_remove(struct i2c_client *client) >  { >         struct mctp_i2c_client *mcli = i2c_get_clientdata(client); >         struct mctp_i2c_dev *midev = NULL, *tmp = NULL; > @@ -1000,7 +1000,6 @@ static int mctp_i2c_remove(struct i2c_client > *client) >         mctp_i2c_free_client(mcli); >         mutex_unlock(&driver_clients_lock); >         /* Callers ignore return code */ > -       return 0; >  } >   >  /* We look for a 'mctp-controller' property on I2C busses as they > are > diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c > index 28a9e1eb9bcf..2d53e0f88d2f 100644 > --- a/drivers/nfc/fdp/i2c.c > +++ b/drivers/nfc/fdp/i2c.c > @@ -336,14 +336,12 @@ static int fdp_nci_i2c_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fdp_nci_i2c_remove(struct i2c_client *client) > +static void fdp_nci_i2c_remove(struct i2c_client *client) >  { >         struct fdp_i2c_phy *phy = i2c_get_clientdata(client); >   >         fdp_nci_remove(phy->ndev); >         fdp_nci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct acpi_device_id fdp_nci_i2c_acpi_match[] = { > diff --git a/drivers/nfc/microread/i2c.c > b/drivers/nfc/microread/i2c.c > index 067295124eb9..5eaa18f81355 100644 > --- a/drivers/nfc/microread/i2c.c > +++ b/drivers/nfc/microread/i2c.c > @@ -268,15 +268,13 @@ static int microread_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int microread_i2c_remove(struct i2c_client *client) > +static void microread_i2c_remove(struct i2c_client *client) >  { >         struct microread_i2c_phy *phy = i2c_get_clientdata(client); >   >         microread_remove(phy->hdev); >   >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id microread_i2c_id[] = { > diff --git a/drivers/nfc/nfcmrvl/i2c.c b/drivers/nfc/nfcmrvl/i2c.c > index ceef81d93ac9..61f1e2019c0a 100644 > --- a/drivers/nfc/nfcmrvl/i2c.c > +++ b/drivers/nfc/nfcmrvl/i2c.c > @@ -231,13 +231,11 @@ static int nfcmrvl_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int nfcmrvl_i2c_remove(struct i2c_client *client) > +static void nfcmrvl_i2c_remove(struct i2c_client *client) >  { >         struct nfcmrvl_i2c_drv_data *drv_data = > i2c_get_clientdata(client); >   >         nfcmrvl_nci_unregister_dev(drv_data->priv); > - > -       return 0; >  } >   >   > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c > index 7e451c10985d..82a2e2fb1472 100644 > --- a/drivers/nfc/nxp-nci/i2c.c > +++ b/drivers/nfc/nxp-nci/i2c.c > @@ -307,14 +307,12 @@ static int nxp_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int nxp_nci_i2c_remove(struct i2c_client *client) > +static void nxp_nci_i2c_remove(struct i2c_client *client) >  { >         struct nxp_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         nxp_nci_remove(phy->ndev); >         free_irq(client->irq, phy); > - > -       return 0; >  } >   >  static const struct i2c_device_id nxp_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/pn533/i2c.c b/drivers/nfc/pn533/i2c.c > index 673eb5e9b887..ddf3db286bad 100644 > --- a/drivers/nfc/pn533/i2c.c > +++ b/drivers/nfc/pn533/i2c.c > @@ -227,7 +227,7 @@ static int pn533_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int pn533_i2c_remove(struct i2c_client *client) > +static void pn533_i2c_remove(struct i2c_client *client) >  { >         struct pn533_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -235,8 +235,6 @@ static int pn533_i2c_remove(struct i2c_client > *client) >   >         pn53x_unregister_nfc(phy->priv); >         pn53x_common_clean(phy->priv); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn533_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/pn544/i2c.c b/drivers/nfc/pn544/i2c.c > index 62a0f1a010cb..9e754abcfa2a 100644 > --- a/drivers/nfc/pn544/i2c.c > +++ b/drivers/nfc/pn544/i2c.c > @@ -928,7 +928,7 @@ static int pn544_hci_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pn544_hci_i2c_remove(struct i2c_client *client) > +static void pn544_hci_i2c_remove(struct i2c_client *client) >  { >         struct pn544_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -940,8 +940,6 @@ static int pn544_hci_i2c_remove(struct i2c_client > *client) >   >         if (phy->powered) >                 pn544_hci_i2c_disable(phy); > - > -       return 0; >  } >   >  static const struct of_device_id of_pn544_i2c_match[] __maybe_unused > = { > diff --git a/drivers/nfc/s3fwrn5/i2c.c b/drivers/nfc/s3fwrn5/i2c.c > index 4d1cf1bb55b0..f824dc7099ce 100644 > --- a/drivers/nfc/s3fwrn5/i2c.c > +++ b/drivers/nfc/s3fwrn5/i2c.c > @@ -246,14 +246,12 @@ static int s3fwrn5_i2c_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int s3fwrn5_i2c_remove(struct i2c_client *client) > +static void s3fwrn5_i2c_remove(struct i2c_client *client) >  { >         struct s3fwrn5_i2c_phy *phy = i2c_get_clientdata(client); >   >         s3fwrn5_remove(phy->common.ndev); >         clk_disable_unprepare(phy->clk); > - > -       return 0; >  } >   >  static const struct i2c_device_id s3fwrn5_i2c_id_table[] = { > diff --git a/drivers/nfc/st-nci/i2c.c b/drivers/nfc/st-nci/i2c.c > index cbd968f013c7..89fa24d71bef 100644 > --- a/drivers/nfc/st-nci/i2c.c > +++ b/drivers/nfc/st-nci/i2c.c > @@ -250,13 +250,11 @@ static int st_nci_i2c_probe(struct i2c_client > *client, >         return r; >  } >   > -static int st_nci_i2c_remove(struct i2c_client *client) > +static void st_nci_i2c_remove(struct i2c_client *client) >  { >         struct st_nci_i2c_phy *phy = i2c_get_clientdata(client); >   >         ndlc_remove(phy->ndlc); > - > -       return 0; >  } >   >  static const struct i2c_device_id st_nci_i2c_id_table[] = { > diff --git a/drivers/nfc/st21nfca/i2c.c b/drivers/nfc/st21nfca/i2c.c > index 42dc0e5eb161..76b55986bcf8 100644 > --- a/drivers/nfc/st21nfca/i2c.c > +++ b/drivers/nfc/st21nfca/i2c.c > @@ -562,7 +562,7 @@ static int st21nfca_hci_i2c_probe(struct > i2c_client *client, >         return r; >  } >   > -static int st21nfca_hci_i2c_remove(struct i2c_client *client) > +static void st21nfca_hci_i2c_remove(struct i2c_client *client) >  { >         struct st21nfca_i2c_phy *phy = i2c_get_clientdata(client); >   > @@ -571,8 +571,6 @@ static int st21nfca_hci_i2c_remove(struct > i2c_client *client) >         if (phy->powered) >                 st21nfca_hci_i2c_disable(phy); >         kfree_skb(phy->pending_skb); > - > -       return 0; >  } >   >  static const struct i2c_device_id st21nfca_hci_i2c_id_table[] = { > diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c > index 7f6bba18c515..e0b98ce9c5e8 100644 > --- a/drivers/of/unittest.c > +++ b/drivers/of/unittest.c > @@ -2525,13 +2525,12 @@ static int unittest_i2c_dev_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_dev_remove(struct i2c_client *client) > +static void unittest_i2c_dev_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_dev_id[] = { > @@ -2602,7 +2601,7 @@ static int unittest_i2c_mux_probe(struct > i2c_client *client, >         return 0; >  }; >   > -static int unittest_i2c_mux_remove(struct i2c_client *client) > +static void unittest_i2c_mux_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct device_node *np = client->dev.of_node; > @@ -2610,7 +2609,6 @@ static int unittest_i2c_mux_remove(struct > i2c_client *client) >   >         dev_dbg(dev, "%s for node @%pOF\n", __func__, np); >         i2c_mux_del_adapters(muxc); > -       return 0; >  } >   >  static const struct i2c_device_id unittest_i2c_mux_id[] = { > diff --git a/drivers/platform/chrome/cros_ec_i2c.c > b/drivers/platform/chrome/cros_ec_i2c.c > index 9f5b95763173..b6823c654c3f 100644 > --- a/drivers/platform/chrome/cros_ec_i2c.c > +++ b/drivers/platform/chrome/cros_ec_i2c.c > @@ -317,13 +317,11 @@ static int cros_ec_i2c_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int cros_ec_i2c_remove(struct i2c_client *client) > +static void cros_ec_i2c_remove(struct i2c_client *client) >  { >         struct cros_ec_device *ec_dev = i2c_get_clientdata(client); >   >         cros_ec_unregister(ec_dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/platform/surface/surface3_power.c > b/drivers/platform/surface/surface3_power.c > index 444ec81ba02d..3b20dddeb815 100644 > --- a/drivers/platform/surface/surface3_power.c > +++ b/drivers/platform/surface/surface3_power.c > @@ -554,7 +554,7 @@ static int mshw0011_probe(struct i2c_client > *client) >         return error; >  } >   > -static int mshw0011_remove(struct i2c_client *client) > +static void mshw0011_remove(struct i2c_client *client) >  { >         struct mshw0011_data *cdata = i2c_get_clientdata(client); >   > @@ -564,8 +564,6 @@ static int mshw0011_remove(struct i2c_client > *client) >                 kthread_stop(cdata->poll_task); >   >         i2c_unregister_device(cdata->bat0); > - > -       return 0; >  } >   >  static const struct acpi_device_id mshw0011_acpi_match[] = { > diff --git a/drivers/platform/x86/asus-tf103c-dock.c > b/drivers/platform/x86/asus-tf103c-dock.c > index 6fd0c9fea82d..62310e06282b 100644 > --- a/drivers/platform/x86/asus-tf103c-dock.c > +++ b/drivers/platform/x86/asus-tf103c-dock.c > @@ -878,14 +878,12 @@ static int tf103c_dock_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int tf103c_dock_remove(struct i2c_client *client) > +static void tf103c_dock_remove(struct i2c_client *client) >  { >         struct tf103c_dock_data *dock = i2c_get_clientdata(client); >   >         tf103c_dock_stop_hpd(dock); >         tf103c_dock_disable(dock); > - > -       return 0; >  } >   >  static int __maybe_unused tf103c_dock_suspend(struct device *dev) > diff --git a/drivers/platform/x86/intel/int3472/tps68470.c > b/drivers/platform/x86/intel/int3472/tps68470.c > index 22f61b47f9e5..5dd81bb05255 100644 > --- a/drivers/platform/x86/intel/int3472/tps68470.c > +++ b/drivers/platform/x86/intel/int3472/tps68470.c > @@ -178,15 +178,13 @@ static int skl_int3472_tps68470_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int skl_int3472_tps68470_remove(struct i2c_client *client) > +static void skl_int3472_tps68470_remove(struct i2c_client *client) >  { >         const struct int3472_tps68470_board_data *board_data; >   >         board_data = > int3472_tps68470_get_board_data(dev_name(&client->dev)); >         if (board_data) >                 gpiod_remove_lookup_table(board_data- > >tps68470_gpio_lookup_table); > - > -       return 0; >  } >   >  static const struct acpi_device_id int3472_device_id[] = { > diff --git a/drivers/power/supply/bq2415x_charger.c > b/drivers/power/supply/bq2415x_charger.c > index 5724001e66b9..6b99e1c675b8 100644 > --- a/drivers/power/supply/bq2415x_charger.c > +++ b/drivers/power/supply/bq2415x_charger.c > @@ -1696,7 +1696,7 @@ static int bq2415x_probe(struct i2c_client > *client, >   >  /* main bq2415x remove function */ >   > -static int bq2415x_remove(struct i2c_client *client) > +static void bq2415x_remove(struct i2c_client *client) >  { >         struct bq2415x_device *bq = i2c_get_clientdata(client); >   > @@ -1715,8 +1715,6 @@ static int bq2415x_remove(struct i2c_client > *client) >         dev_info(bq->dev, "driver unregistered\n"); >   >         kfree(bq->name); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq2415x_i2c_id_table[] = { > diff --git a/drivers/power/supply/bq24190_charger.c > b/drivers/power/supply/bq24190_charger.c > index 27f5c7648617..2274679c5ddd 100644 > --- a/drivers/power/supply/bq24190_charger.c > +++ b/drivers/power/supply/bq24190_charger.c > @@ -1901,7 +1901,7 @@ static int bq24190_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq24190_remove(struct i2c_client *client) > +static void bq24190_remove(struct i2c_client *client) >  { >         struct bq24190_dev_info *bdi = i2c_get_clientdata(client); >         int error; > @@ -1918,8 +1918,6 @@ static int bq24190_remove(struct i2c_client > *client) >                 pm_runtime_put_sync(bdi->dev); >         pm_runtime_dont_use_autosuspend(bdi->dev); >         pm_runtime_disable(bdi->dev); > - > -       return 0; >  } >   >  static void bq24190_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq24257_charger.c > b/drivers/power/supply/bq24257_charger.c > index 96cb3290bcaa..dafb64b32cef 100644 > --- a/drivers/power/supply/bq24257_charger.c > +++ b/drivers/power/supply/bq24257_charger.c > @@ -1077,7 +1077,7 @@ static int bq24257_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq24257_remove(struct i2c_client *client) > +static void bq24257_remove(struct i2c_client *client) >  { >         struct bq24257_device *bq = i2c_get_clientdata(client); >   > @@ -1085,8 +1085,6 @@ static int bq24257_remove(struct i2c_client > *client) >                 cancel_delayed_work_sync(&bq->iilimit_setup_work); >   >         bq24257_field_write(bq, F_RESET, 1); /* reset to defaults */ > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/bq25890_charger.c > b/drivers/power/supply/bq25890_charger.c > index 852a6fec4339..06ea7399d151 100644 > --- a/drivers/power/supply/bq25890_charger.c > +++ b/drivers/power/supply/bq25890_charger.c > @@ -1258,7 +1258,7 @@ static int bq25890_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int bq25890_remove(struct i2c_client *client) > +static void bq25890_remove(struct i2c_client *client) >  { >         struct bq25890_device *bq = i2c_get_clientdata(client); >   > @@ -1269,8 +1269,6 @@ static int bq25890_remove(struct i2c_client > *client) >                 /* reset all registers to default values */ >                 bq25890_chip_reset(bq); >         } > - > -       return 0; >  } >   >  static void bq25890_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c > b/drivers/power/supply/bq27xxx_battery_i2c.c > index cf38cbfe13e9..94b00bb89c17 100644 > --- a/drivers/power/supply/bq27xxx_battery_i2c.c > +++ b/drivers/power/supply/bq27xxx_battery_i2c.c > @@ -205,7 +205,7 @@ static int bq27xxx_battery_i2c_probe(struct > i2c_client *client, >         return ret; >  } >   > -static int bq27xxx_battery_i2c_remove(struct i2c_client *client) > +static void bq27xxx_battery_i2c_remove(struct i2c_client *client) >  { >         struct bq27xxx_device_info *di = i2c_get_clientdata(client); >   > @@ -214,8 +214,6 @@ static int bq27xxx_battery_i2c_remove(struct > i2c_client *client) >         mutex_lock(&battery_mutex); >         idr_remove(&battery_id, di->id); >         mutex_unlock(&battery_mutex); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq27xxx_i2c_id_table[] = { > diff --git a/drivers/power/supply/cw2015_battery.c > b/drivers/power/supply/cw2015_battery.c > index 728e2a6cc9c3..81e17ad80163 100644 > --- a/drivers/power/supply/cw2015_battery.c > +++ b/drivers/power/supply/cw2015_battery.c > @@ -725,13 +725,12 @@ static int __maybe_unused cw_bat_resume(struct > device *dev) >   >  static SIMPLE_DEV_PM_OPS(cw_bat_pm_ops, cw_bat_suspend, > cw_bat_resume); >   > -static int cw_bat_remove(struct i2c_client *client) > +static void cw_bat_remove(struct i2c_client *client) >  { >         struct cw_battery *cw_bat = i2c_get_clientdata(client); >   >         cancel_delayed_work_sync(&cw_bat->battery_delay_work); >         power_supply_put_battery_info(cw_bat->rk_bat, cw_bat- > >battery); > -       return 0; >  } >   >  static const struct i2c_device_id cw_bat_id_table[] = { > diff --git a/drivers/power/supply/ds2782_battery.c > b/drivers/power/supply/ds2782_battery.c > index 9ae273fde7a2..d78cd05402f6 100644 > --- a/drivers/power/supply/ds2782_battery.c > +++ b/drivers/power/supply/ds2782_battery.c > @@ -312,7 +312,7 @@ static void ds278x_power_supply_init(struct > power_supply_desc *battery) >         battery->external_power_changed = NULL; >  } >   > -static int ds278x_battery_remove(struct i2c_client *client) > +static void ds278x_battery_remove(struct i2c_client *client) >  { >         struct ds278x_info *info = i2c_get_clientdata(client); >         int id = info->id; > @@ -325,8 +325,6 @@ static int ds278x_battery_remove(struct > i2c_client *client) >         mutex_lock(&battery_lock); >         idr_remove(&battery_id, id); >         mutex_unlock(&battery_lock); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/power/supply/lp8727_charger.c > b/drivers/power/supply/lp8727_charger.c > index 9ee54e397754..384a374b52c1 100644 > --- a/drivers/power/supply/lp8727_charger.c > +++ b/drivers/power/supply/lp8727_charger.c > @@ -590,13 +590,12 @@ static int lp8727_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return 0; >  } >   > -static int lp8727_remove(struct i2c_client *cl) > +static void lp8727_remove(struct i2c_client *cl) >  { >         struct lp8727_chg *pchg = i2c_get_clientdata(cl); >   >         lp8727_release_irq(pchg); >         lp8727_unregister_psy(pchg); > -       return 0; >  } >   >  static const struct of_device_id lp8727_dt_ids[] = { > diff --git a/drivers/power/supply/rt5033_battery.c > b/drivers/power/supply/rt5033_battery.c > index 7a23c70f4879..736dec608ff6 100644 > --- a/drivers/power/supply/rt5033_battery.c > +++ b/drivers/power/supply/rt5033_battery.c > @@ -149,13 +149,11 @@ static int rt5033_battery_probe(struct > i2c_client *client, >         return 0; >  } >   > -static int rt5033_battery_remove(struct i2c_client *client) > +static void rt5033_battery_remove(struct i2c_client *client) >  { >         struct rt5033_battery *battery = i2c_get_clientdata(client); >   >         power_supply_unregister(battery->psy); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt5033_battery_id[] = { > diff --git a/drivers/power/supply/rt9455_charger.c > b/drivers/power/supply/rt9455_charger.c > index 74ee54320e6a..72962286d704 100644 > --- a/drivers/power/supply/rt9455_charger.c > +++ b/drivers/power/supply/rt9455_charger.c > @@ -1698,7 +1698,7 @@ static int rt9455_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int rt9455_remove(struct i2c_client *client) > +static void rt9455_remove(struct i2c_client *client) >  { >         int ret; >         struct rt9455_info *info = i2c_get_clientdata(client); > @@ -1715,8 +1715,6 @@ static int rt9455_remove(struct i2c_client > *client) >         cancel_delayed_work_sync(&info->pwr_rdy_work); >         cancel_delayed_work_sync(&info->max_charging_time_work); >         cancel_delayed_work_sync(&info->batt_presence_work); > - > -       return 0; >  } >   >  static const struct i2c_device_id rt9455_i2c_id_table[] = { > diff --git a/drivers/power/supply/smb347-charger.c > b/drivers/power/supply/smb347-charger.c > index 1511f71f937c..996a82f8a2a1 100644 > --- a/drivers/power/supply/smb347-charger.c > +++ b/drivers/power/supply/smb347-charger.c > @@ -1595,14 +1595,12 @@ static int smb347_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int smb347_remove(struct i2c_client *client) > +static void smb347_remove(struct i2c_client *client) >  { >         struct smb347_charger *smb = i2c_get_clientdata(client); >   >         smb347_usb_vbus_regulator_disable(smb->usb_rdev); >         smb347_irq_disable(smb); > - > -       return 0; >  } >   >  static void smb347_shutdown(struct i2c_client *client) > diff --git a/drivers/power/supply/z2_battery.c > b/drivers/power/supply/z2_battery.c > index 7ed4e4bb26ec..1897c2984860 100644 > --- a/drivers/power/supply/z2_battery.c > +++ b/drivers/power/supply/z2_battery.c > @@ -251,7 +251,7 @@ static int z2_batt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int z2_batt_remove(struct i2c_client *client) > +static void z2_batt_remove(struct i2c_client *client) >  { >         struct z2_charger *charger = i2c_get_clientdata(client); >   > @@ -263,8 +263,6 @@ static int z2_batt_remove(struct i2c_client > *client) >                 free_irq(gpiod_to_irq(charger->charge_gpiod), > charger); >   >         kfree(charger); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c > index c91fa7f9e33d..f230c10d28bb 100644 > --- a/drivers/pwm/pwm-pca9685.c > +++ b/drivers/pwm/pwm-pca9685.c > @@ -598,7 +598,7 @@ static int pca9685_pwm_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int pca9685_pwm_remove(struct i2c_client *client) > +static void pca9685_pwm_remove(struct i2c_client *client) >  { >         struct pca9685 *pca = i2c_get_clientdata(client); >   > @@ -610,8 +610,6 @@ static int pca9685_pwm_remove(struct i2c_client > *client) >         } >   >         pm_runtime_disable(&client->dev); > - > -       return 0; >  } >   >  static int __maybe_unused pca9685_pwm_runtime_suspend(struct device > *dev) > diff --git a/drivers/regulator/da9121-regulator.c > b/drivers/regulator/da9121-regulator.c > index 76e0e23bf598..e4c753b83088 100644 > --- a/drivers/regulator/da9121-regulator.c > +++ b/drivers/regulator/da9121-regulator.c > @@ -1164,7 +1164,7 @@ static int da9121_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int da9121_i2c_remove(struct i2c_client *i2c) > +static void da9121_i2c_remove(struct i2c_client *i2c) >  { >         struct da9121 *chip = i2c_get_clientdata(i2c); >         const int mask_all[4] = { 0xFF, 0xFF, 0xFF, 0xFF }; > @@ -1176,7 +1176,6 @@ static int da9121_i2c_remove(struct i2c_client > *i2c) >         ret = regmap_bulk_write(chip->regmap, DA9121_REG_SYS_MASK_0, > mask_all, 4); >         if (ret != 0) >                 dev_err(chip->dev, "Failed to set IRQ masks: %d\n", > ret); > -       return 0; >  } >   >  static const struct i2c_device_id da9121_i2c_id[] = { > diff --git a/drivers/regulator/lp8755.c b/drivers/regulator/lp8755.c > index 321bec6e3f8d..31b43426d47c 100644 > --- a/drivers/regulator/lp8755.c > +++ b/drivers/regulator/lp8755.c > @@ -422,15 +422,13 @@ static int lp8755_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lp8755_remove(struct i2c_client *client) > +static void lp8755_remove(struct i2c_client *client) >  { >         int icnt; >         struct lp8755_chip *pchip = i2c_get_clientdata(client); >   >         for (icnt = 0; icnt < LP8755_BUCK_MAX; icnt++) >                 regmap_write(pchip->regmap, icnt, 0x00); > - > -       return 0; >  } >   >  static const struct i2c_device_id lp8755_id[] = { > diff --git a/drivers/regulator/rpi-panel-attiny-regulator.c > b/drivers/regulator/rpi-panel-attiny-regulator.c > index fa8706a352ce..04b4ab131985 100644 > --- a/drivers/regulator/rpi-panel-attiny-regulator.c > +++ b/drivers/regulator/rpi-panel-attiny-regulator.c > @@ -385,13 +385,11 @@ static int attiny_i2c_probe(struct i2c_client > *i2c, >         return ret; >  } >   > -static int attiny_i2c_remove(struct i2c_client *client) > +static void attiny_i2c_remove(struct i2c_client *client) >  { >         struct attiny_lcd *state = i2c_get_clientdata(client); >   >         mutex_destroy(&state->lock); > - > -       return 0; >  } >   >  static const struct of_device_id attiny_dt_ids[] = { > diff --git a/drivers/rtc/rtc-bq32k.c b/drivers/rtc/rtc-bq32k.c > index 2235c968842d..f198663f20c7 100644 > --- a/drivers/rtc/rtc-bq32k.c > +++ b/drivers/rtc/rtc-bq32k.c > @@ -298,11 +298,9 @@ static int bq32k_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bq32k_remove(struct i2c_client *client) > +static void bq32k_remove(struct i2c_client *client) >  { >         bq32k_sysfs_unregister(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id bq32k_id[] = { > diff --git a/drivers/rtc/rtc-ds1374.c b/drivers/rtc/rtc-ds1374.c > index 8db5a631bca8..44148802b1a5 100644 > --- a/drivers/rtc/rtc-ds1374.c > +++ b/drivers/rtc/rtc-ds1374.c > @@ -531,7 +531,7 @@ static int ds1374_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int ds1374_remove(struct i2c_client *client) > +static void ds1374_remove(struct i2c_client *client) >  { >         struct ds1374 *ds1374 = i2c_get_clientdata(client); >   > @@ -543,8 +543,6 @@ static int ds1374_remove(struct i2c_client > *client) >                 devm_free_irq(&client->dev, client->irq, client); >                 cancel_work_sync(&ds1374->work); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/rtc/rtc-isl12026.c b/drivers/rtc/rtc-isl12026.c > index 1fc6627d854d..1bfca39079d4 100644 > --- a/drivers/rtc/rtc-isl12026.c > +++ b/drivers/rtc/rtc-isl12026.c > @@ -472,12 +472,11 @@ static int isl12026_probe_new(struct i2c_client > *client) >         return devm_rtc_register_device(priv->rtc); >  } >   > -static int isl12026_remove(struct i2c_client *client) > +static void isl12026_remove(struct i2c_client *client) >  { >         struct isl12026 *priv = i2c_get_clientdata(client); >   >         i2c_unregister_device(priv->nvm_client); > -       return 0; >  } >   >  static const struct of_device_id isl12026_dt_match[] = { > diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c > index d868458cd40e..e0b4d3794320 100644 > --- a/drivers/rtc/rtc-m41t80.c > +++ b/drivers/rtc/rtc-m41t80.c > @@ -989,7 +989,7 @@ static int m41t80_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int m41t80_remove(struct i2c_client *client) > +static void m41t80_remove(struct i2c_client *client) >  { >  #ifdef CONFIG_RTC_DRV_M41T80_WDT >         struct m41t80_data *clientdata = i2c_get_clientdata(client); > @@ -999,8 +999,6 @@ static int m41t80_remove(struct i2c_client > *client) >                 unregister_reboot_notifier(&wdt_notifier); >         } >  #endif > - > -       return 0; >  } >   >  static struct i2c_driver m41t80_driver = { > diff --git a/drivers/rtc/rtc-rs5c372.c b/drivers/rtc/rtc-rs5c372.c > index cb15983383f5..9562c477e1c9 100644 > --- a/drivers/rtc/rtc-rs5c372.c > +++ b/drivers/rtc/rtc-rs5c372.c > @@ -910,10 +910,9 @@ static int rs5c372_probe(struct i2c_client > *client, >         return err; >  } >   > -static int rs5c372_remove(struct i2c_client *client) > +static void rs5c372_remove(struct i2c_client *client) >  { >         rs5c_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static struct i2c_driver rs5c372_driver = { > diff --git a/drivers/rtc/rtc-x1205.c b/drivers/rtc/rtc-x1205.c > index d1d5a44d9122..7792e22de805 100644 > --- a/drivers/rtc/rtc-x1205.c > +++ b/drivers/rtc/rtc-x1205.c > @@ -658,10 +658,9 @@ static int x1205_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int x1205_remove(struct i2c_client *client) > +static void x1205_remove(struct i2c_client *client) >  { >         x1205_sysfs_unregister(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id x1205_id[] = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > index cbc8b1d91995..783f1b88ebf2 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c > @@ -1194,7 +1194,7 @@ static const struct v4l2_subdev_ops gc0310_ops > = { >         .sensor = &gc0310_sensor_ops, >  }; >   > -static int gc0310_remove(struct i2c_client *client) > +static void gc0310_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc0310_device *dev = to_gc0310_sensor(sd); > @@ -1207,8 +1207,6 @@ static int gc0310_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc0310_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > index 0e6b2e6100d1..4d5a7e335f85 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc2235.c > @@ -952,7 +952,7 @@ static const struct v4l2_subdev_ops gc2235_ops = > { >         .sensor = &gc2235_sensor_ops, >  }; >   > -static int gc2235_remove(struct i2c_client *client) > +static void gc2235_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct gc2235_device *dev = to_gc2235_sensor(sd); > @@ -965,8 +965,6 @@ static int gc2235_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int gc2235_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > index e046489cd253..75d16b525294 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-lm3554.c > @@ -910,7 +910,7 @@ static int lm3554_probe(struct i2c_client > *client) >         return err; >  } >   > -static int lm3554_remove(struct i2c_client *client) > +static void lm3554_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct lm3554 *flash = to_lm3554(sd); > @@ -926,8 +926,6 @@ static int lm3554_remove(struct i2c_client > *client) >         lm3554_gpio_uninit(client); >   >         kfree(flash); > - > -       return 0; >  } >   >  static const struct dev_pm_ops lm3554_pm_ops = { > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > index 00d6842c07d6..4601a238cb89 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c > @@ -1711,7 +1711,7 @@ static const struct v4l2_subdev_ops mt9m114_ops > = { >         .sensor = &mt9m114_sensor_ops, >  }; >   > -static int mt9m114_remove(struct i2c_client *client) > +static void mt9m114_remove(struct i2c_client *client) >  { >         struct mt9m114_device *dev; >         struct v4l2_subdev *sd = i2c_get_clientdata(client); > @@ -1722,7 +1722,6 @@ static int mt9m114_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > -       return 0; >  } >   >  static int mt9m114_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > index 4ba99c660681..8f48b23be3aa 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > @@ -1135,7 +1135,7 @@ static const struct v4l2_subdev_ops ov2680_ops > = { >         .sensor = &ov2680_sensor_ops, >  }; >   > -static int ov2680_remove(struct i2c_client *client) > +static void ov2680_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2680_device *dev = to_ov2680_sensor(sd); > @@ -1148,8 +1148,6 @@ static int ov2680_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov2680_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > index da98094d7094..715a7aeeda18 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c > @@ -1094,7 +1094,7 @@ static const struct v4l2_subdev_ops ov2722_ops > = { >         .sensor = &ov2722_sensor_ops, >  }; >   > -static int ov2722_remove(struct i2c_client *client) > +static void ov2722_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov2722_device *dev = to_ov2722_sensor(sd); > @@ -1107,8 +1107,6 @@ static int ov2722_remove(struct i2c_client > *client) >   >         media_entity_cleanup(&dev->sd.entity); >         kfree(dev); > - > -       return 0; >  } >   >  static int __ov2722_init_ctrl_handler(struct ov2722_device *dev) > diff --git a/drivers/staging/media/atomisp/i2c/ov5693/atomisp- > ov5693.c b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > index 6c95f57a52e9..c1cd631455e6 100644 > --- a/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > +++ b/drivers/staging/media/atomisp/i2c/ov5693/atomisp-ov5693.c > @@ -1877,7 +1877,7 @@ static const struct v4l2_subdev_ops ov5693_ops > = { >         .pad = &ov5693_pad_ops, >  }; >   > -static int ov5693_remove(struct i2c_client *client) > +static void ov5693_remove(struct i2c_client *client) >  { >         struct v4l2_subdev *sd = i2c_get_clientdata(client); >         struct ov5693_device *dev = to_ov5693_sensor(sd); > @@ -1893,8 +1893,6 @@ static int ov5693_remove(struct i2c_client > *client) >         media_entity_cleanup(&dev->sd.entity); >         v4l2_ctrl_handler_free(&dev->ctrl_handler); >         kfree(dev); > - > -       return 0; >  } >   >  static int ov5693_probe(struct i2c_client *client) > diff --git a/drivers/staging/media/max96712/max96712.c > b/drivers/staging/media/max96712/max96712.c > index 6b5abd958bff..99b333b68198 100644 > --- a/drivers/staging/media/max96712/max96712.c > +++ b/drivers/staging/media/max96712/max96712.c > @@ -407,15 +407,13 @@ static int max96712_probe(struct i2c_client > *client) >         return max96712_v4l2_register(priv); >  } >   > -static int max96712_remove(struct i2c_client *client) > +static void max96712_remove(struct i2c_client *client) >  { >         struct max96712_priv *priv = i2c_get_clientdata(client); >   >         v4l2_async_unregister_subdev(&priv->sd); >   >         gpiod_set_value_cansleep(priv->gpiod_pwdn, 0); > - > -       return 0; >  } >   >  static const struct of_device_id max96712_of_table[] = { > diff --git a/drivers/staging/most/i2c/i2c.c > b/drivers/staging/most/i2c/i2c.c > index 7042f10887bb..285a071f02be 100644 > --- a/drivers/staging/most/i2c/i2c.c > +++ b/drivers/staging/most/i2c/i2c.c > @@ -340,14 +340,12 @@ static int i2c_probe(struct i2c_client *client, > const struct i2c_device_id *id) >   * >   * Unregister the i2c client device as a MOST interface >   */ > -static int i2c_remove(struct i2c_client *client) > +static void i2c_remove(struct i2c_client *client) >  { >         struct hdm_i2c *dev = i2c_get_clientdata(client); >   >         most_deregister_interface(&dev->most_iface); >         kfree(dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id i2c_id[] = { > diff --git a/drivers/staging/olpc_dcon/olpc_dcon.c > b/drivers/staging/olpc_dcon/olpc_dcon.c > index 7284cb4ac395..aea2841f7598 100644 > --- a/drivers/staging/olpc_dcon/olpc_dcon.c > +++ b/drivers/staging/olpc_dcon/olpc_dcon.c > @@ -671,7 +671,7 @@ static int dcon_probe(struct i2c_client *client, > const struct i2c_device_id *id) >         return rc; >  } >   > -static int dcon_remove(struct i2c_client *client) > +static void dcon_remove(struct i2c_client *client) >  { >         struct dcon_priv *dcon = i2c_get_clientdata(client); >   > @@ -687,8 +687,6 @@ static int dcon_remove(struct i2c_client *client) >         cancel_work_sync(&dcon->switch_source); >   >         kfree(dcon); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/drivers/tty/serial/sc16is7xx.c > b/drivers/tty/serial/sc16is7xx.c > index 8472bf70477c..cc3b22cbda9b 100644 > --- a/drivers/tty/serial/sc16is7xx.c > +++ b/drivers/tty/serial/sc16is7xx.c > @@ -1683,11 +1683,9 @@ static int sc16is7xx_i2c_probe(struct > i2c_client *i2c, >         return sc16is7xx_probe(&i2c->dev, devtype, regmap, i2c->irq); >  } >   > -static int sc16is7xx_i2c_remove(struct i2c_client *client) > +static void sc16is7xx_i2c_remove(struct i2c_client *client) >  { >         sc16is7xx_remove(&client->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id sc16is7xx_i2c_id_table[] = { > diff --git a/drivers/usb/misc/usb3503.c b/drivers/usb/misc/usb3503.c > index 330f494cd158..3c9fa663475f 100644 > --- a/drivers/usb/misc/usb3503.c > +++ b/drivers/usb/misc/usb3503.c > @@ -289,14 +289,12 @@ static int usb3503_i2c_probe(struct i2c_client > *i2c, >         return usb3503_probe(hub); >  } >   > -static int usb3503_i2c_remove(struct i2c_client *i2c) > +static void usb3503_i2c_remove(struct i2c_client *i2c) >  { >         struct usb3503 *hub; >   >         hub = i2c_get_clientdata(i2c); >         clk_disable_unprepare(hub->clk); > - > -       return 0; >  } >   >  static int usb3503_platform_probe(struct platform_device *pdev) > diff --git a/drivers/usb/phy/phy-isp1301-omap.c > b/drivers/usb/phy/phy-isp1301-omap.c > index f8bd93fe69cd..e5d3f206097c 100644 > --- a/drivers/usb/phy/phy-isp1301-omap.c > +++ b/drivers/usb/phy/phy-isp1301-omap.c > @@ -1196,7 +1196,7 @@ static void isp1301_release(struct device *dev) >   >  static struct isp1301 *the_transceiver; >   > -static int isp1301_remove(struct i2c_client *i2c) > +static void isp1301_remove(struct i2c_client *i2c) >  { >         struct isp1301  *isp; >   > @@ -1214,8 +1214,6 @@ static int isp1301_remove(struct i2c_client > *i2c) >   >         put_device(&i2c->dev); >         the_transceiver = NULL; > - > -       return 0; >  } >   >  /*------------------------------------------------------------------ > -------*/ > diff --git a/drivers/usb/phy/phy-isp1301.c b/drivers/usb/phy/phy- > isp1301.c > index ad3d57f1c273..c2777a5c1f4e 100644 > --- a/drivers/usb/phy/phy-isp1301.c > +++ b/drivers/usb/phy/phy-isp1301.c > @@ -120,14 +120,12 @@ static int isp1301_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int isp1301_remove(struct i2c_client *client) > +static void isp1301_remove(struct i2c_client *client) >  { >         struct isp1301 *isp = i2c_get_clientdata(client); >   >         usb_remove_phy(&isp->phy); >         isp1301_i2c_client = NULL; > - > -       return 0; >  } >   >  static struct i2c_driver isp1301_driver = { > diff --git a/drivers/usb/typec/hd3ss3220.c > b/drivers/usb/typec/hd3ss3220.c > index cd47c3597e19..2a58185fb14c 100644 > --- a/drivers/usb/typec/hd3ss3220.c > +++ b/drivers/usb/typec/hd3ss3220.c > @@ -245,14 +245,12 @@ static int hd3ss3220_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int hd3ss3220_remove(struct i2c_client *client) > +static void hd3ss3220_remove(struct i2c_client *client) >  { >         struct hd3ss3220 *hd3ss3220 = i2c_get_clientdata(client); >   >         typec_unregister_port(hd3ss3220->port); >         usb_role_switch_put(hd3ss3220->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id dev_ids[] = { > diff --git a/drivers/usb/typec/mux/fsa4480.c > b/drivers/usb/typec/mux/fsa4480.c > index 6184f5367190..d6495e533e58 100644 > --- a/drivers/usb/typec/mux/fsa4480.c > +++ b/drivers/usb/typec/mux/fsa4480.c > @@ -181,14 +181,12 @@ static int fsa4480_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int fsa4480_remove(struct i2c_client *client) > +static void fsa4480_remove(struct i2c_client *client) >  { >         struct fsa4480 *fsa = i2c_get_clientdata(client); >   >         typec_mux_unregister(fsa->mux); >         typec_switch_unregister(fsa->sw); > - > -       return 0; >  } >   >  static const struct i2c_device_id fsa4480_table[] = { > diff --git a/drivers/usb/typec/mux/pi3usb30532.c > b/drivers/usb/typec/mux/pi3usb30532.c > index 6ce9f282594e..1cd388b55c30 100644 > --- a/drivers/usb/typec/mux/pi3usb30532.c > +++ b/drivers/usb/typec/mux/pi3usb30532.c > @@ -160,13 +160,12 @@ static int pi3usb30532_probe(struct i2c_client > *client) >         return 0; >  } >   > -static int pi3usb30532_remove(struct i2c_client *client) > +static void pi3usb30532_remove(struct i2c_client *client) >  { >         struct pi3usb30532 *pi = i2c_get_clientdata(client); >   >         typec_mux_unregister(pi->mux); >         typec_switch_unregister(pi->sw); > -       return 0; >  } >   >  static const struct i2c_device_id pi3usb30532_table[] = { > diff --git a/drivers/usb/typec/rt1719.c b/drivers/usb/typec/rt1719.c > index f1b698edd7eb..ea8b700b0ceb 100644 > --- a/drivers/usb/typec/rt1719.c > +++ b/drivers/usb/typec/rt1719.c > @@ -930,14 +930,12 @@ static int rt1719_probe(struct i2c_client *i2c) >         return ret; >  } >   > -static int rt1719_remove(struct i2c_client *i2c) > +static void rt1719_remove(struct i2c_client *i2c) >  { >         struct rt1719_data *data = i2c_get_clientdata(i2c); >   >         typec_unregister_port(data->port); >         usb_role_switch_put(data->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id __maybe_unused > rt1719_device_table[] = { > diff --git a/drivers/usb/typec/stusb160x.c > b/drivers/usb/typec/stusb160x.c > index e7745d1c2a5c..8638f1d39896 100644 > --- a/drivers/usb/typec/stusb160x.c > +++ b/drivers/usb/typec/stusb160x.c > @@ -801,7 +801,7 @@ static int stusb160x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int stusb160x_remove(struct i2c_client *client) > +static void stusb160x_remove(struct i2c_client *client) >  { >         struct stusb160x *chip = i2c_get_clientdata(client); >   > @@ -823,8 +823,6 @@ static int stusb160x_remove(struct i2c_client > *client) >   >         if (chip->main_supply) >                 regulator_disable(chip->main_supply); > - > -       return 0; >  } >   >  static int __maybe_unused stusb160x_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/fusb302.c > b/drivers/usb/typec/tcpm/fusb302.c > index 96c55eaf3f80..5e9348f28d50 100644 > --- a/drivers/usb/typec/tcpm/fusb302.c > +++ b/drivers/usb/typec/tcpm/fusb302.c > @@ -1771,7 +1771,7 @@ static int fusb302_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int fusb302_remove(struct i2c_client *client) > +static void fusb302_remove(struct i2c_client *client) >  { >         struct fusb302_chip *chip = i2c_get_clientdata(client); >   > @@ -1783,8 +1783,6 @@ static int fusb302_remove(struct i2c_client > *client) >         fwnode_handle_put(chip->tcpc_dev.fwnode); >         destroy_workqueue(chip->wq); >         fusb302_debugfs_exit(chip); > - > -       return 0; >  } >   >  static int fusb302_pm_suspend(struct device *dev) > diff --git a/drivers/usb/typec/tcpm/tcpci.c > b/drivers/usb/typec/tcpm/tcpci.c > index f33e08eb7670..c48fca60bb06 100644 > --- a/drivers/usb/typec/tcpm/tcpci.c > +++ b/drivers/usb/typec/tcpm/tcpci.c > @@ -869,7 +869,7 @@ static int tcpci_probe(struct i2c_client *client, >         return 0; >  } >   > -static int tcpci_remove(struct i2c_client *client) > +static void tcpci_remove(struct i2c_client *client) >  { >         struct tcpci_chip *chip = i2c_get_clientdata(client); >         int err; > @@ -880,8 +880,6 @@ static int tcpci_remove(struct i2c_client > *client) >                 dev_warn(&client->dev, "Failed to disable irqs > (%pe)\n", ERR_PTR(err)); >   >         tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_maxim.c > b/drivers/usb/typec/tcpm/tcpci_maxim.c > index df2505570f07..a11be5754128 100644 > --- a/drivers/usb/typec/tcpm/tcpci_maxim.c > +++ b/drivers/usb/typec/tcpm/tcpci_maxim.c > @@ -493,14 +493,12 @@ static int max_tcpci_probe(struct i2c_client > *client, const struct i2c_device_id >         return ret; >  } >   > -static int max_tcpci_remove(struct i2c_client *client) > +static void max_tcpci_remove(struct i2c_client *client) >  { >         struct max_tcpci_chip *chip = i2c_get_clientdata(client); >   >         if (!IS_ERR_OR_NULL(chip->tcpci)) >                 tcpci_unregister_port(chip->tcpci); > - > -       return 0; >  } >   >  static const struct i2c_device_id max_tcpci_id[] = { > diff --git a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > index b56a0880a044..9ad4924b4ba7 100644 > --- a/drivers/usb/typec/tcpm/tcpci_rt1711h.c > +++ b/drivers/usb/typec/tcpm/tcpci_rt1711h.c > @@ -263,12 +263,11 @@ static int rt1711h_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int rt1711h_remove(struct i2c_client *client) > +static void rt1711h_remove(struct i2c_client *client) >  { >         struct rt1711h_chip *chip = i2c_get_clientdata(client); >   >         tcpci_unregister_port(chip->tcpci); > -       return 0; >  } >   >  static const struct i2c_device_id rt1711h_id[] = { > diff --git a/drivers/usb/typec/tipd/core.c > b/drivers/usb/typec/tipd/core.c > index dfbba5ae9487..b637e8b378b3 100644 > --- a/drivers/usb/typec/tipd/core.c > +++ b/drivers/usb/typec/tipd/core.c > @@ -857,15 +857,13 @@ static int tps6598x_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tps6598x_remove(struct i2c_client *client) > +static void tps6598x_remove(struct i2c_client *client) >  { >         struct tps6598x *tps = i2c_get_clientdata(client); >   >         tps6598x_disconnect(tps, 0); >         typec_unregister_port(tps->port); >         usb_role_switch_put(tps->role_sw); > - > -       return 0; >  } >   >  static const struct of_device_id tps6598x_of_match[] = { > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c > b/drivers/usb/typec/ucsi/ucsi_ccg.c > index 6db7c8ddd51c..920b7e743f56 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -1398,7 +1398,7 @@ static int ucsi_ccg_probe(struct i2c_client > *client, >         return status; >  } >   > -static int ucsi_ccg_remove(struct i2c_client *client) > +static void ucsi_ccg_remove(struct i2c_client *client) >  { >         struct ucsi_ccg *uc = i2c_get_clientdata(client); >   > @@ -1408,8 +1408,6 @@ static int ucsi_ccg_remove(struct i2c_client > *client) >         ucsi_unregister(uc->ucsi); >         ucsi_destroy(uc->ucsi); >         free_irq(uc->irq, uc); > - > -       return 0; >  } >   >  static const struct i2c_device_id ucsi_ccg_device_id[] = { > diff --git a/drivers/usb/typec/wusb3801.c > b/drivers/usb/typec/wusb3801.c > index e63509f8b01e..3cc7a15ecbd3 100644 > --- a/drivers/usb/typec/wusb3801.c > +++ b/drivers/usb/typec/wusb3801.c > @@ -399,7 +399,7 @@ static int wusb3801_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int wusb3801_remove(struct i2c_client *client) > +static void wusb3801_remove(struct i2c_client *client) >  { >         struct wusb3801 *wusb3801 = i2c_get_clientdata(client); >   > @@ -411,8 +411,6 @@ static int wusb3801_remove(struct i2c_client > *client) >   >         if (wusb3801->vbus_on) >                 regulator_disable(wusb3801->vbus_supply); > - > -       return 0; >  } >   >  static const struct of_device_id wusb3801_of_match[] = { > diff --git a/drivers/video/backlight/adp8860_bl.c > b/drivers/video/backlight/adp8860_bl.c > index 8ec19425671f..b0fe02273e87 100644 > --- a/drivers/video/backlight/adp8860_bl.c > +++ b/drivers/video/backlight/adp8860_bl.c > @@ -753,7 +753,7 @@ static int adp8860_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8860_remove(struct i2c_client *client) > +static void adp8860_remove(struct i2c_client *client) >  { >         struct adp8860_bl *data = i2c_get_clientdata(client); >   > @@ -765,8 +765,6 @@ static int adp8860_remove(struct i2c_client > *client) >         if (data->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8860_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/adp8870_bl.c > b/drivers/video/backlight/adp8870_bl.c > index 8b5213a39527..5becace3fd0f 100644 > --- a/drivers/video/backlight/adp8870_bl.c > +++ b/drivers/video/backlight/adp8870_bl.c > @@ -925,7 +925,7 @@ static int adp8870_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int adp8870_remove(struct i2c_client *client) > +static void adp8870_remove(struct i2c_client *client) >  { >         struct adp8870_bl *data = i2c_get_clientdata(client); >   > @@ -937,8 +937,6 @@ static int adp8870_remove(struct i2c_client > *client) >         if (data->pdata->en_ambl_sens) >                 sysfs_remove_group(&data->bl->dev.kobj, >                         &adp8870_bl_attr_group); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/backlight/arcxcnn_bl.c > b/drivers/video/backlight/arcxcnn_bl.c > index 7b1c0a0e6cad..060c0eef6a52 100644 > --- a/drivers/video/backlight/arcxcnn_bl.c > +++ b/drivers/video/backlight/arcxcnn_bl.c > @@ -362,7 +362,7 @@ static int arcxcnn_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int arcxcnn_remove(struct i2c_client *cl) > +static void arcxcnn_remove(struct i2c_client *cl) >  { >         struct arcxcnn *lp = i2c_get_clientdata(cl); >   > @@ -376,8 +376,6 @@ static int arcxcnn_remove(struct i2c_client *cl) >         lp->bl->props.brightness = 0; >   >         backlight_update_status(lp->bl); > - > -       return 0; >  } >   >  static const struct of_device_id arcxcnn_dt_ids[] = { > diff --git a/drivers/video/backlight/bd6107.c > b/drivers/video/backlight/bd6107.c > index 515184fbe33a..a506872d4396 100644 > --- a/drivers/video/backlight/bd6107.c > +++ b/drivers/video/backlight/bd6107.c > @@ -175,14 +175,12 @@ static int bd6107_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int bd6107_remove(struct i2c_client *client) > +static void bd6107_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id bd6107_ids[] = { > diff --git a/drivers/video/backlight/lm3630a_bl.c > b/drivers/video/backlight/lm3630a_bl.c > index 1d17c439430e..475f35635bf6 100644 > --- a/drivers/video/backlight/lm3630a_bl.c > +++ b/drivers/video/backlight/lm3630a_bl.c > @@ -579,7 +579,7 @@ static int lm3630a_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lm3630a_remove(struct i2c_client *client) > +static void lm3630a_remove(struct i2c_client *client) >  { >         int rval; >         struct lm3630a_chip *pchip = i2c_get_clientdata(client); > @@ -596,7 +596,6 @@ static int lm3630a_remove(struct i2c_client > *client) >                 free_irq(pchip->irq, pchip); >                 destroy_workqueue(pchip->irqthread); >         } > -       return 0; >  } >   >  static const struct i2c_device_id lm3630a_id[] = { > diff --git a/drivers/video/backlight/lm3639_bl.c > b/drivers/video/backlight/lm3639_bl.c > index 48c04155a5f9..6580911671a3 100644 > --- a/drivers/video/backlight/lm3639_bl.c > +++ b/drivers/video/backlight/lm3639_bl.c > @@ -390,7 +390,7 @@ static int lm3639_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int lm3639_remove(struct i2c_client *client) > +static void lm3639_remove(struct i2c_client *client) >  { >         struct lm3639_chip_data *pchip = i2c_get_clientdata(client); >   > @@ -400,7 +400,6 @@ static int lm3639_remove(struct i2c_client > *client) >         led_classdev_unregister(&pchip->cdev_flash); >         if (pchip->bled) >                 device_remove_file(&(pchip->bled->dev), > &dev_attr_bled_mode); > -       return 0; >  } >   >  static const struct i2c_device_id lm3639_id[] = { > diff --git a/drivers/video/backlight/lp855x_bl.c > b/drivers/video/backlight/lp855x_bl.c > index 2b9e2bbbb03e..43b39cf68b04 100644 > --- a/drivers/video/backlight/lp855x_bl.c > +++ b/drivers/video/backlight/lp855x_bl.c > @@ -537,7 +537,7 @@ static int lp855x_probe(struct i2c_client *cl, > const struct i2c_device_id *id) >         return ret; >  } >   > -static int lp855x_remove(struct i2c_client *cl) > +static void lp855x_remove(struct i2c_client *cl) >  { >         struct lp855x *lp = i2c_get_clientdata(cl); >   > @@ -548,8 +548,6 @@ static int lp855x_remove(struct i2c_client *cl) >         if (lp->supply) >                 regulator_disable(lp->supply); >         sysfs_remove_group(&lp->dev->kobj, &lp855x_attr_group); > - > -       return 0; >  } >   >  static const struct of_device_id lp855x_dt_ids[] = { > diff --git a/drivers/video/backlight/lv5207lp.c > b/drivers/video/backlight/lv5207lp.c > index 1842ae9a55f8..767b800d79fa 100644 > --- a/drivers/video/backlight/lv5207lp.c > +++ b/drivers/video/backlight/lv5207lp.c > @@ -124,14 +124,12 @@ static int lv5207lp_probe(struct i2c_client > *client, >         return 0; >  } >   > -static int lv5207lp_remove(struct i2c_client *client) > +static void lv5207lp_remove(struct i2c_client *client) >  { >         struct backlight_device *backlight = > i2c_get_clientdata(client); >   >         backlight->props.brightness = 0; >         backlight_update_status(backlight); > - > -       return 0; >  } >   >  static const struct i2c_device_id lv5207lp_ids[] = { > diff --git a/drivers/video/backlight/tosa_bl.c > b/drivers/video/backlight/tosa_bl.c > index 6df6fcd132e3..f55b3d616a87 100644 > --- a/drivers/video/backlight/tosa_bl.c > +++ b/drivers/video/backlight/tosa_bl.c > @@ -121,12 +121,11 @@ static int tosa_bl_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int tosa_bl_remove(struct i2c_client *client) > +static void tosa_bl_remove(struct i2c_client *client) >  { >         struct tosa_bl_data *data = i2c_get_clientdata(client); >   >         data->bl = NULL; > -       return 0; >  } >   >  #ifdef CONFIG_PM_SLEEP > diff --git a/drivers/video/fbdev/matrox/matroxfb_maven.c > b/drivers/video/fbdev/matrox/matroxfb_maven.c > index 9a98c4a6ba33..f2e02958673d 100644 > --- a/drivers/video/fbdev/matrox/matroxfb_maven.c > +++ b/drivers/video/fbdev/matrox/matroxfb_maven.c > @@ -1276,11 +1276,10 @@ ERROR0:; >         return err; >  } >   > -static int maven_remove(struct i2c_client *client) > +static void maven_remove(struct i2c_client *client) >  { >         maven_shutdown_client(client); >         kfree(i2c_get_clientdata(client)); > -       return 0; >  } >   >  static const struct i2c_device_id maven_id[] = { > diff --git a/drivers/video/fbdev/ssd1307fb.c > b/drivers/video/fbdev/ssd1307fb.c > index 5c765655d000..fbf26cdfb1c0 100644 > --- a/drivers/video/fbdev/ssd1307fb.c > +++ b/drivers/video/fbdev/ssd1307fb.c > @@ -817,7 +817,7 @@ static int ssd1307fb_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int ssd1307fb_remove(struct i2c_client *client) > +static void ssd1307fb_remove(struct i2c_client *client) >  { >         struct fb_info *info = i2c_get_clientdata(client); >         struct ssd1307fb_par *par = info->par; > @@ -836,8 +836,6 @@ static int ssd1307fb_remove(struct i2c_client > *client) >         fb_deferred_io_cleanup(info); >         __free_pages(__va(info->fix.smem_start), get_order(info- > >fix.smem_len)); >         framebuffer_release(info); > - > -       return 0; >  } >   >  static const struct i2c_device_id ssd1307fb_i2c_id[] = { > diff --git a/drivers/w1/masters/ds2482.c > b/drivers/w1/masters/ds2482.c > index 6c962e88501c..62c44616d8a9 100644 > --- a/drivers/w1/masters/ds2482.c > +++ b/drivers/w1/masters/ds2482.c > @@ -525,7 +525,7 @@ static int ds2482_probe(struct i2c_client > *client, >         return err; >  } >   > -static int ds2482_remove(struct i2c_client *client) > +static void ds2482_remove(struct i2c_client *client) >  { >         struct ds2482_data   *data = i2c_get_clientdata(client); >         int idx; > @@ -538,7 +538,6 @@ static int ds2482_remove(struct i2c_client > *client) >   >         /* Free the memory */ >         kfree(data); > -       return 0; >  } >   >  /* > diff --git a/drivers/watchdog/ziirave_wdt.c > b/drivers/watchdog/ziirave_wdt.c > index c5a9b820d43a..d0e88875443a 100644 > --- a/drivers/watchdog/ziirave_wdt.c > +++ b/drivers/watchdog/ziirave_wdt.c > @@ -708,13 +708,11 @@ static int ziirave_wdt_probe(struct i2c_client > *client, >         return ret; >  } >   > -static int ziirave_wdt_remove(struct i2c_client *client) > +static void ziirave_wdt_remove(struct i2c_client *client) >  { >         struct ziirave_wdt_data *w_priv = i2c_get_clientdata(client); >   >         watchdog_unregister_device(&w_priv->wdd); > - > -       return 0; >  } >   >  static const struct i2c_device_id ziirave_wdt_id[] = { > diff --git a/include/linux/i2c.h b/include/linux/i2c.h > index fbda5ada2afc..066b541a0d5d 100644 > --- a/include/linux/i2c.h > +++ b/include/linux/i2c.h > @@ -273,7 +273,7 @@ struct i2c_driver { >   >         /* Standard driver model interfaces */ >         int (*probe)(struct i2c_client *client, const struct > i2c_device_id *id); > -       int (*remove)(struct i2c_client *client); > +       void (*remove)(struct i2c_client *client); >   >         /* New driver model interface to aid the seamless removal of > the >          * current probe()'s, more commonly unused than used second > parameter. > diff --git a/lib/Kconfig.kasan b/lib/Kconfig.kasan > index f0973da583e0..366e61639cb2 100644 > --- a/lib/Kconfig.kasan > +++ b/lib/Kconfig.kasan > @@ -149,6 +149,7 @@ config KASAN_STACK >         depends on KASAN_GENERIC || KASAN_SW_TAGS >         depends on !ARCH_DISABLE_KASAN_INLINE >         default y if CC_IS_GCC > +       depends on !ARM >         help >           Disables stack instrumentation and thus KASAN's ability to > detect >           out-of-bounds bugs in stack variables. > diff --git a/sound/aoa/codecs/onyx.c b/sound/aoa/codecs/onyx.c > index 1abee841cc45..2d0f904aba00 100644 > --- a/sound/aoa/codecs/onyx.c > +++ b/sound/aoa/codecs/onyx.c > @@ -1029,7 +1029,7 @@ static int onyx_i2c_probe(struct i2c_client > *client, >         return -ENODEV; >  } >   > -static int onyx_i2c_remove(struct i2c_client *client) > +static void onyx_i2c_remove(struct i2c_client *client) >  { >         struct onyx *onyx = i2c_get_clientdata(client); >   > @@ -1037,7 +1037,6 @@ static int onyx_i2c_remove(struct i2c_client > *client) >         of_node_put(onyx->codec.node); >         kfree(onyx->codec_info); >         kfree(onyx); > -       return 0; >  } >   >  static const struct i2c_device_id onyx_i2c_id[] = { > diff --git a/sound/aoa/codecs/tas.c b/sound/aoa/codecs/tas.c > index ab19a37e2a68..ab89475b7715 100644 > --- a/sound/aoa/codecs/tas.c > +++ b/sound/aoa/codecs/tas.c > @@ -912,7 +912,7 @@ static int tas_i2c_probe(struct i2c_client > *client, >         return -EINVAL; >  } >   > -static int tas_i2c_remove(struct i2c_client *client) > +static void tas_i2c_remove(struct i2c_client *client) >  { >         struct tas *tas = i2c_get_clientdata(client); >         u8 tmp = TAS_ACR_ANALOG_PDOWN; > @@ -925,7 +925,6 @@ static int tas_i2c_remove(struct i2c_client > *client) >   >         mutex_destroy(&tas->mtx); >         kfree(tas); > -       return 0; >  } >   >  static const struct i2c_device_id tas_i2c_id[] = { > diff --git a/sound/pci/hda/cs35l41_hda_i2c.c > b/sound/pci/hda/cs35l41_hda_i2c.c > index e810b278fb91..acab8c058e66 100644 > --- a/sound/pci/hda/cs35l41_hda_i2c.c > +++ b/sound/pci/hda/cs35l41_hda_i2c.c > @@ -30,11 +30,9 @@ static int cs35l41_hda_i2c_probe(struct i2c_client > *clt, const struct i2c_device >                                  devm_regmap_init_i2c(clt, > &cs35l41_regmap_i2c)); >  } >   > -static int cs35l41_hda_i2c_remove(struct i2c_client *clt) > +static void cs35l41_hda_i2c_remove(struct i2c_client *clt) >  { >         cs35l41_hda_remove(&clt->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id cs35l41_hda_i2c_id[] = { > diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c > index 6e5daae18f9d..80e5108157ef 100644 > --- a/sound/ppc/keywest.c > +++ b/sound/ppc/keywest.c > @@ -71,14 +71,12 @@ static int keywest_attach_adapter(struct > i2c_adapter *adapter) >         return 0; >  } >   > -static int keywest_remove(struct i2c_client *client) > +static void keywest_remove(struct i2c_client *client) >  { >         if (! keywest_ctx) > -               return 0; > +               return; >         if (client == keywest_ctx->client) >                 keywest_ctx->client = NULL; > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/adau1761-i2c.c > b/sound/soc/codecs/adau1761-i2c.c > index 0683caf86aea..0cefff49569c 100644 > --- a/sound/soc/codecs/adau1761-i2c.c > +++ b/sound/soc/codecs/adau1761-i2c.c > @@ -30,10 +30,9 @@ static int adau1761_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1761_i2c_remove(struct i2c_client *client) > +static void adau1761_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1761_i2c_ids[] = { > diff --git a/sound/soc/codecs/adau1781-i2c.c > b/sound/soc/codecs/adau1781-i2c.c > index e046de0ebcc7..39021b8cfb62 100644 > --- a/sound/soc/codecs/adau1781-i2c.c > +++ b/sound/soc/codecs/adau1781-i2c.c > @@ -30,10 +30,9 @@ static int adau1781_i2c_probe(struct i2c_client > *client) >                 id->driver_data, NULL); >  } >   > -static int adau1781_i2c_remove(struct i2c_client *client) > +static void adau1781_i2c_remove(struct i2c_client *client) >  { >         adau17x1_remove(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id adau1781_i2c_ids[] = { > diff --git a/sound/soc/codecs/ak4375.c b/sound/soc/codecs/ak4375.c > index 9a7b662016b9..bfed08fe4b9e 100644 > --- a/sound/soc/codecs/ak4375.c > +++ b/sound/soc/codecs/ak4375.c > @@ -581,11 +581,9 @@ static int ak4375_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4375_i2c_remove(struct i2c_client *i2c) > +static void ak4375_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4375_of_match[] = { > diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c > index baa9ff5d0ce5..919aa0973050 100644 > --- a/sound/soc/codecs/ak4458.c > +++ b/sound/soc/codecs/ak4458.c > @@ -826,11 +826,9 @@ static int ak4458_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak4458_i2c_remove(struct i2c_client *i2c) > +static void ak4458_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak4458_of_match[] = { > diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c > index d8d9cc712d67..65a11cd39a43 100644 > --- a/sound/soc/codecs/ak4641.c > +++ b/sound/soc/codecs/ak4641.c > @@ -605,7 +605,7 @@ static int ak4641_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int ak4641_i2c_remove(struct i2c_client *i2c) > +static void ak4641_i2c_remove(struct i2c_client *i2c) >  { >         struct ak4641_platform_data *pdata = i2c->dev.platform_data; >   > @@ -617,8 +617,6 @@ static int ak4641_i2c_remove(struct i2c_client > *i2c) >                 if (gpio_is_valid(pdata->gpio_npdn)) >                         gpio_free(pdata->gpio_npdn); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id ak4641_i2c_id[] = { > diff --git a/sound/soc/codecs/ak5558.c b/sound/soc/codecs/ak5558.c > index c94cfde3e4a8..df8140907ac5 100644 > --- a/sound/soc/codecs/ak5558.c > +++ b/sound/soc/codecs/ak5558.c > @@ -481,11 +481,9 @@ static int ak5558_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int ak5558_i2c_remove(struct i2c_client *i2c) > +static void ak5558_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id ak5558_i2c_dt_ids[] __maybe_unused > = { > diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c > index badfc55bc5fa..7aec12688da9 100644 > --- a/sound/soc/codecs/cs35l32.c > +++ b/sound/soc/codecs/cs35l32.c > @@ -498,14 +498,12 @@ static int cs35l32_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l32_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l32_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l32_private *cs35l32 = > i2c_get_clientdata(i2c_client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs35l32->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs35l33.c b/sound/soc/codecs/cs35l33.c > index 47dc0f6d90a2..46972c86fd88 100644 > --- a/sound/soc/codecs/cs35l33.c > +++ b/sound/soc/codecs/cs35l33.c > @@ -1251,7 +1251,7 @@ static int cs35l33_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l33_i2c_remove(struct i2c_client *client) > +static void cs35l33_i2c_remove(struct i2c_client *client) >  { >         struct cs35l33_private *cs35l33 = i2c_get_clientdata(client); >   > @@ -1260,8 +1260,6 @@ static int cs35l33_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l33->num_core_supplies, >                 cs35l33->core_supplies); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l33_of_match[] = { > diff --git a/sound/soc/codecs/cs35l34.c b/sound/soc/codecs/cs35l34.c > index 50d509a06071..c36b824b66e6 100644 > --- a/sound/soc/codecs/cs35l34.c > +++ b/sound/soc/codecs/cs35l34.c > @@ -1129,7 +1129,7 @@ static int cs35l34_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l34_i2c_remove(struct i2c_client *client) > +static void cs35l34_i2c_remove(struct i2c_client *client) >  { >         struct cs35l34_private *cs35l34 = i2c_get_clientdata(client); >   > @@ -1138,8 +1138,6 @@ static int cs35l34_i2c_remove(struct i2c_client > *client) >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(cs35l34->num_core_supplies, >                 cs35l34->core_supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs35l34_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c > index 6b70afb70a67..0f6968a29ace 100644 > --- a/sound/soc/codecs/cs35l35.c > +++ b/sound/soc/codecs/cs35l35.c > @@ -1628,14 +1628,12 @@ static int cs35l35_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs35l35_i2c_remove(struct i2c_client *i2c_client) > +static void cs35l35_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs35l35_private *cs35l35 = > i2c_get_clientdata(i2c_client); >   >         regulator_bulk_disable(cs35l35->num_supplies, cs35l35- > >supplies); >         gpiod_set_value_cansleep(cs35l35->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l35_of_match[] = { > diff --git a/sound/soc/codecs/cs35l36.c b/sound/soc/codecs/cs35l36.c > index dfe85dc2cd20..80844471309d 100644 > --- a/sound/soc/codecs/cs35l36.c > +++ b/sound/soc/codecs/cs35l36.c > @@ -1911,7 +1911,7 @@ static int cs35l36_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs35l36_i2c_remove(struct i2c_client *client) > +static void cs35l36_i2c_remove(struct i2c_client *client) >  { >         struct cs35l36_private *cs35l36 = i2c_get_clientdata(client); >   > @@ -1925,8 +1925,6 @@ static int cs35l36_i2c_remove(struct i2c_client > *client) >                 gpiod_set_value_cansleep(cs35l36->reset_gpio, 0); >   >         regulator_bulk_disable(cs35l36->num_supplies, cs35l36- > >supplies); > - > -       return 0; >  } >  static const struct of_device_id cs35l36_of_match[] = { >         {.compatible = "cirrus,cs35l36"}, > diff --git a/sound/soc/codecs/cs35l41-i2c.c > b/sound/soc/codecs/cs35l41-i2c.c > index 37c703c08fd5..3676b596f60b 100644 > --- a/sound/soc/codecs/cs35l41-i2c.c > +++ b/sound/soc/codecs/cs35l41-i2c.c > @@ -56,13 +56,11 @@ static int cs35l41_i2c_probe(struct i2c_client > *client) >         return cs35l41_probe(cs35l41, hw_cfg); >  } >   > -static int cs35l41_i2c_remove(struct i2c_client *client) > +static void cs35l41_i2c_remove(struct i2c_client *client) >  { >         struct cs35l41_private *cs35l41 = i2c_get_clientdata(client); >   >         cs35l41_remove(cs35l41); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/cs35l45-i2c.c > b/sound/soc/codecs/cs35l45-i2c.c > index 06c2ddffb9c5..39d28641429e 100644 > --- a/sound/soc/codecs/cs35l45-i2c.c > +++ b/sound/soc/codecs/cs35l45-i2c.c > @@ -36,13 +36,11 @@ static int cs35l45_i2c_probe(struct i2c_client > *client) >         return cs35l45_probe(cs35l45); >  } >   > -static int cs35l45_i2c_remove(struct i2c_client *client) > +static void cs35l45_i2c_remove(struct i2c_client *client) >  { >         struct cs35l45_private *cs35l45 = i2c_get_clientdata(client); >   >         cs35l45_remove(cs35l45); > - > -       return 0; >  } >   >  static const struct of_device_id cs35l45_of_match[] = { > diff --git a/sound/soc/codecs/cs4234.c b/sound/soc/codecs/cs4234.c > index 881c5ba70c0e..18bddeb63762 100644 > --- a/sound/soc/codecs/cs4234.c > +++ b/sound/soc/codecs/cs4234.c > @@ -851,7 +851,7 @@ static int cs4234_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs4234_i2c_remove(struct i2c_client *i2c_client) > +static void cs4234_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4234 *cs4234 = i2c_get_clientdata(i2c_client); >         struct device *dev = &i2c_client->dev; > @@ -859,8 +859,6 @@ static int cs4234_i2c_remove(struct i2c_client > *i2c_client) >         snd_soc_unregister_component(dev); >         pm_runtime_disable(dev); >         cs4234_shutdown(cs4234); > - > -       return 0; >  } >   >  static int __maybe_unused cs4234_runtime_resume(struct device *dev) > diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c > index 86bfa8d5ec78..c16c0a0d3b56 100644 > --- a/sound/soc/codecs/cs4265.c > +++ b/sound/soc/codecs/cs4265.c > @@ -624,14 +624,12 @@ static int cs4265_i2c_probe(struct i2c_client > *i2c_client) >                         ARRAY_SIZE(cs4265_dai)); >  } >   > -static int cs4265_i2c_remove(struct i2c_client *i2c) > +static void cs4265_i2c_remove(struct i2c_client *i2c) >  { >         struct cs4265_private *cs4265 = i2c_get_clientdata(i2c); >   >         if (cs4265->reset_gpio) >                 gpiod_set_value_cansleep(cs4265->reset_gpio, 0); > - > -       return 0; >  } >   >  static const struct of_device_id cs4265_of_match[] = { > diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c > index 531f63b01554..6bfddb1b9968 100644 > --- a/sound/soc/codecs/cs4270.c > +++ b/sound/soc/codecs/cs4270.c > @@ -651,13 +651,11 @@ static const struct regmap_config cs4270_regmap > = { >   * This function puts the chip into low power mode when the i2c > device >   * is removed. >   */ > -static int cs4270_i2c_remove(struct i2c_client *i2c_client) > +static void cs4270_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs4270_private *cs4270 = > i2c_get_clientdata(i2c_client); >   >         gpiod_set_value_cansleep(cs4270->reset_gpio, 0); > - > -       return 0; >  } >   >  /** > diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c > index 4fade2388797..ab848fe5f721 100644 > --- a/sound/soc/codecs/cs42l42.c > +++ b/sound/soc/codecs/cs42l42.c > @@ -2342,7 +2342,7 @@ static int cs42l42_i2c_probe(struct i2c_client > *i2c_client) >         return ret; >  } >   > -static int cs42l42_i2c_remove(struct i2c_client *i2c_client) > +static void cs42l42_i2c_remove(struct i2c_client *i2c_client) >  { >         struct cs42l42_private *cs42l42 = > i2c_get_clientdata(i2c_client); >   > @@ -2359,8 +2359,6 @@ static int cs42l42_i2c_remove(struct i2c_client > *i2c_client) >   >         gpiod_set_value_cansleep(cs42l42->reset_gpio, 0); >         regulator_bulk_disable(ARRAY_SIZE(cs42l42->supplies), > cs42l42->supplies); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l42_pm_ops = { > diff --git a/sound/soc/codecs/cs42l51-i2c.c > b/sound/soc/codecs/cs42l51-i2c.c > index 3613fb12d623..85238339fbca 100644 > --- a/sound/soc/codecs/cs42l51-i2c.c > +++ b/sound/soc/codecs/cs42l51-i2c.c > @@ -28,11 +28,9 @@ static int cs42l51_i2c_probe(struct i2c_client > *i2c) >         return cs42l51_probe(&i2c->dev, devm_regmap_init_i2c(i2c, > &config)); >  } >   > -static int cs42l51_i2c_remove(struct i2c_client *i2c) > +static void cs42l51_i2c_remove(struct i2c_client *i2c) >  { >         cs42l51_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct dev_pm_ops cs42l51_pm_ops = { > diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c > index 510c94265b1f..d1cae24d015f 100644 > --- a/sound/soc/codecs/cs42l56.c > +++ b/sound/soc/codecs/cs42l56.c > @@ -1321,13 +1321,12 @@ static int cs42l56_i2c_probe(struct > i2c_client *i2c_client) >         return ret; >  } >   > -static int cs42l56_i2c_remove(struct i2c_client *client) > +static void cs42l56_i2c_remove(struct i2c_client *client) >  { >         struct cs42l56_private *cs42l56 = i2c_get_clientdata(client); >   >         regulator_bulk_disable(ARRAY_SIZE(cs42l56->supplies), >                                cs42l56->supplies); > -       return 0; >  } >   >  static const struct of_device_id cs42l56_of_match[] = { > diff --git a/sound/soc/codecs/cs42xx8-i2c.c > b/sound/soc/codecs/cs42xx8-i2c.c > index cb06a06d48b0..bd80e9fc907f 100644 > --- a/sound/soc/codecs/cs42xx8-i2c.c > +++ b/sound/soc/codecs/cs42xx8-i2c.c > @@ -30,11 +30,9 @@ static int cs42xx8_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cs42xx8_i2c_remove(struct i2c_client *i2c) > +static void cs42xx8_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_device_id cs42xx8_i2c_id[] = { > diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c > index a2bce0f9f247..944bb9a26ca9 100644 > --- a/sound/soc/codecs/cs43130.c > +++ b/sound/soc/codecs/cs43130.c > @@ -2584,7 +2584,7 @@ static int cs43130_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs43130_i2c_remove(struct i2c_client *client) > +static void cs43130_i2c_remove(struct i2c_client *client) >  { >         struct cs43130_private *cs43130 = i2c_get_clientdata(client); >   > @@ -2611,8 +2611,6 @@ static int cs43130_i2c_remove(struct i2c_client > *client) >   >         pm_runtime_disable(&client->dev); >         regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130- > >supplies); > - > -       return 0; >  } >   >  static int __maybe_unused cs43130_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c > index 7069e9b54857..41472ed22209 100644 > --- a/sound/soc/codecs/cs4349.c > +++ b/sound/soc/codecs/cs4349.c > @@ -306,14 +306,12 @@ static int cs4349_i2c_probe(struct i2c_client > *client) >                 &cs4349_dai, 1); >  } >   > -static int cs4349_i2c_remove(struct i2c_client *client) > +static void cs4349_i2c_remove(struct i2c_client *client) >  { >         struct cs4349_private *cs4349 = i2c_get_clientdata(client); >   >         /* Hold down reset */ >         gpiod_set_value_cansleep(cs4349->reset_gpio, 0); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c > index 360ca2ffd506..71298a18ee1a 100644 > --- a/sound/soc/codecs/cs53l30.c > +++ b/sound/soc/codecs/cs53l30.c > @@ -1044,7 +1044,7 @@ static int cs53l30_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int cs53l30_i2c_remove(struct i2c_client *client) > +static void cs53l30_i2c_remove(struct i2c_client *client) >  { >         struct cs53l30_private *cs53l30 = i2c_get_clientdata(client); >   > @@ -1053,8 +1053,6 @@ static int cs53l30_i2c_remove(struct i2c_client > *client) >   >         regulator_bulk_disable(ARRAY_SIZE(cs53l30->supplies), >                                cs53l30->supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/cx2072x.c b/sound/soc/codecs/cx2072x.c > index b35debb5818d..c24915f7dec3 100644 > --- a/sound/soc/codecs/cx2072x.c > +++ b/sound/soc/codecs/cx2072x.c > @@ -1676,10 +1676,9 @@ static int cx2072x_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int cx2072x_i2c_remove(struct i2c_client *i2c) > +static void cx2072x_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id cx2072x_i2c_id[] = { > diff --git a/sound/soc/codecs/max98090.c > b/sound/soc/codecs/max98090.c > index 576277a82d41..416e6f660541 100644 > --- a/sound/soc/codecs/max98090.c > +++ b/sound/soc/codecs/max98090.c > @@ -2618,11 +2618,9 @@ static void max98090_i2c_shutdown(struct > i2c_client *i2c) >         msleep(40); >  } >   > -static int max98090_i2c_remove(struct i2c_client *client) > +static void max98090_i2c_remove(struct i2c_client *client) >  { >         max98090_i2c_shutdown(client); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/max9860.c b/sound/soc/codecs/max9860.c > index 82f20a8e27ad..2b0d0298da83 100644 > --- a/sound/soc/codecs/max9860.c > +++ b/sound/soc/codecs/max9860.c > @@ -702,14 +702,13 @@ static int max9860_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max9860_remove(struct i2c_client *i2c) > +static void max9860_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct max9860_priv *max9860 = dev_get_drvdata(dev); >   >         pm_runtime_disable(dev); >         regulator_disable(max9860->dvddio); > -       return 0; >  } >   >  static const struct i2c_device_id max9860_i2c_id[] = { > diff --git a/sound/soc/codecs/max98927.c > b/sound/soc/codecs/max98927.c > index b7cff76d7b5b..c9694ba9c341 100644 > --- a/sound/soc/codecs/max98927.c > +++ b/sound/soc/codecs/max98927.c > @@ -935,15 +935,13 @@ static int max98927_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int max98927_i2c_remove(struct i2c_client *i2c) > +static void max98927_i2c_remove(struct i2c_client *i2c) >  { >         struct max98927_priv *max98927 = i2c_get_clientdata(i2c); >   >         if (max98927->reset_gpio) { >                 gpiod_set_value_cansleep(max98927->reset_gpio, 1); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id max98927_i2c_id[] = { > diff --git a/sound/soc/codecs/mt6660.c b/sound/soc/codecs/mt6660.c > index ba11555796ad..4971cd0b90f8 100644 > --- a/sound/soc/codecs/mt6660.c > +++ b/sound/soc/codecs/mt6660.c > @@ -516,14 +516,13 @@ static int mt6660_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int mt6660_i2c_remove(struct i2c_client *client) > +static void mt6660_i2c_remove(struct i2c_client *client) >  { >         struct mt6660_chip *chip = i2c_get_clientdata(client); >   >         pm_runtime_disable(chip->dev); >         pm_runtime_set_suspended(chip->dev); >         mutex_destroy(&chip->io_lock); > -       return 0; >  } >   >  static int __maybe_unused mt6660_i2c_runtime_suspend(struct device > *dev) > diff --git a/sound/soc/codecs/nau8821.c b/sound/soc/codecs/nau8821.c > index ce4e7f46bb06..dcae41ba2e02 100644 > --- a/sound/soc/codecs/nau8821.c > +++ b/sound/soc/codecs/nau8821.c > @@ -1665,13 +1665,11 @@ static int nau8821_i2c_probe(struct > i2c_client *i2c) >         return ret; >  } >   > -static int nau8821_i2c_remove(struct i2c_client *i2c_client) > +static void nau8821_i2c_remove(struct i2c_client *i2c_client) >  { >         struct nau8821 *nau8821 = i2c_get_clientdata(i2c_client); >   >         devm_free_irq(nau8821->dev, nau8821->irq, nau8821); > - > -       return 0; >  } >   >  static const struct i2c_device_id nau8821_i2c_ids[] = { > diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c > index 20e45a337b8f..bd34c84507da 100644 > --- a/sound/soc/codecs/nau8825.c > +++ b/sound/soc/codecs/nau8825.c > @@ -2669,10 +2669,8 @@ static int nau8825_i2c_probe(struct i2c_client > *i2c) >                 &nau8825_dai, 1); >  } >   > -static int nau8825_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void nau8825_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id nau8825_i2c_ids[] = { >         { "nau8825", 0 }, > diff --git a/sound/soc/codecs/pcm1789-i2c.c > b/sound/soc/codecs/pcm1789-i2c.c > index 1d2f7480a6e4..fafe0dcbe4ea 100644 > --- a/sound/soc/codecs/pcm1789-i2c.c > +++ b/sound/soc/codecs/pcm1789-i2c.c > @@ -27,11 +27,9 @@ static int pcm1789_i2c_probe(struct i2c_client > *client) >         return pcm1789_common_init(&client->dev, regmap); >  } >   > -static int pcm1789_i2c_remove(struct i2c_client *client) > +static void pcm1789_i2c_remove(struct i2c_client *client) >  { >         pcm1789_common_exit(&client->dev); > - > -       return 0; >  } >   >  #ifdef CONFIG_OF > diff --git a/sound/soc/codecs/pcm3168a-i2c.c > b/sound/soc/codecs/pcm3168a-i2c.c > index c0fa0dc80e8f..a0eec82e9872 100644 > --- a/sound/soc/codecs/pcm3168a-i2c.c > +++ b/sound/soc/codecs/pcm3168a-i2c.c > @@ -26,11 +26,9 @@ static int pcm3168a_i2c_probe(struct i2c_client > *i2c) >         return pcm3168a_probe(&i2c->dev, regmap); >  } >   > -static int pcm3168a_i2c_remove(struct i2c_client *i2c) > +static void pcm3168a_i2c_remove(struct i2c_client *i2c) >  { >         pcm3168a_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id pcm3168a_i2c_id[] = { > diff --git a/sound/soc/codecs/pcm512x-i2c.c > b/sound/soc/codecs/pcm512x-i2c.c > index 81754e141a55..9dfbbe8f4a0b 100644 > --- a/sound/soc/codecs/pcm512x-i2c.c > +++ b/sound/soc/codecs/pcm512x-i2c.c > @@ -29,10 +29,9 @@ static int pcm512x_i2c_probe(struct i2c_client > *i2c) >         return pcm512x_probe(&i2c->dev, regmap); >  } >   > -static int pcm512x_i2c_remove(struct i2c_client *i2c) > +static void pcm512x_i2c_remove(struct i2c_client *i2c) >  { >         pcm512x_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id pcm512x_i2c_id[] = { > diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c > index ab093bdb5552..cb2147f86818 100644 > --- a/sound/soc/codecs/rt274.c > +++ b/sound/soc/codecs/rt274.c > @@ -1207,14 +1207,12 @@ static int rt274_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt274_i2c_remove(struct i2c_client *i2c) > +static void rt274_i2c_remove(struct i2c_client *i2c) >  { >         struct rt274_priv *rt274 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt274); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c > index ad8ea1fa7c23..c66db0760a0f 100644 > --- a/sound/soc/codecs/rt286.c > +++ b/sound/soc/codecs/rt286.c > @@ -1254,14 +1254,12 @@ static int rt286_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt286_i2c_remove(struct i2c_client *i2c) > +static void rt286_i2c_remove(struct i2c_client *i2c) >  { >         struct rt286_priv *rt286 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt286); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c > index c291786dc82d..9f44eabfdbdb 100644 > --- a/sound/soc/codecs/rt298.c > +++ b/sound/soc/codecs/rt298.c > @@ -1297,14 +1297,12 @@ static int rt298_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt298_i2c_remove(struct i2c_client *i2c) > +static void rt298_i2c_remove(struct i2c_client *i2c) >  { >         struct rt298_priv *rt298 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, rt298); > - > -       return 0; >  } >   >   > diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c > index 37f1bf552eff..7a994abeedb0 100644 > --- a/sound/soc/codecs/rt5616.c > +++ b/sound/soc/codecs/rt5616.c > @@ -1389,10 +1389,8 @@ static int rt5616_i2c_probe(struct i2c_client > *i2c) >                                       rt5616_dai, > ARRAY_SIZE(rt5616_dai)); >  } >   > -static int rt5616_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void rt5616_i2c_remove(struct i2c_client *i2c) > +{} >   >  static void rt5616_i2c_shutdown(struct i2c_client *client) >  { > diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c > index c941e878471c..d82264edd25c 100644 > --- a/sound/soc/codecs/rt5631.c > +++ b/sound/soc/codecs/rt5631.c > @@ -1721,10 +1721,8 @@ static int rt5631_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5631_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void rt5631_i2c_remove(struct i2c_client *client) > +{} >   >  static struct i2c_driver rt5631_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c > index 507aba8de3cc..e77bdbc1a098 100644 > --- a/sound/soc/codecs/rt5645.c > +++ b/sound/soc/codecs/rt5645.c > @@ -4146,7 +4146,7 @@ static int rt5645_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5645_i2c_remove(struct i2c_client *i2c) > +static void rt5645_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5645_priv *rt5645 = i2c_get_clientdata(i2c); >   > @@ -4163,8 +4163,6 @@ static int rt5645_i2c_remove(struct i2c_client > *i2c) >         cancel_delayed_work_sync(&rt5645->rcclock_work); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5645->supplies), rt5645- > >supplies); > - > -       return 0; >  } >   >  static void rt5645_i2c_shutdown(struct i2c_client *i2c) > diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c > index e51eed8a79ab..15296e0fa545 100644 > --- a/sound/soc/codecs/rt5663.c > +++ b/sound/soc/codecs/rt5663.c > @@ -3711,7 +3711,7 @@ static int rt5663_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5663_i2c_remove(struct i2c_client *i2c) > +static void rt5663_i2c_remove(struct i2c_client *i2c) >  { >         struct rt5663_priv *rt5663 = i2c_get_clientdata(i2c); >   > @@ -3719,8 +3719,6 @@ static int rt5663_i2c_remove(struct i2c_client > *i2c) >                 free_irq(i2c->irq, rt5663); >   >         regulator_bulk_disable(ARRAY_SIZE(rt5663->supplies), rt5663- > >supplies); > - > -       return 0; >  } >   >  static void rt5663_i2c_shutdown(struct i2c_client *client) > diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c > index 8a97f6db04d5..eb73e262457c 100644 > --- a/sound/soc/codecs/rt5670.c > +++ b/sound/soc/codecs/rt5670.c > @@ -3321,11 +3321,9 @@ static int rt5670_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int rt5670_i2c_remove(struct i2c_client *i2c) > +static void rt5670_i2c_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); > - > -       return 0; >  } >   >  static struct i2c_driver rt5670_i2c_driver = { > diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c > index 4a8c267d4fbc..3161022f0757 100644 > --- a/sound/soc/codecs/rt5677.c > +++ b/sound/soc/codecs/rt5677.c > @@ -5694,11 +5694,9 @@ static int rt5677_i2c_probe(struct i2c_client > *i2c) >                                       rt5677_dai, > ARRAY_SIZE(rt5677_dai)); >  } >   > -static int rt5677_i2c_remove(struct i2c_client *i2c) > +static void rt5677_i2c_remove(struct i2c_client *i2c) >  { >         rt5677_free_gpio(i2c); > - > -       return 0; >  } >   >  static struct i2c_driver rt5677_i2c_driver = { > diff --git a/sound/soc/codecs/rt5682-i2c.c b/sound/soc/codecs/rt5682- > i2c.c > index 3f72f6093436..2935c1bb81f3 100644 > --- a/sound/soc/codecs/rt5682-i2c.c > +++ b/sound/soc/codecs/rt5682-i2c.c > @@ -302,11 +302,9 @@ static void rt5682_i2c_shutdown(struct > i2c_client *client) >         rt5682_reset(rt5682); >  } >   > -static int rt5682_i2c_remove(struct i2c_client *client) > +static void rt5682_i2c_remove(struct i2c_client *client) >  { >         rt5682_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682_of_match[] = { > diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c > index 4d44eddee901..a80c686613f4 100644 > --- a/sound/soc/codecs/rt5682s.c > +++ b/sound/soc/codecs/rt5682s.c > @@ -3195,11 +3195,9 @@ static void rt5682s_i2c_shutdown(struct > i2c_client *client) >         rt5682s_reset(rt5682s); >  } >   > -static int rt5682s_i2c_remove(struct i2c_client *client) > +static void rt5682s_i2c_remove(struct i2c_client *client) >  { >         rt5682s_i2c_shutdown(client); > - > -       return 0; >  } >   >  static const struct of_device_id rt5682s_of_match[] = { > diff --git a/sound/soc/codecs/rt9120.c b/sound/soc/codecs/rt9120.c > index da495bdc8415..644300e88b4c 100644 > --- a/sound/soc/codecs/rt9120.c > +++ b/sound/soc/codecs/rt9120.c > @@ -572,11 +572,10 @@ static int rt9120_probe(struct i2c_client *i2c) >                                                &rt9120_dai, 1); >  } >   > -static int rt9120_remove(struct i2c_client *i2c) > +static void rt9120_remove(struct i2c_client *i2c) >  { >         pm_runtime_disable(&i2c->dev); >         pm_runtime_set_suspended(&i2c->dev); > -       return 0; >  } >   >  static int __maybe_unused rt9120_runtime_suspend(struct device *dev) > diff --git a/sound/soc/codecs/sgtl5000.c > b/sound/soc/codecs/sgtl5000.c > index 2aa48aef6a97..f29bd50fe4cd 100644 > --- a/sound/soc/codecs/sgtl5000.c > +++ b/sound/soc/codecs/sgtl5000.c > @@ -1791,15 +1791,13 @@ static int sgtl5000_i2c_probe(struct > i2c_client *client) >         return ret; >  } >   > -static int sgtl5000_i2c_remove(struct i2c_client *client) > +static void sgtl5000_i2c_remove(struct i2c_client *client) >  { >         struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client); >   >         clk_disable_unprepare(sgtl5000->mclk); >         regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000- > >supplies); >         regulator_bulk_free(sgtl5000->num_supplies, sgtl5000- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id sgtl5000_id[] = { > diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c > index 9189fb3648f7..0676c822458f 100644 > --- a/sound/soc/codecs/sta350.c > +++ b/sound/soc/codecs/sta350.c > @@ -1243,10 +1243,8 @@ static int sta350_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int sta350_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void sta350_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id sta350_i2c_id[] = { >         { "sta350", 0 }, > diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c > index b5c9c61ff5a8..0259ae96d97e 100644 > --- a/sound/soc/codecs/tas2552.c > +++ b/sound/soc/codecs/tas2552.c > @@ -737,10 +737,9 @@ static int tas2552_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas2552_i2c_remove(struct i2c_client *client) > +static void tas2552_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  static const struct i2c_device_id tas2552_id[] = { > diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c > index 5c0df3cd4832..b0a73244ee31 100644 > --- a/sound/soc/codecs/tas5086.c > +++ b/sound/soc/codecs/tas5086.c > @@ -982,10 +982,8 @@ static int tas5086_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int tas5086_i2c_remove(struct i2c_client *i2c) > -{ > -       return 0; > -} > +static void tas5086_i2c_remove(struct i2c_client *i2c) > +{} >   >  static struct i2c_driver tas5086_i2c_driver = { >         .driver = { > diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c > index 7b599664db20..1a060e85621f 100644 > --- a/sound/soc/codecs/tas571x.c > +++ b/sound/soc/codecs/tas571x.c > @@ -885,13 +885,11 @@ static int tas571x_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas571x_i2c_remove(struct i2c_client *client) > +static void tas571x_i2c_remove(struct i2c_client *client) >  { >         struct tas571x_private *priv = i2c_get_clientdata(client); >   >         regulator_bulk_disable(priv->chip->num_supply_names, priv- > >supplies); > - > -       return 0; >  } >   >  static const struct of_device_id tas571x_of_match[] __maybe_unused = > { > diff --git a/sound/soc/codecs/tas5805m.c > b/sound/soc/codecs/tas5805m.c > index fa0e81ec875a..4782d9c47992 100644 > --- a/sound/soc/codecs/tas5805m.c > +++ b/sound/soc/codecs/tas5805m.c > @@ -523,7 +523,7 @@ static int tas5805m_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int tas5805m_i2c_remove(struct i2c_client *i2c) > +static void tas5805m_i2c_remove(struct i2c_client *i2c) >  { >         struct device *dev = &i2c->dev; >         struct tas5805m_priv *tas5805m = dev_get_drvdata(dev); > @@ -532,7 +532,6 @@ static int tas5805m_i2c_remove(struct i2c_client > *i2c) >         gpiod_set_value(tas5805m->gpio_pdn_n, 0); >         usleep_range(10000, 15000); >         regulator_disable(tas5805m->pvdd); > -       return 0; >  } >   >  static const struct i2c_device_id tas5805m_i2c_id[] = { > diff --git a/sound/soc/codecs/tas6424.c b/sound/soc/codecs/tas6424.c > index 22b53856e691..fd1f37d48982 100644 > --- a/sound/soc/codecs/tas6424.c > +++ b/sound/soc/codecs/tas6424.c > @@ -775,7 +775,7 @@ static int tas6424_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int tas6424_i2c_remove(struct i2c_client *client) > +static void tas6424_i2c_remove(struct i2c_client *client) >  { >         struct device *dev = &client->dev; >         struct tas6424_data *tas6424 = dev_get_drvdata(dev); > @@ -791,8 +791,6 @@ static int tas6424_i2c_remove(struct i2c_client > *client) >                                      tas6424->supplies); >         if (ret < 0) >                 dev_err(dev, "unable to disable supplies: %d\n", > ret); > - > -       return 0; >  } >   >  static const struct i2c_device_id tas6424_i2c_ids[] = { > diff --git a/sound/soc/codecs/tlv320adc3xxx.c > b/sound/soc/codecs/tlv320adc3xxx.c > index 82532ad00c3c..82d78e7c610e 100644 > --- a/sound/soc/codecs/tlv320adc3xxx.c > +++ b/sound/soc/codecs/tlv320adc3xxx.c > @@ -1427,7 +1427,7 @@ static int adc3xxx_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int __exit adc3xxx_i2c_remove(struct i2c_client *client) > +static void __exit adc3xxx_i2c_remove(struct i2c_client *client) >  { >         struct adc3xxx *adc3xxx = i2c_get_clientdata(client); >   > @@ -1435,7 +1435,6 @@ static int __exit adc3xxx_i2c_remove(struct > i2c_client *client) >                 clk_disable_unprepare(adc3xxx->mclk); >         adc3xxx_free_gpio(adc3xxx); >         snd_soc_unregister_component(&client->dev); > -       return 0; >  } >   >  static const struct of_device_id tlv320adc3xxx_of_match[] = { > diff --git a/sound/soc/codecs/tlv320aic32x4-i2c.c > b/sound/soc/codecs/tlv320aic32x4-i2c.c > index 0645239901b1..d1e543ca3521 100644 > --- a/sound/soc/codecs/tlv320aic32x4-i2c.c > +++ b/sound/soc/codecs/tlv320aic32x4-i2c.c > @@ -45,11 +45,9 @@ static int aic32x4_i2c_probe(struct i2c_client > *i2c) >         return aic32x4_probe(&i2c->dev, regmap); >  } >   > -static int aic32x4_i2c_remove(struct i2c_client *i2c) > +static void aic32x4_i2c_remove(struct i2c_client *i2c) >  { >         aic32x4_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct i2c_device_id aic32x4_i2c_id[] = { > diff --git a/sound/soc/codecs/tlv320aic3x-i2c.c > b/sound/soc/codecs/tlv320aic3x-i2c.c > index 7bd9ce08bb7b..d7e94d564dbf 100644 > --- a/sound/soc/codecs/tlv320aic3x-i2c.c > +++ b/sound/soc/codecs/tlv320aic3x-i2c.c > @@ -41,11 +41,9 @@ static int aic3x_i2c_probe(struct i2c_client *i2c) >         return aic3x_probe(&i2c->dev, regmap, id->driver_data); >  } >   > -static int aic3x_i2c_remove(struct i2c_client *i2c) > +static void aic3x_i2c_remove(struct i2c_client *i2c) >  { >         aic3x_remove(&i2c->dev); > - > -       return 0; >  } >   >  static const struct of_device_id aic3x_of_id[] = { > diff --git a/sound/soc/codecs/tlv320dac33.c > b/sound/soc/codecs/tlv320dac33.c > index 66f1d1cd6cf0..8a86bfe8266c 100644 > --- a/sound/soc/codecs/tlv320dac33.c > +++ b/sound/soc/codecs/tlv320dac33.c > @@ -1539,7 +1539,7 @@ static int dac33_i2c_probe(struct i2c_client > *client) >         return ret; >  } >   > -static int dac33_i2c_remove(struct i2c_client *client) > +static void dac33_i2c_remove(struct i2c_client *client) >  { >         struct tlv320dac33_priv *dac33 = i2c_get_clientdata(client); >   > @@ -1548,8 +1548,6 @@ static int dac33_i2c_remove(struct i2c_client > *client) >   >         if (dac33->power_gpio >= 0) >                 gpio_free(dac33->power_gpio); > - > -       return 0; >  } >   >  static const struct i2c_device_id tlv320dac33_i2c_id[] = { > diff --git a/sound/soc/codecs/wm1250-ev1.c b/sound/soc/codecs/wm1250- > ev1.c > index b6366dea15a6..49dbd19d26cc 100644 > --- a/sound/soc/codecs/wm1250-ev1.c > +++ b/sound/soc/codecs/wm1250-ev1.c > @@ -229,11 +229,9 @@ static int wm1250_ev1_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm1250_ev1_remove(struct i2c_client *i2c) > +static void wm1250_ev1_remove(struct i2c_client *i2c) >  { >         wm1250_ev1_free(i2c); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm1250_ev1_i2c_id[] = { > diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c > index 1cd544580c83..8557c33eeee7 100644 > --- a/sound/soc/codecs/wm2200.c > +++ b/sound/soc/codecs/wm2200.c > @@ -2415,7 +2415,7 @@ static int wm2200_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm2200_i2c_remove(struct i2c_client *i2c) > +static void wm2200_i2c_remove(struct i2c_client *i2c) >  { >         struct wm2200_priv *wm2200 = i2c_get_clientdata(i2c); >   > @@ -2428,8 +2428,6 @@ static int wm2200_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm2200->pdata.ldo_ena, 0); >         regulator_bulk_disable(ARRAY_SIZE(wm2200->core_supplies), >                                wm2200->core_supplies); > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c > index a89870918174..211ef8190c61 100644 > --- a/sound/soc/codecs/wm5100.c > +++ b/sound/soc/codecs/wm5100.c > @@ -2636,7 +2636,7 @@ static int wm5100_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm5100_i2c_remove(struct i2c_client *i2c) > +static void wm5100_i2c_remove(struct i2c_client *i2c) >  { >         struct wm5100_priv *wm5100 = i2c_get_clientdata(i2c); >   > @@ -2652,8 +2652,6 @@ static int wm5100_i2c_remove(struct i2c_client > *i2c) >                 gpio_set_value_cansleep(wm5100->pdata.ldo_ena, 0); >                 gpio_free(wm5100->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8804-i2c.c b/sound/soc/codecs/wm8804- > i2c.c > index 04dc9fb5afb4..3ce1a39d76eb 100644 > --- a/sound/soc/codecs/wm8804-i2c.c > +++ b/sound/soc/codecs/wm8804-i2c.c > @@ -25,10 +25,9 @@ static int wm8804_i2c_probe(struct i2c_client > *i2c) >         return wm8804_probe(&i2c->dev, regmap); >  } >   > -static int wm8804_i2c_remove(struct i2c_client *i2c) > +static void wm8804_i2c_remove(struct i2c_client *i2c) >  { >         wm8804_remove(&i2c->dev); > -       return 0; >  } >   >  static const struct i2c_device_id wm8804_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c > index 84a3daf0c11e..28e296f2f969 100644 > --- a/sound/soc/codecs/wm8900.c > +++ b/sound/soc/codecs/wm8900.c > @@ -1283,10 +1283,8 @@ static int wm8900_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8900_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8900_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8900_i2c_id[] = { >         { "wm8900", 0 }, > diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c > index 3c95c2aea515..967be629b846 100644 > --- a/sound/soc/codecs/wm8903.c > +++ b/sound/soc/codecs/wm8903.c > @@ -2183,7 +2183,7 @@ static int wm8903_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8903_i2c_remove(struct i2c_client *client) > +static void wm8903_i2c_remove(struct i2c_client *client) >  { >         struct wm8903_priv *wm8903 = i2c_get_clientdata(client); >   > @@ -2192,8 +2192,6 @@ static int wm8903_i2c_remove(struct i2c_client > *client) >         if (client->irq) >                 free_irq(client->irq, wm8903); >         wm8903_free_gpio(wm8903); > - > -       return 0; >  } >   >  static const struct of_device_id wm8903_of_match[] = { > diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c > index 8c8f32b23083..3c4cd47f5ad9 100644 > --- a/sound/soc/codecs/wm8960.c > +++ b/sound/soc/codecs/wm8960.c > @@ -1487,10 +1487,8 @@ static int wm8960_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8960_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm8960_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm8960_i2c_id[] = { >         { "wm8960", 0 }, > diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c > index 5cca89364280..85089304f5e7 100644 > --- a/sound/soc/codecs/wm8962.c > +++ b/sound/soc/codecs/wm8962.c > @@ -3779,10 +3779,9 @@ static int wm8962_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8962_i2c_remove(struct i2c_client *client) > +static void wm8962_i2c_remove(struct i2c_client *client) >  { >         pm_runtime_disable(&client->dev); > -       return 0; >  } >   >  #ifdef CONFIG_PM > diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c > index f4da77ec9d6c..fe1c5aab0ab6 100644 > --- a/sound/soc/codecs/wm8993.c > +++ b/sound/soc/codecs/wm8993.c > @@ -1723,15 +1723,13 @@ static int wm8993_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8993_i2c_remove(struct i2c_client *i2c) > +static void wm8993_i2c_remove(struct i2c_client *i2c) >  { >         struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); >   >         if (i2c->irq) >                 free_irq(i2c->irq, wm8993); >         regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993- > >supplies); > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8993_i2c_id[] = { > diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c > index f7bb27d1c76d..5f2b3af47c12 100644 > --- a/sound/soc/codecs/wm8996.c > +++ b/sound/soc/codecs/wm8996.c > @@ -3067,7 +3067,7 @@ static int wm8996_i2c_probe(struct i2c_client > *i2c) >         return ret; >  } >   > -static int wm8996_i2c_remove(struct i2c_client *client) > +static void wm8996_i2c_remove(struct i2c_client *client) >  { >         struct wm8996_priv *wm8996 = i2c_get_clientdata(client); >   > @@ -3076,8 +3076,6 @@ static int wm8996_i2c_remove(struct i2c_client > *client) >                 gpio_set_value_cansleep(wm8996->pdata.ldo_ena, 0); >                 gpio_free(wm8996->pdata.ldo_ena); >         } > - > -       return 0; >  } >   >  static const struct i2c_device_id wm8996_i2c_id[] = { > diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c > index 87b58448cea7..6184d8c06564 100644 > --- a/sound/soc/codecs/wm9081.c > +++ b/sound/soc/codecs/wm9081.c > @@ -1357,10 +1357,8 @@ static int wm9081_i2c_probe(struct i2c_client > *i2c) >         return 0; >  } >   > -static int wm9081_i2c_remove(struct i2c_client *client) > -{ > -       return 0; > -} > +static void wm9081_i2c_remove(struct i2c_client *client) > +{} >   >  static const struct i2c_device_id wm9081_i2c_id[] = { >         { "wm9081", 0 },