CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: "Michał Kępień" <[email protected]>
TO: Miquel Raynal <[email protected]>
TO: Richard Weinberger <[email protected]>
TO: Vignesh Raghavendra <[email protected]>
CC: Boris Brezillon <[email protected]>
CC: [email protected]
CC: [email protected]

Hi "Michał,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mtd/mtd/next]
[also build test WARNING on mtd/mtd/fixes v5.16-rc8]
[cannot apply to mtd/nand/next next-20211224]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Micha-K-pie/mtdchar-add-MEMREAD-ioctl/20211216-163537
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: x86_64-randconfig-c007-20211227 
(https://download.01.org/0day-ci/archive/20220103/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
511726c64d3b6cca66f7c54d457d586aa3129f67)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://github.com/0day-ci/linux/commit/f409cccc4e5bfd85e277267870c49d05ba50e4a5
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Micha-K-pie/mtdchar-add-MEMREAD-ioctl/20211216-163537
        git checkout f409cccc4e5bfd85e277267870c49d05ba50e4a5
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                                         ^
   drivers/hwmon/adc128d818.c:217:11: note: '?' condition is false
           regval = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127);
                    ^
   include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
   #define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
                                  ^
   include/linux/minmax.h:124:48: note: expanded from macro 'clamp_t'
   #define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
                                                  ^
   include/linux/minmax.h:112:27: note: expanded from macro 'max_t'
   #define max_t(type, x, y)       __careful_cmp((type)(x), (type)(y), >)
                                   ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   drivers/hwmon/adc128d818.c:217:11: note: '__UNIQUE_ID___x601' is < 
'__UNIQUE_ID___y602'
           regval = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127);
                    ^
   include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
   #define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
   #define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~
   drivers/hwmon/adc128d818.c:217:11: note: '?' condition is true
           regval = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127);
                    ^
   include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
   #define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
                                  ^
   include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
   #define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
                                      ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   drivers/hwmon/adc128d818.c:217:2: note: The value -128 is assigned to 
'regval'
           regval = clamp_val(DIV_ROUND_CLOSEST(val, 1000), -128, 127);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/adc128d818.c:218:29: note: The result of the left shift is 
undefined because the left operand is negative
           data->temp[index] = regval << 1;
                               ~~~~~~ ^
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/mtd/devices/phram.c:231:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(str, val);
           ^~~~~~
   drivers/mtd/devices/phram.c:231:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(str, val);
           ^~~~~~
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   drivers/mtd/devices/block2mtd.c:402:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(str, val);
           ^~~~~~
   drivers/mtd/devices/block2mtd.c:402:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(str, val);
           ^~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
>> drivers/mtd/nand/onenand/onenand_base.c:3083:8: warning: Assigned value is 
>> garbage or undefined [clang-analyzer-core.uninitialized.Assign]
                           buf += tmp_retlen;
                               ^
   drivers/mtd/nand/onenand/onenand_base.c:3156:9: note: Calling 
'onenand_otp_walk'
           return onenand_otp_walk(mtd, from, len, retlen, buf, do_otp_read, 
MTD_OTP_USER);
                  
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3038:6: note: Assuming 'density' is 
>= ONENAND_DEVICE_DENSITY_512Mb
           if (density < ONENAND_DEVICE_DENSITY_512Mb)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3038:2: note: Taking false branch
           if (density < ONENAND_DEVICE_DENSITY_512Mb)
           ^
   drivers/mtd/nand/onenand/onenand_base.c:3043:6: note: 'mode' is not equal to 
MTD_OTP_FACTORY
           if (mode == MTD_OTP_FACTORY) {
               ^~~~
   drivers/mtd/nand/onenand/onenand_base.c:3043:2: note: Taking false branch
           if (mode == MTD_OTP_FACTORY) {
           ^
   drivers/mtd/nand/onenand/onenand_base.c:3049:6: note: 'mode' is equal to 
MTD_OTP_USER
           if (mode == MTD_OTP_USER) {
               ^~~~
   drivers/mtd/nand/onenand/onenand_base.c:3049:2: note: Taking true branch
           if (mode == MTD_OTP_USER) {
           ^
   drivers/mtd/nand/onenand/onenand_base.c:3050:7: note: Assuming the condition 
is false
                   if (mtd->writesize * otp_pages < from + len)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3050:3: note: Taking false branch
                   if (mtd->writesize * otp_pages < from + len)
                   ^
   drivers/mtd/nand/onenand/onenand_base.c:3058:9: note: Assuming 'len' is > 0
           while (len > 0 && otp_pages > 0) {
                  ^~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3058:9: note: Left side of '&&' is 
true
   drivers/mtd/nand/onenand/onenand_base.c:3058:2: note: Loop condition is 
true.  Entering loop body
           while (len > 0 && otp_pages > 0) {
           ^
   drivers/mtd/nand/onenand/onenand_base.c:3059:8: note: 'action' is non-null
                   if (!action) {  /* OTP Info functions */
                        ^~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3059:3: note: Taking false branch
                   if (!action) {  /* OTP Info functions */
                   ^
   drivers/mtd/nand/onenand/onenand_base.c:3077:4: note: 'tmp_retlen' declared 
without an initial value
                           size_t tmp_retlen;
                           ^~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:3079:10: note: Calling 'do_otp_read'
                           ret = action(mtd, from, len, &tmp_retlen, buf);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:2911:28: note: Assuming the 
condition is true
           ret = ONENAND_IS_4KB_PAGE(this) ?
                                     ^
   include/linux/mtd/onenand.h:206:3: note: expanded from macro 
'ONENAND_IS_4KB_PAGE'
           (this->options & ONENAND_HAS_4KB_PAGE)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:2911:8: note: '?' condition is true
           ret = ONENAND_IS_4KB_PAGE(this) ?
                 ^
   include/linux/mtd/onenand.h:206:2: note: expanded from macro 
'ONENAND_IS_4KB_PAGE'
           (this->options & ONENAND_HAS_4KB_PAGE)
           ^
   drivers/mtd/nand/onenand/onenand_base.c:2912:3: note: Calling 
'onenand_mlc_read_ops_nolock'
                   onenand_mlc_read_ops_nolock(mtd, from, &ops) :
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:1128:2: note: Taking false branch
           pr_debug("%s: from = 0x%08x, len = %i\n", __func__, (unsigned 
int)from,
           ^
   include/linux/printk.h:576:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/mtd/nand/onenand/onenand_base.c:1135:6: note: Assuming the condition 
is false
           if (from + len > mtd->size) {
               ^~~~~~~~~~~~~~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:1135:2: note: Taking false branch
           if (from + len > mtd->size) {
           ^
   drivers/mtd/nand/onenand/onenand_base.c:1145:9: note: 'read' is < 'len'
           while (read < len) {
                  ^~~~
   drivers/mtd/nand/onenand/onenand_base.c:1145:2: note: Loop condition is 
true.  Entering loop body
           while (read < len) {
           ^
   drivers/mtd/nand/onenand/onenand_base.c:1148:13: note: Assuming 
'__UNIQUE_ID___x410' is >= '__UNIQUE_ID___y411'
                   thislen = min_t(int, writesize, len - read);
                             ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   drivers/mtd/nand/onenand/onenand_base.c:1148:13: note: '?' condition is false

vim +3083 drivers/mtd/nand/onenand/onenand_base.c

493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3013  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3014  /**
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3015   * onenand_otp_walk - [DEFAULT] Handle OTP operation
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3016   * @mtd:              MTD device structure
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3017   * @from:             The offset to read/write
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3018   * @len:              number of bytes to read/write
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3019   * @retlen:   pointer to variable to store the number of read 
bytes
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3020   * @buf:              the databuffer to put/get data
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3021   * @action:   do given action
720ae74ddf0aa4 drivers/mtd/nand/onenand/onenand_base.c Lee Jones        
2020-11-09  3022   * @mode:             specify user and factory
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3023   *
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3024   * Handle OTP operation.
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3025   */
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3026  static int onenand_otp_walk(struct mtd_info *mtd, loff_t 
from, size_t len,
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3027                        size_t *retlen, u_char *buf,
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3028                        otp_op_t action, int mode)
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3029  {
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3030        struct onenand_chip *this = mtd->priv;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3031        int otp_pages;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3032        int density;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3033        int ret = 0;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3034  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3035        *retlen = 0;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3036  
e71f04fc9234b1 drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2007-12-11  3037        density = onenand_get_density(this->device_id);
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3038        if (density < ONENAND_DEVICE_DENSITY_512Mb)
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3039                otp_pages = 20;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3040        else
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3041                otp_pages = 50;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3042  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3043        if (mode == MTD_OTP_FACTORY) {
28318776a80bc3 drivers/mtd/onenand/onenand_base.c      Joern Engel      
2006-05-22  3044                from += mtd->writesize * otp_pages;
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3045                otp_pages = ONENAND_PAGES_PER_BLOCK - otp_pages;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3046        }
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3047  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3048        /* Check User/Factory boundary */
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3049        if (mode == MTD_OTP_USER) {
0a032a4df6dc4a drivers/mtd/onenand/onenand_base.c      Roel Kluin       
2009-12-16  3050                if (mtd->writesize * otp_pages < from + len)
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3051                        return 0;
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3052        } else {
0a032a4df6dc4a drivers/mtd/onenand/onenand_base.c      Roel Kluin       
2009-12-16  3053                if (mtd->writesize * otp_pages <  len)
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3054                        return 0;
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3055        }
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3056  
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3057        onenand_get_device(mtd, FL_OTPING);
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3058        while (len > 0 && otp_pages > 0) {
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3059                if (!action) {  /* OTP Info functions */
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3060                        struct otp_info *otpinfo;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3061  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3062                        len -= sizeof(struct otp_info);
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3063                        if (len <= 0) {
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3064                                ret = -ENOSPC;
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3065                                break;
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3066                        }
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3067  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3068                        otpinfo = (struct otp_info *) buf;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3069                        otpinfo->start = from;
28318776a80bc3 drivers/mtd/onenand/onenand_base.c      Joern Engel      
2006-05-22  3070                        otpinfo->length = mtd->writesize;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3071                        otpinfo->locked = 0;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3072  
28318776a80bc3 drivers/mtd/onenand/onenand_base.c      Joern Engel      
2006-05-22  3073                        from += mtd->writesize;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3074                        buf += sizeof(struct otp_info);
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3075                        *retlen += sizeof(struct otp_info);
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3076                } else {
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3077                        size_t tmp_retlen;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3078  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3079                        ret = action(mtd, from, len, 
&tmp_retlen, buf);
c3cb77f8980db9 drivers/mtd/onenand/onenand_base.c      Dan Carpenter    
2016-04-13  3080                        if (ret)
c3cb77f8980db9 drivers/mtd/onenand/onenand_base.c      Dan Carpenter    
2016-04-13  3081                                break;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3082  
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21 @3083                        buf += tmp_retlen;
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3084                        len -= tmp_retlen;
3cf602532c535e drivers/mtd/onenand/onenand_base.c      Amul Kumar Saha  
2009-10-21  3085                        *retlen += tmp_retlen;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3086  
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3087                }
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3088                otp_pages--;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3089        }
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3090        onenand_release_device(mtd);
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3091  
49dc08eeda707f drivers/mtd/onenand/onenand_base.c      Artem Bityutskiy 
2007-09-21  3092        return ret;
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3093  }
493c646077ef0b drivers/mtd/onenand/onenand_base.c      Kyungmin Park    
2006-05-12  3094  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to